From 02658f2c45bf045e7d424f64eaab48e142aada82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?King=20K=C3=A9vin?= Date: Tue, 23 Feb 2016 20:28:55 +0100 Subject: [PATCH] show hour time with gradient --- main.c | 62 +++++++++++++++++++++++----------------------------------- 1 file changed, 24 insertions(+), 38 deletions(-) diff --git a/main.c b/main.c index 4c71a4c..ef213e5 100644 --- a/main.c +++ b/main.c @@ -118,19 +118,21 @@ static void clock_hours(void) static void clock_hour(uint32_t time) { time %= ticks_midday; // the LED strip can only display 12 hours - uint32_t led_hour = WS2812B_LEDS*time/ticks_midday; // scale to number of LEDs - if (led_hour=WS2812B_LEDS*255) { // a calculation error occurred + return; } - /* - for (uint16_t led=0; led0; led++) { clock_leds[led*3+0] = 0; clock_leds[led*3+1] = 0; - clock_leds[led*3+2] = 0xff; + if (led_hour>=0xff) { // full hours + clock_leds[led*3+2] = 0xff; + } else { // running hours + clock_leds[led*3+2] = led_hour; + } + led_hour -= clock_leds[led*3+2]; } - */ } /* set the LEDs */ @@ -168,14 +170,15 @@ int main(void) #endif ws2812b_setup(); // setup WS2812b LEDs - clock_clear(); // clear clock LEDs + clock_hours(); // show hour markers + leds_set(); // set the colors of all LEDs + ws2812b_transmit(); // transmit set color printf("welcome to the CuVoodoo LED clock\n"); // print welcome message led_on(); // switch on LED to indicate setup completed - clock_hour(6*ticks_hour); - leds_set(); // set the colors of all LEDs - ws2812b_transmit(); // transmit set color + uint32_t time = 0; // the time to display + bool clear = true; // clear or display time bool action = false; // if an action has been performed don't go to sleep button_flag = false; // reset button flag @@ -199,34 +202,17 @@ int main(void) char_flag = false; // reset flag action = true; // action has been performed printf("%c",c); // echo receive character - switch (c) { - case 'r': // set red color - clock_leds[0] = 0xff; - clock_leds[1] = 0; - clock_leds[2] = 0; - break; - case 'g': // set green color - clock_leds[0] = 0; - clock_leds[1] = 0xff; - clock_leds[2] = 0; - break; - case 'b': // set blue color - clock_leds[0] = 0; - clock_leds[1] = 0; - clock_leds[2] = 0xff; - break; - case 'm': // show hour marks - clock_hours(); - break; - case 'h': // show hours - clock_hour(6*ticks_hour); - break; - default: // set no color - clock_clear(); - break; + + if (clear) { + clock_clear(); // clear clock LEDs + } else { + printf("%02lu:%02lu\n", time/ticks_hour, (time%ticks_hour)/ticks_minute); + clock_hour(time); // set time + time += ticks_minute; // increment time } leds_set(); // set the colors of all LEDs ws2812b_transmit(); // transmit set color + clear = false; } while (button_flag) { button_flag = false; // reset flag