7348| 5
|
[项目] 做个简单便携的煤气报警器 |
有时候做饭完会忘记关闭煤气阀门,搞不好又是一起严重的火灾。。感谢上天啊! 就是这样我就想的是能不能做一个简易的液化气报警装置呢?想着我就动手做了! 从家里的百宝箱里找到一个Attiny85, 一个液化气体传感器 MQ-2模块和一个蜂鸣器。就开始了。 下面是连线图 attiny85 2N2700一个是用来给蜂鸣器声音放大的 1000uF电容一个,为一分钟校准存电 LED一个 220电阻一个 工作原理 MQ-2传感器有一个小的燃烧器,需要在加热之前加热。 这样读数变得准确。为此我们用了烟雾报警器 校准模式,当校准发生时,传感器 读数慢慢下降,直到一分钟后停止并达到一个精确的值。 Arduino代码设置了等待,直到这些值正常化。 开LED,让用户知道校准校准变化。当 LED是关闭的,传感器被触发,并完全校准。 [mw_shl_code=applescript,true]//made by gada888 #define led 0 #define buzzer 1 #define sensor 2 int treshold = 0; int alarmLength = 40; void setup() { pinMode(led, OUTPUT); pinMode(buzzer, OUTPUT); pinMode(sensor, INPUT); while(isCalibrating()){ digitalWrite(led, HIGH); } treshold = analogRead(sensor) + 10; } bool isCalibrating(){ int sample1 = analogRead(sensor); delay(5000); int sample2 = analogRead(sensor); if(sample1 < sample2){ return true; } else if(abs(sample1 - sample2) <= 2) { return false; } } void loop() { if(analogRead(sensor) > treshold){ while(alarmLength >= 0){ alarmLength--; alarmOn(100); } alarmLength = 40; } else { alarmOff(); } } void alarmOn(int delayMs){ digitalWrite(led, HIGH); analogWrite(buzzer, 100); delay(delayMs); digitalWrite(led, LOW); analogWrite(buzzer, 0); delay(delayMs); } void alarmOff(){ digitalWrite(led, LOW); analogWrite(buzzer, 0); }[/mw_shl_code] |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed