#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define analogInPin A0
#define relay1Pin 2
#define relay2Pin 4
#define relay3Pin 5
int sensorValue = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(relay1Pin, OUTPUT);
pinMode(relay2Pin, OUTPUT);
pinMode(relay3Pin, OUTPUT);
lcd.init();
lcd.print("Nilai PPM: ");
lcd.clear();
}
void loop() {
int sensorValue = analogRead(analogInPin); //dapatkan value sensor dari pembacaan pin analog
// Konversi nilai sensor menjadi ppm (parts per million)
float voltage = sensorValue * 5.0 / 1023.0;
float ppm = 10.0 * ((2.5 - voltage) / voltage);
// Tampilkan nilai ppm di Serial Monitor dan LCD
Serial.print("Nilai PPM: ");
Serial.println(ppm);
lcd.setCursor(0, 1);
lcd.print(ppm);
// Kendalikan relay berdasarkan nilai ppm
if (ppm >= 20) {
digitalWrite(relay1Pin, HIGH);
digitalWrite(relay2Pin, LOW);
digitalWrite(relay3Pin, LOW);
} else if (ppm >= 40) {
digitalWrite(relay1Pin, LOW);
digitalWrite(relay2Pin, HIGH);
digitalWrite(relay3Pin, LOW);
} else if (ppm >= 60) {
digitalWrite(relay1Pin, LOW);
digitalWrite(relay2Pin, LOW);
digitalWrite(relay3Pin, HIGH);
} else {
digitalWrite(relay1Pin, LOW);
digitalWrite(relay2Pin, LOW);
digitalWrite(relay3Pin, LOW);
}
}