#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 20 chars and 4 line display
LiquidCrystal_I2C lcd(0x27, 20, 4); // Change the address if necessary
const int ldrSensorPin = A1;
const int trigPin = 13;
const int echoPin = 12;
const int pirSensorPin = 8;
const int blueLedPin = 10;
const int greenLedPin = 11;
const int violetLedPin = 3;
void setup() {
pinMode(ldrSensorPin, INPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(pirSensorPin, INPUT);
pinMode(blueLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(violetLedPin, OUTPUT);
lcd.init(); // Initialize the LCD
lcd.backlight(); // Turn on the backlight
lcd.setCursor(0, 1);
lcd.print(" SMART HOME"); // Display a startup message
lcd.setCursor(0, 2);
lcd.print(" SYSTEM");
delay(2000); // Wait 2 seconds
lcd.clear(); // Clear the LCD screen
}
void loop() {
int ldrValue = analogRead(ldrSensorPin);
int pirValue = digitalRead(pirSensorPin);
if (pirValue == HIGH && getDistance() < 90 && ldrValue < 200) {
digitalWrite(violetLedPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print(" ALERTE MV");
delay(2000);
digitalWrite(violetLedPin, LOW);
digitalWrite(greenLedPin, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(". ECLAIRAGE ENTREE ");
lcd.setCursor(0, 1);
lcd.print(" ON");
delay(2000);
digitalWrite(greenLedPin, LOW);
digitalWrite(blueLedPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print(" ECLAIRAGE AUTO");
lcd.setCursor(0, 2);
lcd.print(" ON");
delay(2000);
digitalWrite(blueLedPin, LOW);
} else if (pirValue == HIGH) {
digitalWrite(violetLedPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print(" ALERTE MV");
delay(2000);
digitalWrite(violetLedPin, LOW);
} else if (getDistance() < 90) {
digitalWrite(greenLedPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print(" ECLAIRAGE ENTREE ");
lcd.setCursor(0, 2);
lcd.print(" ON");
delay(2000);
digitalWrite(greenLedPin, LOW);
} else if (ldrValue < 200) {
digitalWrite(blueLedPin, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" ECLAIRAGE AUTO");
lcd.setCursor(0, 1);
lcd.print(" ON");
delay(2000);
digitalWrite(blueLedPin, LOW);
} else {
turnOffAllLeds();
lcd.clear();
lcd.setCursor(0, 1);
lcd.print(" NO ALERT");
}
delay(1000); // Adjust the delay as needed
}
int getDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
return pulseIn(echoPin, HIGH) * 0.034 / 2; // Convert pulse duration to distance
}
void turnOffAllLeds() {
digitalWrite(blueLedPin, LOW);
digitalWrite(greenLedPin, LOW);
digitalWrite(violetLedPin, LOW);
}