#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
int rainSensorPin = A0; // pin untuk rain sensor
int buzzerPin = 9; // pin untuj=k buzzer
int servoPin = 10; // pin untuk servo
int redLedPin = 8; // pin untuk led merah
int greenLedPin = 7; // pin untuk led hijau
Servo myServo; // objek servo
DHT dht(DHTPIN,DHTTYPE);
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
pinMode(rainSensorPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(redLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
myServo.attach(servoPin);
myServo.write(0); // Servo diposisi awal (0 derajat, payung terbuka)
Serial.begin(9600); // untuk debugging
lcd.init();
lcd.backlight();
dht.begin();
lcd.setCursor(0, 0);
lcd.print("Cuaca hari ini");
lcd.setCursor(0, 1);
lcd.print("kel 3");
delay(2000);
lcd.clear();
}
void loop() {
int rainValue = analogRead(rainSensorPin); // baca nilai daari rain sensor
Serial.println(rainValue); // cetak nilai sensor untuk monitoring
if (rainValue < 500){ // jika hujan terdektesi (nilai rendah berati pada air)
digitalWrite(buzzerPin, HIGH); // aktifkan buzzer
digitalWrite(redLedPin, HIGH); // aktifkan led merah(indikator hujan)
digitalWrite(greenLedPin, LOW); // matikan led hijau(idikator hujan)
myServo.write(90); // servo bergersk ke posisi 90 derajat (menutup payung)
delay(2000);
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
lcd.setCursor(suhu > 30)
lcd.print("Suhu:");
lcd.print(temperature);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Kelembabpan:");
lcd.print(humidity);
lcd.print("%");
delay(5000);//Update every 5 seconds
lcd.clear();
} else {
digitalWrite(buzzerPin, LOW); // matikan buzzer
digitalWrite(redLedPin, LOW); // matikan led merah(indikator hujan)
digitalWrite(greenLedPin, HIGH); // aktifkan led hijau(idikator hujan)
myServo.write(0); // servo bergersk ke posisi 0 derajat (menutup payung)
} delay(500); // tungguu sejenak sebeum pembacaan sensor berikutnya
}