also show seconds

This commit is contained in:
King Kévin 2016-02-23 23:56:04 +01:00
parent 29acf424f7
commit 9747b98dfb
1 changed files with 18 additions and 2 deletions

20
main.c
View File

@ -122,7 +122,6 @@ static void clock_hour(uint32_t time)
{
uint32_t led_hour = (WS2812B_LEDS*(255*(uint64_t)(time%ticks_midday)))/ticks_midday; // scale to LED brightnesses for hours
uint32_t led_minute = (WS2812B_LEDS*(255*(uint64_t)(time%ticks_hour)))/ticks_hour; // scale to LED brightnesses for minutes
printf("hours: %lu, minutes: %lu\n",led_hour,led_minute);
if (led_hour>=WS2812B_LEDS*255 || led_minute>=WS2812B_LEDS*255) { // a calculation error occurred
return;
}
@ -174,6 +173,16 @@ static void clock_hour(uint32_t time)
led_hour -= clock_leds[led*3+2];
}
}
uint16_t led_second = (WS2812B_LEDS*(time%ticks_minute))/ticks_minute; // get LED for seconds
uint8_t brightness_second = (255*(time%ticks_second))/ticks_second; // get brightness for seconds
// set second LED
clock_leds[led_second*3+0] = brightness_second;
clock_leds[led_second*3+1] = 0;
clock_leds[led_second*3+2] = 0;
// set previous LED
clock_leds[((led_second-1)%WS2812B_LEDS)*3+0] = 0xff-brightness_second;
clock_leds[((led_second-1)%WS2812B_LEDS)*3+1] = 0;
clock_leds[((led_second-1)%WS2812B_LEDS)*3+2] = 0;
}
/* set the LEDs */
@ -221,6 +230,13 @@ int main(void)
uint32_t time = 0; // the time to display
bool clear = true; // clear or display time
while (true) {
clock_hour(time); // set an increment time
leds_set(); // set the colors of all LEDs
ws2812b_transmit(); // transmit set color
time += 10;
}
bool action = false; // if an action has been performed don't go to sleep
button_flag = false; // reset button flag
char c; // to store received character
@ -249,7 +265,7 @@ int main(void)
} else {
printf("%02lu:%02lu\n", time/ticks_hour, (time%ticks_hour)/ticks_minute);
clock_hour(time); // set time
time += ticks_minute; // increment time
time += 1; // increment time
}
leds_set(); // set the colors of all LEDs
ws2812b_transmit(); // transmit set color