#include "effect_clock.h" #include #include "functions.h" #include "fonts.h" #include "ntp.h" NightClockEffect::NightClockEffect() { window = Window::getFullWindow(); } void NightClockEffect::loop() { uint16_t minutes = minutes16(); //uint8_t y = minutes % ((window->height - 5) * 2 - 2); //if (y > window->height - 5) y = 2*window->height - 2*y; uint8_t y = minutes % 10; ClockEffect::loop(false, CRGB(0x880000), CRGB(0x000000), y); } void ClockEffect::loop() { loop_with_invert(false); } void ClockEffect::loop_with_invert(bool invert) { // Clear the first line to have a bit of space to the other stuff on screen CRGB bg_color(0x000000); for(int i=0; iwidth; i++) window->setPixel(i, 0, &bg_color); loop(invert, CRGB(0xFFFFFF), bg_color, 1); } void ClockEffect::loop(boolean invert, CRGB fg_color, CRGB bg_color, uint8_t yPos) { if (!invert) { window->clear(&bg_color); } else { // Manually clear the needed parts for(int y=0; y<6; y++) { window->setPixel(3, yPos+y, &bg_color); if (y!=2 && y!=4) { window->setPixel(7, yPos+y, &bg_color); } window->setPixel(8, yPos+y, &bg_color); window->setPixel(12, yPos+y, &bg_color); } fg_color = bg_color; } if (ntpClient.isTimeSet()==false && (ntpClient.getSeconds() & 1)==0) { window->clear(&bg_color); return; } int h = ntpClient.getHours(); //void drawChar(Font f, uint8_t x, uint8_t y, const char c, CRGB* color, bool mask=false); window->drawChar(&font_numbers3x5, 0<<8, yPos<<8, '0' + (h / 10), &fg_color, invert); window->drawChar(&font_numbers3x5, 4<<8, yPos<<8, '0' + (h % 10), &fg_color, invert); int m = ntpClient.getMinutes(); window->drawChar(&font_numbers3x5, 9<<8, yPos<<8, '0' + (m / 10), &fg_color, invert); window->drawChar(&font_numbers3x5, 13<<8, yPos<<8, '0' + (m % 10), &fg_color, invert); if (ntpClient.getSeconds() & 1) { window->setPixel(7, yPos+1, &fg_color); window->setPixel(7, yPos+3, &fg_color); } } ClockEffect::~ClockEffect() { delete window; }