180sec down timer for an instant noodle cooking.
Dependencies: C12832_lcd LCD_fonts mbed
Ra-men timer
- For mbed application board /cookbook/mbed-application-board
- Push JoyStick Right - Extend 10second
- Push JoyStick Center - Stop Buzzer
This program works on 1768/11U24 mbed.
main.cpp@0:901b2e92426d, 2013-06-21 (annotated)
- Committer:
- mio
- Date:
- Fri Jun 21 14:28:04 2013 +0000
- Revision:
- 0:901b2e92426d
first release.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mio | 0:901b2e92426d | 1 | #include "mbed.h" |
mio | 0:901b2e92426d | 2 | #include "C12832_lcd.h" |
mio | 0:901b2e92426d | 3 | #include "Arial24x23.h" |
mio | 0:901b2e92426d | 4 | |
mio | 0:901b2e92426d | 5 | Ticker t ; |
mio | 0:901b2e92426d | 6 | C12832_LCD lcd; |
mio | 0:901b2e92426d | 7 | PwmOut buzzer(p26); |
mio | 0:901b2e92426d | 8 | InterruptIn left(p13),right(p16),center(p14); |
mio | 0:901b2e92426d | 9 | DigitalOut l1(LED1),l2(LED2),l3(LED3),l4(LED4); |
mio | 0:901b2e92426d | 10 | |
mio | 0:901b2e92426d | 11 | int last = 180; |
mio | 0:901b2e92426d | 12 | int i = 0 ; |
mio | 0:901b2e92426d | 13 | |
mio | 0:901b2e92426d | 14 | |
mio | 0:901b2e92426d | 15 | void printlast(){ |
mio | 0:901b2e92426d | 16 | lcd.invert(0); |
mio | 0:901b2e92426d | 17 | lcd.locate(8,2); |
mio | 0:901b2e92426d | 18 | lcd.printf(" %02d:%02d ",(int)last/60,(int)last%60); |
mio | 0:901b2e92426d | 19 | } |
mio | 0:901b2e92426d | 20 | |
mio | 0:901b2e92426d | 21 | |
mio | 0:901b2e92426d | 22 | void pushleft() { |
mio | 0:901b2e92426d | 23 | if (last > 10) { |
mio | 0:901b2e92426d | 24 | last-=10 ; |
mio | 0:901b2e92426d | 25 | } |
mio | 0:901b2e92426d | 26 | printlast(); |
mio | 0:901b2e92426d | 27 | } |
mio | 0:901b2e92426d | 28 | |
mio | 0:901b2e92426d | 29 | void pushright() { |
mio | 0:901b2e92426d | 30 | last+=10 ; |
mio | 0:901b2e92426d | 31 | printlast(); |
mio | 0:901b2e92426d | 32 | } |
mio | 0:901b2e92426d | 33 | |
mio | 0:901b2e92426d | 34 | void pushcenter() { |
mio | 0:901b2e92426d | 35 | buzzer = 0; |
mio | 0:901b2e92426d | 36 | } |
mio | 0:901b2e92426d | 37 | |
mio | 0:901b2e92426d | 38 | void onesec() |
mio | 0:901b2e92426d | 39 | { |
mio | 0:901b2e92426d | 40 | if (last > 0) { |
mio | 0:901b2e92426d | 41 | l1 = l2 = l3 = l4 = 0 ; |
mio | 0:901b2e92426d | 42 | buzzer = 0 ; |
mio | 0:901b2e92426d | 43 | if (--last == 0) { |
mio | 0:901b2e92426d | 44 | buzzer = 0.5; |
mio | 0:901b2e92426d | 45 | } |
mio | 0:901b2e92426d | 46 | printlast(); |
mio | 0:901b2e92426d | 47 | } else { |
mio | 0:901b2e92426d | 48 | lcd.invert(i); |
mio | 0:901b2e92426d | 49 | l1 = l3 = i ; |
mio | 0:901b2e92426d | 50 | i = i ? 0 : 1 ; |
mio | 0:901b2e92426d | 51 | l2 = l4 = i ; |
mio | 0:901b2e92426d | 52 | } |
mio | 0:901b2e92426d | 53 | } |
mio | 0:901b2e92426d | 54 | |
mio | 0:901b2e92426d | 55 | int main() |
mio | 0:901b2e92426d | 56 | { |
mio | 0:901b2e92426d | 57 | buzzer = 0 ; |
mio | 0:901b2e92426d | 58 | lcd.cls(); |
mio | 0:901b2e92426d | 59 | lcd.set_font((unsigned char *)Arial24x23); |
mio | 0:901b2e92426d | 60 | l1 = 0 ; |
mio | 0:901b2e92426d | 61 | l2 = 0 ; |
mio | 0:901b2e92426d | 62 | left.rise(&pushleft); |
mio | 0:901b2e92426d | 63 | right.rise(&pushright); |
mio | 0:901b2e92426d | 64 | center.rise(&pushcenter); |
mio | 0:901b2e92426d | 65 | buzzer.period_us(1000); |
mio | 0:901b2e92426d | 66 | t.attach(&onesec,1.0); |
mio | 0:901b2e92426d | 67 | |
mio | 0:901b2e92426d | 68 | while(true) { // this is the third thread |
mio | 0:901b2e92426d | 69 | sleep(); |
mio | 0:901b2e92426d | 70 | } |
mio | 0:901b2e92426d | 71 | } |