#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
const int redLedPin = 32; // Pin untuk LED merah
const int yellowLedPin = 33; // Pin untuk LED kuning
const int greenLedPin = 25; // Pin untuk LED hijau
const int buzzerPin = 26; // Pin untuk buzzer
void setup()
{
Wire.begin(23, 22);
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(redLedPin, OUTPUT);
pinMode(yellowLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
}
void loop()
{
int16_t sensorValue = analogRead(34);
float humidityPercent = map(sensorValue, 2165, 3135, 0, 100); // Konversi nilai analog ke persentase
String msg;
if (humidityPercent < 40) {
msg = "BASAH";
digitalWrite(redLedPin, HIGH); // LED merah nyala
digitalWrite(yellowLedPin, LOW); // LED kuning mati
digitalWrite(greenLedPin, LOW); // LED hijau mati
tone(buzzerPin, 1000); // Bunyi buzzer
} else if (humidityPercent > 60) {
msg = "KERING";
digitalWrite(redLedPin, LOW); // LED merah mati
digitalWrite(yellowLedPin, LOW); // LED kuning mati
digitalWrite(greenLedPin, HIGH); // LED hijau nyala
tone(buzzerPin, 2000); // Bunyi buzzer
} else {
msg = "BAIK";
digitalWrite(redLedPin, LOW); // LED merah mati
digitalWrite(yellowLedPin, HIGH); // LED kuning nyala
digitalWrite(greenLedPin, LOW); // LED hijau mati
noTone(buzzerPin); // Matikan bunyi buzzer
}
lcd.clear();
lcd.print("Kelembapan Tanah ");
lcd.print(msg);
lcd.setCursor(0, 1); // Pindah ke baris kedua
lcd.print("Presentasi: ");
lcd.print(humidityPercent);
lcd.print("%");
delay(500);
}