reaction timer

Dependencies:   mbed

Committer:
HenryCTS
Date:
Thu Dec 07 13:29:32 2017 +0000
Revision:
0:3f43a0c4607d
111

Who changed what in which revision?

UserRevisionLine numberNew contents of line
HenryCTS 0:3f43a0c4607d 1 /* Reaction timer
HenryCTS 0:3f43a0c4607d 2 Simple reaction timer, wait for the green light
HenryCTS 0:3f43a0c4607d 3 press the button on the board. Results are
HenryCTS 0:3f43a0c4607d 4 sent to the PC, view using a COM port reader (Terminal / XCTU)
HenryCTS 0:3f43a0c4607d 5 */
HenryCTS 0:3f43a0c4607d 6
HenryCTS 0:3f43a0c4607d 7 #include "mbed.h"
HenryCTS 0:3f43a0c4607d 8
HenryCTS 0:3f43a0c4607d 9
HenryCTS 0:3f43a0c4607d 10 // pin setup
HenryCTS 0:3f43a0c4607d 11 //LED's
HenryCTS 0:3f43a0c4607d 12 DigitalOut redLED(D11);
HenryCTS 0:3f43a0c4607d 13 DigitalOut amberLED(D12);
HenryCTS 0:3f43a0c4607d 14 DigitalOut greenLED(D13);
HenryCTS 0:3f43a0c4607d 15
HenryCTS 0:3f43a0c4607d 16 // button
HenryCTS 0:3f43a0c4607d 17 DigitalIn button(USER_BUTTON);
HenryCTS 0:3f43a0c4607d 18
HenryCTS 0:3f43a0c4607d 19 //timer
HenryCTS 0:3f43a0c4607d 20 Timer t;
HenryCTS 0:3f43a0c4607d 21
HenryCTS 0:3f43a0c4607d 22 // communications
HenryCTS 0:3f43a0c4607d 23 Serial pc (SERIAL_TX, SERIAL_RX);
HenryCTS 0:3f43a0c4607d 24
HenryCTS 0:3f43a0c4607d 25 // global variables
HenryCTS 0:3f43a0c4607d 26 float startTime = 0.0;
HenryCTS 0:3f43a0c4607d 27 float stopTime = 0.0;
HenryCTS 0:3f43a0c4607d 28 float duration = 0.0;
HenryCTS 0:3f43a0c4607d 29
HenryCTS 0:3f43a0c4607d 30
HenryCTS 0:3f43a0c4607d 31
HenryCTS 0:3f43a0c4607d 32
HenryCTS 0:3f43a0c4607d 33 int main() {
HenryCTS 0:3f43a0c4607d 34 t.start(); // start the timer
HenryCTS 0:3f43a0c4607d 35 while(1) {
HenryCTS 0:3f43a0c4607d 36 flash();
HenryCTS 0:3f43a0c4607d 37 startTime = t.read(); // read and store the time
HenryCTS 0:3f43a0c4607d 38 while (stopTime == 0.0)
HenryCTS 0:3f43a0c4607d 39 {
HenryCTS 0:3f43a0c4607d 40 if (button !=1) // button pressed
HenryCTS 0:3f43a0c4607d 41 {
HenryCTS 0:3f43a0c4607d 42 stopTime = t.read(); // read and store the time
HenryCTS 0:3f43a0c4607d 43 // calculate the time elapsed
HenryCTS 0:3f43a0c4607d 44 duration = stopTime - startTime;
HenryCTS 0:3f43a0c4607d 45 pc.printf("Reaction Time = %d Seconds", duration);
HenryCTS 0:3f43a0c4607d 46 wait(5); // wait 5 seconds
HenryCTS 0:3f43a0c4607d 47 // reset the timers
HenryCTS 0:3f43a0c4607d 48 duration = 0.0;
HenryCTS 0:3f43a0c4607d 49 }
HenryCTS 0:3f43a0c4607d 50 }
HenryCTS 0:3f43a0c4607d 51 stopTime = 0.0; // reset the stop time
HenryCTS 0:3f43a0c4607d 52 wait (5.0); // wait for a bit before starting again
HenryCTS 0:3f43a0c4607d 53 }
HenryCTS 0:3f43a0c4607d 54 }
HenryCTS 0:3f43a0c4607d 55
HenryCTS 0:3f43a0c4607d 56 void flash(){
HenryCTS 0:3f43a0c4607d 57 // flash sequence
HenryCTS 0:3f43a0c4607d 58 redLED = 1; // Red is ON
HenryCTS 0:3f43a0c4607d 59 wait(2); // 2 seconds
HenryCTS 0:3f43a0c4607d 60 redLED = 0; // Red is OFF
HenryCTS 0:3f43a0c4607d 61 amberLED= 1; // Amber is ON
HenryCTS 0:3f43a0c4607d 62 wait(1); // 1 second
HenryCTS 0:3f43a0c4607d 63 amberLED = 0; // Amber is OFF
HenryCTS 0:3f43a0c4607d 64 greenLED = 1; // Green in ON
HenryCTS 0:3f43a0c4607d 65 }