fix second runner LED birghtness for non 60 LED strips
This commit is contained in:
parent
57998de65a
commit
577d1ba607
25
main.c
25
main.c
|
@ -169,9 +169,9 @@ static void clock_clear(void)
|
||||||
*/
|
*/
|
||||||
static void clock_show_time(uint32_t time)
|
static void clock_show_time(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_hour = (WS2812B_LEDS*(256*(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
|
uint32_t led_minute = (WS2812B_LEDS*(256*(uint64_t)(time%ticks_hour)))/ticks_hour; // scale to LED brightnesses for minutes
|
||||||
if (led_hour>=WS2812B_LEDS*255 || led_minute>=WS2812B_LEDS*255) { // a calculation error occurred
|
if (led_hour>=WS2812B_LEDS*256 || led_minute>=WS2812B_LEDS*256) { // a calculation error occurred
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// show hours and minutes on LEDs
|
// show hours and minutes on LEDs
|
||||||
|
@ -226,17 +226,18 @@ static void clock_show_time(uint32_t time)
|
||||||
if (time%ticks_minute==0) {
|
if (time%ticks_minute==0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
uint16_t led_second = (WS2812B_LEDS*(time%ticks_minute))/ticks_minute; // get LED for seconds
|
uint32_t led_second = (WS2812B_LEDS*(256*(uint64_t)(time%ticks_minute)))/ticks_minute; // scale to LED brightnesses for seconds
|
||||||
uint8_t brightness_second = (255*(time%ticks_second))/ticks_second; // get brightness for seconds
|
uint8_t brightness_second = led_second%256; // get brightness for seconds for last LED
|
||||||
|
uint16_t second_led = (WS2812B_LEDS*(time%ticks_minute))/ticks_minute; // get LED for seconds (we only use the last LED as runner instead of all LEDs as arc)
|
||||||
// set seconds LED
|
// set seconds LED
|
||||||
clock_leds[led_second*3+0] = brightness_second;
|
clock_leds[second_led*3+0] = brightness_second;
|
||||||
//clock_leds[led_second*3+1] = 0; // clear other colors (minutes/hours indication)
|
//clock_leds[second_led*3+1] = 0; // clear other colors (minutes/hours indication)
|
||||||
//clock_leds[led_second*3+2] = 0; // clear other colors (minutes/hours indication)
|
//clock_leds[second_led*3+2] = 0; // clear other colors (minutes/hours indication)
|
||||||
// set previous seconds LED
|
// set previous seconds LED
|
||||||
led_second = ((led_second==0) ? WS2812B_LEDS-1 : led_second-1); // previous LED
|
second_led = ((second_led==0) ? WS2812B_LEDS-1 : second_led-1); // previous LED
|
||||||
clock_leds[led_second*3+0] = 0xff-brightness_second;
|
clock_leds[second_led*3+0] = 0xff-brightness_second;
|
||||||
//clock_leds[led_second*3+1] = 0; // clear other colors (minutes/hours indication)
|
//clock_leds[second_led*3+1] = 0; // clear other colors (minutes/hours indication)
|
||||||
//clock_leds[led_second*3+2] = 0; // clear other colors (minutes/hours indication)
|
//clock_leds[second_led*3+2] = 0; // clear other colors (minutes/hours indication)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @brief set the LEDs
|
/** @brief set the LEDs
|
||||||
|
|
Loading…
Reference in New Issue