test timer roboval 2018
Dependencies: mbed
Diff: main.cpp
- Revision:
- 0:183e37532b4d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Dec 27 21:25:41 2017 +0000 @@ -0,0 +1,76 @@ +#include "mbed.h" + +#include "mbed.h" + +DigitalOut led(LED1); +InterruptIn timer(D11); +InterruptIn resetTimer(D7); + +Timer t; + +int last_read = 0; + + +typedef struct time_screen { + int cents; + int seconds; + int minutes; +} measured_time; + +//Conversione da millisecondi a mm:ss:cc +measured_time human_read(int ms){ + measured_time read; + div_t qr = div(ms,1000); + + read.cents = qr.rem % 100; + + qr = div(qr.quot,60); + read.seconds = qr.rem; + + qr = div(qr.quot,60); + read.minutes = qr.rem; + + return read; +} + + +void accendiled(){ + int read = t.read_ms(); + if(read - last_read > 5000){ + int lap_time = read - last_read; + measured_time time = human_read(lap_time); + printf("Giro %02d:%02d:%02d \r\n",time.minutes,time.seconds,time.cents); + last_read = read; + } + + +} + +void stopTimer(){ + t.stop(); + + int read = t.read_ms(); + measured_time time = human_read(read); + printf("Totale %02d:%02d:%02d \r\n",time.minutes,time.seconds,time.cents); + + t.reset(); + t.start(); +} + +int main() { + timer.mode(PullUp); + timer.rise(&accendiled); + + resetTimer.mode(PullDown); + resetTimer.rise(&stopTimer); + + + t.start(); + + while(true) { + led = !led; + wait(0.3f); + } + + +}