pitrix/src/effect_pixelclock.cpp
Fabian Schlenz 382631d7d7 Effect#loop now gets the time since the last run of the loop in ms. This enables
the effects to show animations that stay fluid independent of the current frame rate.
2019-10-01 06:29:32 +02:00

36 lines
926 B
C++

#include "effect_pixelclock.h"
#include "ntp.h"
PixelClockEffect::PixelClockEffect() {
window = new Window(0, 0, LED_WIDTH, LED_HEIGHT-6);
_color_seconds = new CRGB(0x00FF00);
_color_minutes = new CRGB(0xFFFF00);
}
PixelClockEffect::~PixelClockEffect() {
delete _color_seconds;
delete _color_minutes;
delete window;
}
void PixelClockEffect::loop(uint16_t ms) {
uint8_t x, y; // Temporary variables for calculating positions
window->clear();
// Seconds
uint8_t seconds = ntpClient.getSeconds();
for (uint8_t s=0; s<60; s++) {
x = window->width - 1 - s/10;
y = window->height - 1 - (s % 10);
if (s<seconds) window->setPixel(x, y, _color_seconds);
}
uint8_t minutes = ntpClient.getMinutes();
for (uint8_t m=0; m<60; m++) {
x = 6 - m/10;
y = window->height - 1 - (m % 10);
if (m<minutes) window->setPixel(x, y, _color_minutes);
}
}
bool PixelClockEffect::can_be_shown_with_clock() { return true; }