#include <MQ135.h>
// Pin definitions
const int MQ135_PIN = 34; // Sensor MQ135 di pin analog
const int FAN_RELAY = 13; // Relay untuk fan
const int BUZZER_PIN = 12; // Modul Buzzer aktif
// Pin untuk modul RGB LED
const int RGB_RED = 25;
const int RGB_GREEN = 26;
const int RGB_BLUE = 27;
// Inisialisasi sensor MQ135
MQ135 gasSensor = MQ135(MQ135_PIN);
// Threshold values untuk PPM (sesuaikan berdasarkan kalibrasi)
const int AIR_GOOD = 400; // Udara normal
const int AIR_MEDIUM = 600; // Level waspada
const int AIR_BAD = 800; // Level bahaya
void setup() {
Serial.begin(115200);
// Setup pin modes
pinMode(FAN_RELAY, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(RGB_RED, OUTPUT);
pinMode(RGB_GREEN, OUTPUT);
pinMode(RGB_BLUE, OUTPUT);
// Matikan semua output saat startup
digitalWrite(FAN_RELAY, LOW);
digitalWrite(BUZZER_PIN, LOW);
// Matikan semua LED (Modul RGB LED aktif LOW)
digitalWrite(RGB_RED, HIGH);
digitalWrite(RGB_GREEN, HIGH);
digitalWrite(RGB_BLUE, HIGH);
// Tunggu sensor stabil
Serial.println("Menunggu sensor MQ135 stabil...");
delay(20000); // Tunggu 20 detik
Serial.println("Sensor siap!");
}
void loop() {
// Baca nilai PPM dari sensor
float ppm = gasSensor.getPPM();
Serial.print("Kualitas Udara (PPM): ");
Serial.println(ppm);
// Logic kontrol berdasarkan kualitas udara
if (ppm < AIR_GOOD) {
// Kondisi aman - LED Hijau
Serial.println("Status: UDARA BERSIH");
setRGBColor(HIGH, LOW, HIGH); // Hanya LED Hijau menyala
digitalWrite(FAN_RELAY, LOW);
digitalWrite(BUZZER_PIN, LOW);
} else if (ppm < AIR_MEDIUM) {
// Kondisi waspada - LED Kuning (Merah + Hijau)
Serial.println("Status: WASPADA");
setRGBColor(LOW, LOW, HIGH); // Merah dan Hijau menyala
digitalWrite(FAN_RELAY, LOW);
digitalWrite(BUZZER_PIN, LOW);
} else {
// Kondisi bahaya - LED Merah
Serial.println("Status: BAHAYA");
setRGBColor(LOW, HIGH, HIGH); // Hanya LED Merah menyala
digitalWrite(FAN_RELAY, HIGH); // Nyalakan fan
// Buzzer berkedip
digitalWrite(BUZZER_PIN, HIGH);
delay(500);
digitalWrite(BUZZER_PIN, LOW);
delay(500);
}
Serial.println("------------------------");
delay(2000);
}
// Fungsi untuk mengatur warna RGB LED
// Parameter LOW untuk menyala, HIGH untuk mati
void setRGBColor(int red, int green, int blue) {
digitalWrite(RGB_RED, red);
digitalWrite(RGB_GREEN, green);
digitalWrite(RGB_BLUE, blue);
}