Configurable countdown timer
Dependencies: mbed PinDetect TextLCD
main.cpp@2:ecbc6a14824c, 2020-06-06 (annotated)
- Committer:
- MarceloSalazar
- Date:
- Sat Jun 06 23:17:30 2020 +0000
- Revision:
- 2:ecbc6a14824c
- Parent:
- 1:0ed57c2fd528
- Child:
- 3:3facd92a3f37
Count down implementation
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MarceloSalazar | 0:95d8c08cb5d4 | 1 | #include "mbed.h" |
MarceloSalazar | 1:0ed57c2fd528 | 2 | #include "TextLCD.h" |
MarceloSalazar | 1:0ed57c2fd528 | 3 | |
MarceloSalazar | 0:95d8c08cb5d4 | 4 | DigitalOut myled(LED1); |
MarceloSalazar | 1:0ed57c2fd528 | 5 | |
MarceloSalazar | 1:0ed57c2fd528 | 6 | //TextLCD(PinName rs, PinName e, PinName d4, PinName d5, PinName d6, PinName d7, LCDType type = LCD16x2); |
MarceloSalazar | 1:0ed57c2fd528 | 7 | // Note: VCC=5V, V0=0V, via 330 resistor) |
MarceloSalazar | 1:0ed57c2fd528 | 8 | TextLCD lcd(p15, p16, p17, p18, p19, p20); |
MarceloSalazar | 1:0ed57c2fd528 | 9 | |
MarceloSalazar | 2:ecbc6a14824c | 10 | Ticker flipper; |
MarceloSalazar | 2:ecbc6a14824c | 11 | |
MarceloSalazar | 2:ecbc6a14824c | 12 | volatile int t1s = 0; |
MarceloSalazar | 1:0ed57c2fd528 | 13 | |
MarceloSalazar | 2:ecbc6a14824c | 14 | volatile char seconds = 0; |
MarceloSalazar | 2:ecbc6a14824c | 15 | volatile char minutes = 25; |
MarceloSalazar | 2:ecbc6a14824c | 16 | volatile char hours = 0; |
MarceloSalazar | 2:ecbc6a14824c | 17 | volatile char alarm = 1; // alarm set on/off ==> enables buzzer |
MarceloSalazar | 0:95d8c08cb5d4 | 18 | |
MarceloSalazar | 2:ecbc6a14824c | 19 | void update_lcd() { |
MarceloSalazar | 1:0ed57c2fd528 | 20 | lcd.locate (0,1); |
MarceloSalazar | 2:ecbc6a14824c | 21 | lcd.printf("%02d:%02d:%02d",hours, minutes, seconds); |
MarceloSalazar | 2:ecbc6a14824c | 22 | } |
MarceloSalazar | 2:ecbc6a14824c | 23 | |
MarceloSalazar | 2:ecbc6a14824c | 24 | void flip() { |
MarceloSalazar | 2:ecbc6a14824c | 25 | t1s = 1; |
MarceloSalazar | 2:ecbc6a14824c | 26 | } |
MarceloSalazar | 2:ecbc6a14824c | 27 | |
MarceloSalazar | 2:ecbc6a14824c | 28 | void count_down(){ |
MarceloSalazar | 2:ecbc6a14824c | 29 | |
MarceloSalazar | 2:ecbc6a14824c | 30 | if(seconds == 0 && minutes == 0 && hours == 0) |
MarceloSalazar | 2:ecbc6a14824c | 31 | return; |
MarceloSalazar | 2:ecbc6a14824c | 32 | |
MarceloSalazar | 2:ecbc6a14824c | 33 | if(seconds != 0) { |
MarceloSalazar | 2:ecbc6a14824c | 34 | seconds -= 1; |
MarceloSalazar | 2:ecbc6a14824c | 35 | return; |
MarceloSalazar | 2:ecbc6a14824c | 36 | } |
MarceloSalazar | 2:ecbc6a14824c | 37 | |
MarceloSalazar | 2:ecbc6a14824c | 38 | if(minutes != 0){ |
MarceloSalazar | 2:ecbc6a14824c | 39 | minutes -= 1; |
MarceloSalazar | 2:ecbc6a14824c | 40 | seconds = 59; |
MarceloSalazar | 2:ecbc6a14824c | 41 | return; |
MarceloSalazar | 2:ecbc6a14824c | 42 | } |
MarceloSalazar | 2:ecbc6a14824c | 43 | |
MarceloSalazar | 2:ecbc6a14824c | 44 | if(hours != 0){ |
MarceloSalazar | 2:ecbc6a14824c | 45 | hours -= 1; |
MarceloSalazar | 2:ecbc6a14824c | 46 | minutes = 59; |
MarceloSalazar | 2:ecbc6a14824c | 47 | seconds = 59; |
MarceloSalazar | 2:ecbc6a14824c | 48 | return; |
MarceloSalazar | 2:ecbc6a14824c | 49 | } |
MarceloSalazar | 1:0ed57c2fd528 | 50 | } |
MarceloSalazar | 1:0ed57c2fd528 | 51 | |
MarceloSalazar | 1:0ed57c2fd528 | 52 | int main () { |
MarceloSalazar | 1:0ed57c2fd528 | 53 | |
MarceloSalazar | 1:0ed57c2fd528 | 54 | // Clean screen |
MarceloSalazar | 1:0ed57c2fd528 | 55 | lcd.cls(); |
MarceloSalazar | 2:ecbc6a14824c | 56 | lcd.printf("Countdown"); |
MarceloSalazar | 1:0ed57c2fd528 | 57 | |
MarceloSalazar | 2:ecbc6a14824c | 58 | update_lcd(); |
MarceloSalazar | 2:ecbc6a14824c | 59 | |
MarceloSalazar | 2:ecbc6a14824c | 60 | flipper.attach(&flip, 1.0); // interval 1 second |
MarceloSalazar | 2:ecbc6a14824c | 61 | |
MarceloSalazar | 0:95d8c08cb5d4 | 62 | while(1) { |
MarceloSalazar | 2:ecbc6a14824c | 63 | if (t1s){ |
MarceloSalazar | 2:ecbc6a14824c | 64 | t1s = 0; |
MarceloSalazar | 2:ecbc6a14824c | 65 | myled = !myled; |
MarceloSalazar | 2:ecbc6a14824c | 66 | count_down(); |
MarceloSalazar | 2:ecbc6a14824c | 67 | update_lcd(); |
MarceloSalazar | 2:ecbc6a14824c | 68 | } |
MarceloSalazar | 1:0ed57c2fd528 | 69 | } |
MarceloSalazar | 0:95d8c08cb5d4 | 70 | } |