#include // Support for the Backpack FeatherWing #include // Adafruit's graphics library #include #include #include "ntp_time.h" #define DISPLAY_ADDRESS 0x70 #define BRIGHTNESS 0 #define BRIGHTNESS_STEP 1 namespace Display { uint8_t brightness = BRIGHTNESS; int currentHour = -1; int currentMin = -1; // Create display object Adafruit_7segment clockDisplay = Adafruit_7segment(); void adjustTime() { int displayHour = hour(); int displayMinute = minute(); int displayValue = displayHour * 100 + displayMinute; // Print the time on the display clockDisplay.print(displayValue, DEC); // Add zero padding when in 24 hour mode and it's midnight. // In this case the print function above won't have leading 0's // which can look confusing. Go in and explicitly add these zeros. if (displayHour == 0) { clockDisplay.writeDigitNum(1, 0); if (displayMinute < 10) { clockDisplay.writeDigitNum(3, 0); } } } void changeBrightness(bool increase) { increase ? brightness = (brightness + BRIGHTNESS_STEP) % 15 : brightness = (brightness - BRIGHTNESS_STEP) % 15; clockDisplay.setBrightness(brightness); } void adjustBrightness() { if (currentHour > 8 && currentHour < 17) { brightness = 11; } else { brightness = BRIGHTNESS; } clockDisplay.setBrightness(brightness); } void displayColon() { static bool colonOn = false; if (colonOn) { if (currentHour != hour()) { currentHour = hour(); Display::adjustBrightness(); hourChanged.signal(); if (currentHour == 8) dayChanged.signal(); } if (currentMin != minute()) { currentMin = minute(); adjustTime(); } } clockDisplay.drawColon(colonOn); clockDisplay.writeDisplay(); colonOn = !colonOn; } void displayValue(int value) { clockDisplay.print(value, HEX); clockDisplay.writeDisplay(); } void setup() { clockDisplay.begin(DISPLAY_ADDRESS); clockDisplay.setBrightness(brightness); adjustTime(); displayColon(); } }