#include <RTClib.h> // https://github.com/adafruit/RTClib/blob/master/
RTC_DS1307 rtc;
#include <Adafruit_NeoPixel.h> // https://github.com/adafruit/Adafruit_NeoPixel/
#define NUMPIXELS 60
#define PIXELPIN 5 // data pin
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIXELPIN, NEO_GRB + NEO_KHZ800);
byte pixelColorRed, pixelColorGreen, pixelColorBlue; // color values
void setup() {
rtc.begin(); // start real time clock
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // run once after inserting new battery
// rtc.adjust(DateTime (2000, 1, 2, 3, 4, 56)); // adjustable time for testing
// rtc.adjust(DateTime(year, month, date, hour, minute, second)); // reference to above line
pinMode(PIXELPIN, OUTPUT);
strip.begin(); // initialize Neopixels
strip.clear(); // clear pixel buffer
strip.show(); // show pixels buffer
}
void loop() {
DateTime now = rtc.now(); // get current date/time
for (int i = 0; i < strip.numPixels(); i++) {
if (i == now.second())
pixelColorBlue = 255; // BLU seconds
else
pixelColorBlue = 0;
if (i == now.minute())
pixelColorGreen = 255; // GRN minutes
else
pixelColorGreen = 0;
if (i == (now.hour() % 12) * 5 + (now.minute() / 12)) // by indev2
// now.hour() % 12 = hour * 5 = pixels per that hour number
// now.hour() % 12 * 5 + now.minute() / 12 = 12x/60 pixels to place hour pixel
pixelColorRed = 255; // RED hours
else
pixelColorRed = 0;
// combine overlayed colors for hour/min/sec - BLU/GRN = CYN, BLU/RED = MAG, GRN/RED = YEL
strip.setPixelColor(i, strip.Color(pixelColorRed, pixelColorGreen, pixelColorBlue));
}
strip.show();
}