reaction timer
Dependencies: mbed
main.cpp@0:3f43a0c4607d, 2017-12-07 (annotated)
- Committer:
- HenryCTS
- Date:
- Thu Dec 07 13:29:32 2017 +0000
- Revision:
- 0:3f43a0c4607d
111
Who changed what in which revision?
User | Revision | Line number | New 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 | } |