这是我写的第一篇博客,话不多说这个是基于Arduino的火焰报警器,能实现感应到火焰就进行声音播放及亮灯。
工具准备
- uno开发板
- 与uno配套USB数据线
- 无源蜂鸣器
- RGB灯
- 火焰传感器
- 电阻
工具介绍
- 火焰传感器
- 无源蜂鸣器
本实验使用的是无源蜂鸣器 低电平触发 型号为MH-FMD 3公
过程
话不多说,直接上代码。
#define M3 658
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
int tune[]= //根据简谱列出各频率
{
M3,M3,M3,
};
float durt[]= //根据简谱列出各节拍
{
1,1,1,
};
int length;
int tonepin=8; //得用8号接口
//int buzzer = 8;
int LED = 7; //LED灯接口
int flame_sensor = 4; //火焰传感器数据输入接口
int flame_detected;
void setup()
{
Serial.begin(9600);
pinMode(tonepin, OUTPUT);
pinMode(LED, OUTPUT);
pinMode(flame_sensor, INPUT);
length=sizeof(tune)/sizeof(tune[0]); //计算长度
}
void loop()
{
flame_detected = digitalRead(flame_sensor);
if (flame_detected == 0)
{
Serial.println("Flame detected...! take action immediately.");
// digitalWrite(buzzer, LOW);
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
for(int x=0;x<length;x++)
{
tone(tonepin,tune[x]);
delay(500*durt[x]); //这里用来根据节拍调节延时,500这个指数可以自己调整,在该音乐中,我发现用500比较合适。
noTone(tonepin);
}
delay(100);
}
else
{
Serial.println("No flame detected. stay cool");
digitalWrite(tonepin, HIGH);
digitalWrite(LED, LOW);
}
delay(1000);
}
实验图如下
实验原理图如下
总结
一开始的时候我连插线也不会插,经过老师教导之后起码了解了一些基本的原理,竟然也对嵌入式开发产生了点兴趣,就好像C语言一样,都是套路的操作,刚做实验的时候有点怀疑人生,因为做出来的时候读出的数据一直都显示是一直在报警,但是我都没有火焰,随后经老师的帮助,发现了不一样的东西,例如火焰传感器和红外传感器用的接口也是差不多,进行了替换之后也可以实现红外报警,但是代码是没有改变的,觉得神奇。