火焰传感器的介绍
1.工作电压:DC 3.3V-5V
2.灵敏度可调(可调电位器)
3.工作温度:-10℃—+50℃
4.设有固定螺铨孔,方便安装
5.探测角度 60 度左右,对火焰光谱特别灵敏
6.输出形式数字开关量输出(0 和 1) 检测到火焰或光源引脚输出1,否则输出0
本例程是使用的是普通的火焰传感器。当检测到火焰的时候,火焰传感器的IO口输出一个高电平,通过检测PF5口的电平判断是否检测到的火焰,检测到火焰之后,PF9亮,蜂鸣器响。
硬件介绍
探索者STM32F407+蜂鸣器+LED蜂鸣器。VCC和GND分别接在开发板的电源和地上。传感器的输出口D0接到PF5。这里配置蜂鸣器为PF8,LED灯为PF9。
软件代码
#include "led.h"
//
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK STM32F407开发板
//LED驱动代码
//正点原子@ALIENTEK
//初始化PF9和PF10为输出口.并使能这两个口的时钟
//LED IO初始化
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF时钟
//GPIOF9,F10初始化设置
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//LED0和LED1对应IO口
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIO
GPIO_SetBits(GPIOF,GPIO_Pin_9 | GPIO_Pin_10);//GPIOF9,F10设置高,灯灭
}
void FIRE_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF时钟
//GPIOF9,F10初始化设置
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//LED0和LED1对应IO口
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//输入模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
GPIO_Init(GPIOF, &GPIO_InitStructure);
GPIO_SetBits(GPIOF,GPIO_Pin_5);
}
void BEEP_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF时钟
//初始化蜂鸣器对应引脚GPIOF8
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//下拉
GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIO
GPIO_ResetBits(GPIOF,GPIO_Pin_8); //蜂鸣器对应引脚GPIOF8拉低,
}
初始化代码
在main函数中添加代码如下所示。
int main(void)
{
LED_Init(); //初始化LED端口
FIRE_Init(); //初始化火焰传感器端口
BEEP_Init(); //初始化蜂鸣器端口
/**下面是通过直接操作库函数的方式实现IO控制**/
while(1)
{
if(GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_5)==1)
{
GPIO_ResetBits(GPIOF,GPIO_Pin_8);
GPIO_SetBits(GPIOF,GPIO_Pin_9);
}
else
{
GPIO_SetBits(GPIOF,GPIO_Pin_8);
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
}
}
}
测试现象
现象如图所示,打火机打开时候,LED等亮,蜂鸣器响。
没有检测到火焰的时候,传感器的灯不亮,并且PF9的LED灯不亮。
版权声明:本文为CSDN博主「梅山剑客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_46152793/article/details/118313463
暂无评论