#include <LiquidCrystal_I2C.h>
// inisialisasi lcd dengan alamat 0x27, 16 kolom, dan 2 baris
LiquidCrystal_I2C lcd(0x27, 16, 2);
// deklarasi pin
#define nilaisensor 34 // pin analog
#define BUZZER_PIN 25
#define redled 16
#define yelled 17
#define greled 18
// deklarasi variabel pada sensor
float analogValue;
float hasilSensor;
void setup() {
// inisialisasi lcd
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(" Kelompok 4");
lcd.setCursor(0,1);
lcd.print("Pendeteksi Hujan");
delay(5000);
lcd.clear();
// inisialisasi pin
pinMode(nilaisensor, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(redled,OUTPUT);
pinMode(yelled,OUTPUT);
pinMode(greled,OUTPUT);
// inisialisasi serial monitor dengan baud rate 9600
}
void loop() {
// baca nilai analog dari sensor
analogValue = analogRead(nilaisensor);
hasilSensor = analogValue/4095*100;
// menampilkan nilai sensor pada serial monitor
Serial.begin(9600);
Serial.print("Jumlah air yang diterima: ");
Serial.println(hasilSensor);
// baris 1 lcd i2c
lcd.setCursor(0, 0);
lcd.print("Jml Air: ");
lcd.print(hasilSensor);
lcd.setCursor(14, 0);
lcd.print("%");
// baris 2 lcd i2c
lcd.setCursor(0, 1);
// jika sensor mendeteksi hujan
if (hasilSensor >= 45) {
lcd.print("Hujan Deras");
digitalWrite(BUZZER_PIN, HIGH);
digitalWrite (redled, HIGH);
digitalWrite (yelled, LOW);
digitalWrite (greled, LOW);
// jika sensor mendeteksi gerimis
} else if ( 10 < hasilSensor < 45){
lcd.print("Gerimis");
digitalWrite(BUZZER_PIN, HIGH);
digitalWrite(yelled, HIGH);
digitalWrite (greled, LOW);
digitalWrite (redled, LOW);
// jika sensor tidak mendeteksi air
} else {(hasilSensor == 0);
lcd.print("Cerah");
digitalWrite(BUZZER_PIN,LOW);
digitalWrite(greled, HIGH);
digitalWrite (redled, LOW);
digitalWrite (yelled, LOW);
}
// tunggu 250 milidetik
delay(250);
lcd.clear();
}