接线部分

VCC接正极,GND接负极,在蜂鸣器中I/O口接任意引脚都可以(我接的B15),在光敏传感器中DO为数字信号输出接任意引脚,AO模拟信号输出不接

 蜂鸣器底层

void Buzzer_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//开启GPIOB时钟
	GPIO_InitTypeDef GPIO_InitStructure;//宏定义结构体变量
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//设置为推挽输出模式
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15;//设置GPIO的第15号引脚
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//GPIO的速度为50MHZ
	GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void Buzzer_On(void)
{
	GPIO_ResetBits(GPIOB,GPIO_Pin_15);//将15号引脚设置为低电平
}
void Buzzer_Off(void)
{
	GPIO_SetBits(GPIOB,GPIO_Pin_15);//将15号引脚设置为高电平
}

 光敏模块底层

void Light_Init(void)
{
	//光敏模块,遮光时灯灭,输出高电平;不遮光时灯亮,为低电平
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//配置时钟
	GPIO_InitTypeDef GPIO_InitStructure;//定义结构体
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//上拉输入模式,默认为高电平
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;//设置GPIO的0号引脚
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//速度配置为50MHZ
	GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化
}
uint8_t Light_Read(void)//光敏模块读取函数
{
	return GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);//返回光敏模块读取的数
}

主函数

int main(void)
{
	Buzzer_Init();//LED初始化函数
	Light_Init();//光敏模块初始化函数
	while(1)
	{
		if(Light_Read()==1)//遮光时
		{
			Buzzer_On();//蜂鸣器亮
		}
		else//不遮光
		{
			Buzzer_Off();//蜂鸣器灭
		}
	}	
}

实现遮光时蜂鸣器发出声音

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐