#include "Arduino.h"
#include "uRTCLib.h"
#include <Adafruit_NeoPixel.h>
#define LED_PIN_1 6
#define LED_PIN_2 7 // Define pin for the second NeoPixel ring
#define LED_PIN_3 8 // Define pin for the third NeoPixel ring
#define NUM_LEDS_1 60 // Number of LEDs in the first ring
#define NUM_LEDS_2 60 // Number of LEDs in the second ring
#define NUM_LEDS_3 12 // Number of LEDs in the third ring
uRTCLib rtc(0x68);
Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(NUM_LEDS_1, LED_PIN_1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(NUM_LEDS_2, LED_PIN_2, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip3 = Adafruit_NeoPixel(NUM_LEDS_3, LED_PIN_3, NEO_GRB + NEO_KHZ800);
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup() {
Serial.begin(115200);
delay(3000);
URTCLIB_WIRE.begin();
rtc.set(0, 42, 7, 1, 17, 7, 24);
strip1.begin();
strip2.begin();
strip3.begin();
strip1.show();
strip2.show();
strip3.show();
}
void loop() {
rtc.refresh();
Serial.print("Current Date & Time: ");
Serial.print(rtc.year());
Serial.print('/');
Serial.print(rtc.month());
Serial.print('/');
Serial.print(rtc.day());
Serial.print(" (");
Serial.print(daysOfTheWeek[rtc.dayOfWeek()-1]);
Serial.print(") ");
Serial.print(rtc.hour());
Serial.print(':');
Serial.print(rtc.minute());
Serial.print(':');
Serial.println(rtc.second());
// Turn off all LEDs
strip1.clear();
strip2.clear();
strip3.clear();
// Calculate LED indexes based on time
int secIndex = rtc.second() % NUM_LEDS_1;
int minIndex = rtc.minute() % NUM_LEDS_2;
int hourIndex = rtc.hour() % NUM_LEDS_3;
// Set LEDs based on time
strip1.setPixelColor(secIndex, strip1.Color(255, 0, 0)); // Red LED on first ring every second
strip2.setPixelColor(minIndex, strip2.Color(0, 255, 0)); // Green LED on second ring every minute
strip3.setPixelColor(hourIndex, strip3.Color(0, 0, 255)); // Blue LED on third ring every hour
strip1.show();
strip2.show();
strip3.show();
delay(1000);
}