#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ServoESP32.h>
// Pin Definitions
#define LED_PIN_RED 2 // Pin LED Merah (Hujan)
#define LED_PIN_GREEN 15 // Pin LED Hijau (Tidak Hujan)
#define SENSOR_PIN 34 // Pin Sensor Hujan
#define SERVO_PIN 18 // Pin Servo
// Inisialisasi LCD dan Servo
LiquidCrystal_I2C lcd(0x27, 16, 2); // Pastikan alamat I2C sesuai
Servo myServo;
void setup() {
pinMode(LED_PIN_RED, OUTPUT);
pinMode(LED_PIN_GREEN, OUTPUT);
lcd.begin(16, 2); // Inisialisasi LCD
lcd.backlight();
lcd.print("Jemuran Otomatis");
myServo.attach(SERVO_PIN); // Hubungkan Servo ke Pin 18
myServo.write(0); // Servo awal (posisi buka)
delay(2000); // Tampilkan pesan awal
}
void loop() {
int sensorValue = analogRead(SENSOR_PIN); // Baca sensor hujan
lcd.setCursor(0, 1);
if (sensorValue < 1000) { // Jika hujan terdeteksi
digitalWrite(LED_PIN_RED, HIGH);
digitalWrite(LED_PIN_GREEN, LOW);
myServo.write(90); // Servo bergerak menutup jemuran
lcd.print("Hujan Terdeteksi ");
} else { // Jika tidak hujan
digitalWrite(LED_PIN_RED, LOW);
digitalWrite(LED_PIN_GREEN, HIGH);
myServo.write(0); // Servo bergerak membuka jemuran
lcd.print("Tidak Hujan ");
}
delay(1000); // Tunggu 1 detik sebelum pembacaan berikutnya
}