5.4.16 プロジェクト 8.2 有害ガスアラーム

1. 説明

ガスセンサが高濃度の有害ガスを検知すると、ブザーが警報を鳴らし、ディスプレイに「dangerous」と表示されます。

2. コンポーネントの知識

MQ2 Smoke Sensor: これは家庭や工場向けのガス漏れ監視装置で、液化ガス、ベンゼン、アルキル、アルコール、水素および煙の検出に適しています。私たちのセンサはデジタルピンDとアナログ出力ピンAを引き出しており、このプロジェクトではデジタルセンサとしてDに接続しています。

画像51

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」と表示されます。