#include <Wire.h>
#include <RTClib.h>
// Initialize the RTC object
RTC_DS3231 rtc; // Use RTC_DS3231
// Pin for the LED (street light)
const int ledPin = 2; // Adjust according to your wiring
const int ledPin1 = 4;
const int ledPin2 = 5;
const int ledPin3 = 14;
const int ledPin4 = 15;
const int ledPin5 = 16;
const int ledPin6 = 17;
const int ledPin7 = 18;
const int ledPin8 = 19;
const int ledPin9 = 25;
const int ledPin10 = 26;
void setup() {
Serial.begin(9600); // Start Serial communication
pinMode(ledPin, OUTPUT); // Set LED pin as output
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin10, OUTPUT);
// Initialize the RTC
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1); // Stop the program if RTC is not found
}
// Uncomment this line to set the RTC time initially
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// Set the time to the time this code was compiled (only run once)
// Check if RTC lost power
if (rtc.lostPower()) {
Serial.println("RTC lost power, please set the time!");
// Optionally include logic here to reset the time if necessary
}
}
void loop() {
DateTime now = rtc.now(); // Get the current time
// Print the current time for debugging
Serial.print("Current Time: ");
Serial.print(now.hour());
Serial.print(':');
Serial.print(now.minute());
Serial.print(':');
Serial.print(now.second());
Serial.println();
// Check if the current time is between 6:45 PM and 6:30 AM
if ((now.hour() == 18 && now.minute() >= 45) || (now.hour() == 6 && now.minute() < 30) || (now.hour() > 18)) {
digitalWrite(ledPin, HIGH);
Serial.println("Street light ON");
delay(500);
digitalWrite(ledPin1, HIGH);
Serial.println("Street light ON");
delay(500);
digitalWrite(ledPin2, HIGH);
Serial.println("Street light ON");
delay(500);
digitalWrite(ledPin3, HIGH);
Serial.println("Street light ON");
delay(500);
digitalWrite(ledPin4, HIGH);
Serial.println("Street light ON");
delay(500);
digitalWrite(ledPin5, HIGH);
Serial.println("Street light ON");
delay(500);
digitalWrite(ledPin6, HIGH);
Serial.println("Street light ON");
delay(500);
digitalWrite(ledPin7, HIGH);
Serial.println("Street light ON");
delay(500);
digitalWrite(ledPin8, HIGH);
Serial.println("Street light ON");
delay(500);
digitalWrite(ledPin9, HIGH);
Serial.println("Street light ON");
delay(500);
digitalWrite(ledPin10, HIGH);
Serial.println("Street light ON");
delay(500);
} else {
digitalWrite(ledPin10, LOW);
Serial.println("Street light OFF");
delay(500);
digitalWrite(ledPin9, LOW);
Serial.println("Street light OFF");
delay(500);
digitalWrite(ledPin8, LOW);
Serial.println("Street light OFF");
delay(500);
digitalWrite(ledPin7, LOW);
Serial.println("Street light OFF");
delay(500);
digitalWrite(ledPin6, LOW);
Serial.println("Street light OFF");
delay(500);
digitalWrite(ledPin5, LOW);
Serial.println("Street light OFF");
delay(500);
digitalWrite(ledPin4, LOW);
Serial.println("Street light OFF");
delay(500);
digitalWrite(ledPin3, LOW);
Serial.println("Street light OFF");
delay(500);
digitalWrite(ledPin2, LOW);
Serial.println("Street light OFF");
delay(500);
digitalWrite(ledPin1, LOW);
Serial.println("Street light OFF");
delay(500);
digitalWrite(ledPin, LOW);
Serial.println("Street light OFF");
delay(500);
}
delay(1000); // Wait for one minute before checking again
}