180sec down timer for an instant noodle cooking.

Dependencies:   C12832_lcd LCD_fonts mbed

Ra-men timer

This program works on 1768/11U24 mbed.

Committer:
mio
Date:
Fri Jun 21 14:28:04 2013 +0000
Revision:
0:901b2e92426d
first release.

Who changed what in which revision?

UserRevisionLine numberNew 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 }