#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
#define ldrPin 13
#define red 33
#define green 32
#define maknet 18
#define kelistrikan 14
const float gama = 0.7;
const float rl10 = 50;
int swit = 35;
int buz = 25;
int valueswit = 0;
void setup()
{
Wire.begin(23, 22);
Serial.begin(9600);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(maknet, INPUT_PULLUP);
pinMode(swit, INPUT_PULLUP);
pinMode(kelistrikan, OUTPUT);
pinMode(buz, OUTPUT);
lcd.init();
lcd.backlight();
}
void loop()
{
reeed();
soill();
ldr();
delay(1000);
}
void ldr(){
int nilaiLDR = analogRead(ldrPin);
nilaiLDR = map(nilaiLDR, 4095, 0, 1024, 0); //mengubah nilai pembacaan sensor LDR dari nilai ADC arduino menjadi nilai ADC ESP32
float voltase = nilaiLDR / 1024.*5;
float resistansi = 2000 * voltase / (1-voltase/5);
float kecerahan = pow(rl10*1e3*pow(10,gama)/resistansi,(1/gama));
// Serial.print("Kecerahan = ");
// Serial.println(kecerahan);
lcd.setCursor(0,0);
lcd.print("Kecerahan: ");
lcd.print(kecerahan);
if(kecerahan < 60){
digitalWrite(green, HIGH);
lcd.setCursor(0,1);
lcd.print("LAMPU TAMAN HIDUP");
}
else {
digitalWrite(green, LOW);
lcd.setCursor(0,1);
lcd.print("LAMPU TAMAN MATI");
}
delay(1000);
}
void soill(){
int16_t i = analogRead(34);
String msg = i < 2165 ? "WET" : i > 3135 ? "DRY" : "OK";
// lcd.clear();
lcd.setCursor(0,2);
lcd.print("Soil: ");
lcd.print(msg);
if(i >= 3135){
digitalWrite(red, HIGH);
lcd.setCursor(0,3);
lcd.print("Springkle Menyala");
}
else{
digitalWrite(red, LOW);
lcd.setCursor(0,3);
lcd.print("Springkle Mati");
}
}
void reeed(){
int valumasuk = 0;
int valuemasuk = digitalRead(maknet);
int valueswit = digitalRead(swit);// read state
// if(valueswit == HIGH)
// {
// Serial.println("Gerakan Terdeteksi");
// Serial.println("Buzzer hidup");
// tone(buz, 100);
// }
// else {
// Serial.println("Buzzer mati");
// noTone(buz);
// }
if (valuemasuk == HIGH && valueswit == HIGH) {
digitalWrite(kelistrikan,LOW);
tone(buz, 100);
Serial.println("Kelistrikan Mati diseluruh ruangan");
}
else if (valuemasuk == LOW && valueswit == HIGH) {
digitalWrite(kelistrikan,HIGH);
noTone(buz);
// myNoTone(buzzer);
Serial.println("Kelistrikan Hidup diseluruh ruangan");
}
else if (valuemasuk == HIGH && valueswit == LOW) {
digitalWrite(kelistrikan,LOW);
noTone(buz);
// myNoTone(buzzer);
Serial.println("Kelistrikan Hidup diseluruh ruangan");
}
// if (valuemasuk == HIGH ) {
// digitalWrite(kelistrikan,LOW);
// Serial.println("Kelistrikan Hidup diseluruh ruangan");
// }
// else {
// digitalWrite(kelistrikan, LOW);
// }
}