#include <LiquidCrystal_I2C.h>
// Define LCD properties
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
#define BUZZER 8 // Use a digital pin for the buzzer (D8)
int ldr1 = A0; // Connect LDR1 to analog pin A0
int ldr2 = A1; // Connect LDR2 to analog pin A1
int ldr3 = A2; // Connect LDR3 to analog pin A2
void setup() {
lcd.init(); // Initialize the LCD
lcd.backlight(); // Turn on the backlight
pinMode(ldr1, INPUT);
pinMode(ldr2, INPUT);
pinMode(ldr3, INPUT);
pinMode(BUZZER, OUTPUT);
Serial.begin(115200); // Initialize serial communication
}
void loop() {
int data1 = analogRead(ldr1); // Read LDR1 value
Serial.println("ldr1 value=" + String(data1));
int data2 = analogRead(ldr2); // Read LDR2 value
Serial.println("ldr2 value=" + String(data2));
int data3 = analogRead(ldr3); // Read LDR3 value
Serial.println("ldr3 value=" + String(data3));
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("Street Light Fault");
lcd.setCursor(1, 1);
lcd.print("Detection Project");
if (data1 > 1000 && data2 > 1000) {
if (data3 > 1000) {
Serial.println("All lights are faulty");
lcd.setCursor(0, 3);
lcd.print("All Lights are Faulty");
digitalWrite(BUZZER, HIGH);
} else {
Serial.println("Light 1 & 2 Fault");
lcd.setCursor(2, 3);
lcd.print("Light 1 & 2 Fault");
digitalWrite(BUZZER, HIGH);
}
} else if (data2 > 1000 && data3 > 1000) {
if (data1 > 1000) {
Serial.println("All lights are faulty");
lcd.setCursor(0, 3);
lcd.print("All Lights are Faulty");
digitalWrite(BUZZER, HIGH);
} else {
Serial.println("Light 2 & 3 Fault");
lcd.setCursor(2, 3);
lcd.print("Light 2 & 3 Fault");
digitalWrite(BUZZER, HIGH);
}
} else if (data3 > 1000 && data1 > 1000) {
if (data2 > 1000) {
Serial.println("All lights are faulty");
lcd.setCursor(0, 3);
lcd.print("All Lights are Faulty");
digitalWrite(BUZZER, HIGH);
} else {
Serial.println("Light 1 & 3 Fault");
lcd.setCursor(2, 3);
lcd.print("Light 1 & 3 Fault");
digitalWrite(BUZZER, HIGH);
}
} else if (data1 > 1000) {
Serial.println("Light 1 Fault");
lcd.setCursor(3, 3);
lcd.print("Light 1 Fault");
digitalWrite(BUZZER, HIGH);
} else if (data2 > 1000) {
Serial.println("Light 2 Fault");
lcd.setCursor(3, 3);
lcd.print("Light 2 Fault");
digitalWrite(BUZZER, HIGH);
} else if (data3 > 1000) {
Serial.println("Light 3 Fault");
lcd.setCursor(3, 3);
lcd.print("Light 3 Fault");
digitalWrite(BUZZER, HIGH);
} else {
Serial.println("No Fault");
lcd.setCursor(2, 3);
lcd.print("No Fault Detected");
digitalWrite(BUZZER, LOW);
}
delay(6000); // Wait 6 seconds before next check
}