show RTC time on LEDs
This commit is contained in:
parent
0d72bb6411
commit
bc30ef0daa
36
main.c
36
main.c
@ -265,20 +265,23 @@ int main(void)
|
||||
printf("welcome to the CuVoodoo LED clock\n"); // print welcome message
|
||||
led_on(); // switch on LED to indicate setup completed
|
||||
|
||||
uint32_t time = 0; // the time to display
|
||||
uint32_t current_time = 6*ticks_hour+45*ticks_minute+15*ticks_second+ticks_second/4;
|
||||
|
||||
uint16_t* rtc_time = rtc_read_time(); // get current date
|
||||
printf("current date: %04d-%02d-%02d %02d:%02d:%02d\n", rtc_time[6], rtc_time[5], rtc_time[4], rtc_time[2], rtc_time[1], rtc_time[0]);
|
||||
uint32_t display_time = 0; // the time to display
|
||||
uint32_t current_time = rtc_time[2]*ticks_hour+rtc_time[1]*ticks_minute+rtc_time[0]*ticks_second; // the current time
|
||||
printf("setting current time\n");
|
||||
while (time<current_time) {
|
||||
if (time+ticks_hour<=current_time) { // first set hours
|
||||
time += ticks_hour; // increment hours
|
||||
} else if (time+ticks_minute<=current_time) { // second set minutes
|
||||
time += ticks_minute; // increment minutes
|
||||
} else if (time+ticks_minute<=current_time) { // third set seconds
|
||||
time += ticks_second; // increment seconds
|
||||
while (display_time<current_time) {
|
||||
if (display_time+ticks_hour<=current_time) { // first set hours
|
||||
display_time += ticks_hour; // increment hours
|
||||
} else if (display_time+ticks_minute<=current_time) { // second set minutes
|
||||
display_time += ticks_minute; // increment minutes
|
||||
} else if (display_time+ticks_minute<=current_time) { // third set seconds
|
||||
display_time += ticks_second; // increment seconds
|
||||
} else { // finally set time
|
||||
time = current_time;
|
||||
display_time = current_time;
|
||||
}
|
||||
clock_show_time(time); // set time (progress)
|
||||
clock_show_time(display_time); // set time (progress)
|
||||
leds_set(); // set the colors of all LEDs
|
||||
ws2812b_transmit(); // transmit set color
|
||||
// delay some time
|
||||
@ -286,11 +289,8 @@ int main(void)
|
||||
__asm__("nop");
|
||||
}
|
||||
}
|
||||
printf("it is now %02lu:%02lu:%02lu\n", time/ticks_hour, (time%ticks_hour)/ticks_minute, (time%ticks_minute)/ticks_second);
|
||||
|
||||
printf("it is now %02lu:%02lu:%02lu\n", display_time/ticks_hour, (display_time%ticks_hour)/ticks_minute, (display_time%ticks_minute)/ticks_second);
|
||||
// test RTC
|
||||
uint16_t* rtc_time = rtc_read_time();
|
||||
printf("RTC full time %04d-%02d-%02d %02d:%02d:%02d\n", rtc_time[6], rtc_time[5], rtc_time[4], rtc_time[2], rtc_time[1], rtc_time[0]);
|
||||
printf("RTC oscillator: ");
|
||||
if (rtc_oscillator_disabled()) {
|
||||
printf("disbaled\n");
|
||||
@ -324,9 +324,9 @@ int main(void)
|
||||
action = true; // action has been performed
|
||||
printf("%c",c); // echo receive character
|
||||
|
||||
printf("%02lu:%02lu\n", time/ticks_hour, (time%ticks_hour)/ticks_minute);
|
||||
clock_show_time(time); // set time
|
||||
time += ticks_minute; // increment time
|
||||
printf("%02lu:%02lu\n", display_time/ticks_hour, (display_time%ticks_hour)/ticks_minute);
|
||||
clock_show_time(display_time); // set time
|
||||
display_time += ticks_minute; // increment time
|
||||
leds_set(); // set the colors of all LEDs
|
||||
ws2812b_transmit(); // transmit set color
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user