// Program alarm peringatan ketika konsentrasi zat pada gas melebihi suatu batas
/* Untuk diimplementasikan sebagai prototipe peringatan
kebakaran
*/
void setup() {
// Set pin tiap komponen
Serial.begin(9600);
pinMode(A0, INPUT);
pinMode(2, INPUT);
pinMode(13, OUTPUT);
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
}
void loop() {
// Membaca nilai analog dan digital sensor MQ2
int analogValue = analogRead(A0);
int digitalValue = digitalRead(2);
float Ro = 5.0; // 5.0 diambil dari beberapa referensi program serupa yang telah melakukan kalibrasi sensor
float voltage = analogValue * (5.0 / 1023.0);
float Rs = (5.0 - voltage) / voltage; // Rs = (Vc - Vout) / Vout
float ratio = Rs / Ro;
// Contoh konversi ke PPM untuk gas hasil pembakaran
float ppm = 300 * pow(ratio, -2.2); // Rumus empiris dari datasheet MQ2 dan referensi serupa
// Jika nilai ppm lebih dari n
if(ppm >= 1499){
// LED nyala mati secara berulang
digitalWrite(13, HIGH);
tone(4, 262, 250);
// delay(5);
digitalWrite(13, LOW);
// tone(4, 300, 250);
// Buzzer berbunyi dengan intensitas 262 Hz untuk 1 sekon
digitalWrite(2, HIGH);
}
// jika nilai analog tidak lebih dari n
else{
digitalWrite(13, LOW);
}
// menampilkan nilai analog
Serial.print("Nilai Analog: ");
Serial.print(analogValue);
// menampilkan nilai digital
Serial.print(" | Status Digital: ");
Serial.println(digitalValue);
Serial.print("Smoke PPM: ");
Serial.println(ppm);
}