#include <Wire.h>
#include <RTClib.h>
#include <Adafruit_NeoPixel.h>
#include "NeoSegments.h"
#define DATA_PIN 11
#define PIXELS_PER_SEGMENT 6
#define NUM_PIXELS 270 // Increased to fit HH:MM:SS
Adafruit_NeoPixel strip(NUM_PIXELS, DATA_PIN, NEO_GRB + NEO_KHZ800);
NeoSegments segs(strip, PIXELS_PER_SEGMENT);
RTC_DS1307 rtc;
void setup() {
Serial.begin(9600);
Wire.begin();
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (!rtc.isrunning()) {
Serial.println("RTC is NOT running!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Set time to compile time
}
segs.begin();
segs.setDigitColor(strip.Color(255, 0, 0)); // Default green
// Register two colons for HH:MM:SS format
segs.registerSymbol(':', 2, true); // colon
segs.registerSymbol(';', 2, false); // hidden colon
segs.registerSymbol('.', 4, true); // period
segs.registerSymbol('#', 4, false); // period hidden
const uint8_t N_segments[7] = {1, 1, 1, 0, 1, 1, 0};
const uint8_t E_segments[7] = {1, 0, 0, 1, 1, 1, 1};
const uint8_t O_segments[7] = {1, 1, 1, 1, 1, 1, 0};
const uint8_t S_segments[7] = {1, 0, 1, 1, 0, 1, 1};
const uint8_t G_segments[7] = {1, 0, 1, 1, 1, 1, 0};
segs.registerDigit('N', N_segments);
segs.registerDigit('E', E_segments);
segs.registerDigit('O', O_segments);
segs.registerDigit('S', S_segments);
segs.registerDigit('G', G_segments);
}
void loop() {
DateTime now = rtc.now();
char timeString[9];
sprintf(timeString, "%02d:%02d:%02d.", now.hour(), now.minute(), now.second());
segs.setString(timeString);
Serial.println(timeString);
segs.update();
delay(100);
}