A digital clock using Grove - 4 Digit Display

Dependencies:   DigitDisplay mbed

Fork of Arch_Digit_Display by Yihui Xiong

Committer:
yihui
Date:
Wed Aug 20 08:35:13 2014 +0000
Revision:
1:f45925081128
Parent:
0:89330707469d
Digital Clock

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yihui 0:89330707469d 1 #include "mbed.h"
yihui 0:89330707469d 2 #include "DigitDisplay.h"
yihui 0:89330707469d 3
yihui 0:89330707469d 4 DigitDisplay display(P1_14, P1_13); // 4-Digit Display connected to UART Grove connector
yihui 0:89330707469d 5 DigitalOut led(LED1);
yihui 0:89330707469d 6
yihui 1:f45925081128 7 Ticker ticker;
yihui 1:f45925081128 8 volatile uint8_t second = 0;
yihui 1:f45925081128 9 volatile uint8_t minute = 0;
yihui 1:f45925081128 10 volatile uint8_t hour = 12;
yihui 1:f45925081128 11 volatile bool colon_enable = false;
yihui 1:f45925081128 12
yihui 1:f45925081128 13 void tick()
yihui 1:f45925081128 14 {
yihui 1:f45925081128 15 colon_enable = !colon_enable;
yihui 1:f45925081128 16 display.setColon(colon_enable);
yihui 1:f45925081128 17
yihui 1:f45925081128 18 if (colon_enable) {
yihui 1:f45925081128 19 second++;
yihui 1:f45925081128 20 if (second >= 60) {
yihui 1:f45925081128 21 second = 0;
yihui 1:f45925081128 22 minute++;
yihui 1:f45925081128 23 if (minute >= 60) {
yihui 1:f45925081128 24 minute = 0;
yihui 1:f45925081128 25 hour++;
yihui 1:f45925081128 26 if (hour >= 24) {
yihui 1:f45925081128 27 hour = 0;
yihui 1:f45925081128 28 }
yihui 1:f45925081128 29 }
yihui 1:f45925081128 30
yihui 1:f45925081128 31 display.write(hour * 100 + minute);
yihui 1:f45925081128 32 }
yihui 0:89330707469d 33 }
yihui 0:89330707469d 34 }
yihui 1:f45925081128 35
yihui 1:f45925081128 36 int main() {
yihui 1:f45925081128 37 display.write(hour * 100 + minute);
yihui 1:f45925081128 38 ticker.attach(tick, 0.5);
yihui 1:f45925081128 39 while(1) {
yihui 1:f45925081128 40 led = !led;
yihui 1:f45925081128 41 wait(0.5);
yihui 1:f45925081128 42 }
yihui 1:f45925081128 43 }