5.4.16 プロジェクト 8.2 有害ガスアラーム
1. 説明
ガスセンサが高濃度の有害ガスを検知すると、ブザーが警報を鳴らし、ディスプレイに「dangerous」と表示されます。
2. コンポーネントの知識
MQ2 Smoke Sensor: これは家庭や工場向けのガス漏れ監視装置で、液化ガス、ベンゼン、アルキル、アルコール、水素および煙の検出に適しています。私たちのセンサはデジタルピンDとアナログ出力ピンAを引き出しており、このプロジェクトではデジタルセンサとしてDに接続しています。

3. テストコード
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Initialize LCD with I2C address 0x27, 16 columns and 2 rows
LiquidCrystal_I2C mylcd(0x27, 16, 2);
#define gasPin 23 // Gas sensor input pin
#define buzPin 25 // Buzzer output pin
// State flags for LCD display updates
boolean dangerDisplayed = 1;
boolean safetyDisplayed = 1;
void setup() {
Serial.begin(9600);
// Initialize LCD
mylcd.init();
mylcd.backlight();
// Set pin modes
pinMode(buzPin, OUTPUT);
pinMode(gasPin, INPUT);
// Display initial message
mylcd.setCursor(0, 0);
mylcd.print("safety");
}
void loop() {
boolean gasVal = digitalRead(gasPin); // Read gas sensor value
Serial.println(gasVal);
if(gasVal == 0) // If dangerous gas detected
{
while(dangerDisplayed == 1) // Update display if needed
{
mylcd.clear();
mylcd.setCursor(0, 0);
mylcd.print("dangerous");
dangerDisplayed = 0;
safetyDisplayed = 1;
}
// Sound alarm buzzer (short pulses)
digitalWrite(buzPin, HIGH);
delay(1);
digitalWrite(buzPin, LOW);
delay(1);
}
else // No dangerous gas detected
{
digitalWrite(buzPin, LOW); // Ensure buzzer is off
while(safetyDisplayed == 1) // Update display if needed
{
mylcd.clear();
mylcd.setCursor(0, 0);
mylcd.print("safety");
dangerDisplayed = 1;
safetyDisplayed = 0;
}
}
}
4. テスト結果
通常時は画面に「safety」と表示されます。しかし、ガスセンサが一酸化炭素などの有害ガスを一定濃度検知すると、ブザーが警報を鳴らし、画面に「dangerous」と表示されます。