#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define LDR 34
#define TRIG 5
#define ECHO 18
#define RELAY 19
#define G 4
int LIGHT = 2000;
void setup() {
Serial.begin(9600);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(RELAY, OUTPUT);
pinMode(G, OUTPUT);
lcd.init();
lcd.backlight();
digitalWrite(RELAY, LOW);
digitalWrite(G, LOW);
}
void loop() {
int ldrValue = analogRead(LDR);
float distance = measureDistance();
Serial.print("LDR Value: ");
Serial.print(ldrValue);
Serial.print(" Distance: ");
Serial.println(distance);
if (ldrValue > LIGHT) {
digitalWrite(RELAY, LOW);
digitalWrite(G, LOW);
lcd.setCursor(0,0);
lcd.print("Bright");
lcd.setCursor(0,1);
lcd.print("Distance:");
lcd.setCursor(8,1);
lcd.print(distance);
} else {
if (distance <= 20) {
digitalWrite(RELAY, HIGH);
digitalWrite(G, HIGH);
lcd.setCursor(0,0);
lcd.print("DARK ");
lcd.setCursor(0,1);
lcd.print("Distance:");
lcd.setCursor(8,1);
lcd.print(distance);
} else {
digitalWrite(RELAY, LOW);
digitalWrite(G, LOW);
lcd.setCursor(0,0);
lcd.print("DARK ");
lcd.setCursor(0,1);
lcd.print("Distance:");
lcd.setCursor(8,1);
lcd.print(distance);
}
}
delay(500);
}
float measureDistance() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long duration = pulseIn(ECHO, HIGH);
return (duration * 0.034) / 2;
}