reaction timer

Dependencies:   mbed

main.cpp

Committer:
HenryCTS
Date:
2017-12-07
Revision:
0:3f43a0c4607d

File content as of revision 0:3f43a0c4607d:

/* Reaction timer
Simple reaction timer, wait for the green light
press the button on the board. Results are 
sent to the PC, view using a COM port reader (Terminal / XCTU) 
*/

#include "mbed.h"

  
// pin setup
//LED's
DigitalOut redLED(D11);
DigitalOut amberLED(D12); 
DigitalOut greenLED(D13); 

// button
DigitalIn button(USER_BUTTON); 

//timer
Timer t; 

// communications
Serial pc (SERIAL_TX, SERIAL_RX); 

// global variables
float startTime = 0.0; 
float stopTime = 0.0;
float duration = 0.0;  




int main() {
    t.start(); // start the timer
    while(1) {
        flash();
        startTime = t.read(); // read and store the time 
        while (stopTime == 0.0)
        {
            if (button !=1) // button pressed
            {                
                stopTime = t.read(); // read and store the time
                // calculate the time elapsed
                duration = stopTime - startTime; 
                pc.printf("Reaction Time = %d Seconds", duration);                 
                wait(5); // wait 5 seconds
                // reset the timers 
                duration = 0.0;                          
                } 
         }   
         stopTime = 0.0; // reset the stop time 
         wait (5.0); // wait for a bit before starting again    
    }
}

void flash(){
        // flash sequence 
        redLED = 1; // Red is ON
        wait(2); // 2 seconds
        redLED = 0; // Red is OFF
        amberLED= 1; // Amber is ON 
        wait(1); // 1 second
        amberLED = 0; // Amber is OFF
        greenLED = 1; // Green in ON             
}