test timer roboval 2018

Dependencies:   mbed

main.cpp

Committer:
fdalforno
Date:
2017-12-27
Revision:
0:183e37532b4d

File content as of revision 0:183e37532b4d:

#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);
     }
    
    
}