Juan Angel García
/
9_8
Timer y timeout
Diff: main.cpp
- Revision:
- 0:eca04bd27d29
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Mar 09 21:46:19 2017 +0000 @@ -0,0 +1,55 @@ +/*Program Example 9.8: Tests reaction time, and demos use of Timer and Timeout functions +*/ +#include "mbed.h" +#include <stdio.h> +#include <stdlib.h> //contains rand() function + +void measure (); + +Serial pc(USBTX, USBRX); + +DigitalOut led1(LED1); +DigitalOut led4(LED4); + +DigitalIn responseinput(p5); //the player hits the switch connected here to respond + +Timer t; //used to measure the response time + +Timeout action; //the Timeout used to initiate the response speed test + +int main () +{ + pc.printf("Reaction Time Test\n\r"); + pc.printf("------------------\n\r"); + while (1) { + int r_delay; //this will be the “random” delay before the led is blinked + pc.printf("New Test\n\r"); + led4=1; //warn that test will start + wait(0.2); + led4=0; + r_delay = rand() % 10 + 1; // generates a pseudorandom number range 1-10 + pc.printf("random number is %i\n\r", r_delay); // allows test randomness; +//removed for normal play + action.attach(&measure,r_delay); // set up Timeout to call measure() +// after random time + wait(10); //test will start within this time, and we then return to it + } +} + +void measure () // called when the led blinks, and measures response time +{ + if (responseinput ==1) { //detect cheating! + pc.printf("Don’t hold button down!"); + } else { + t.start(); //start the timer + led1=1; //blink the led + wait(0.05); + led1=0; + while (responseinput==0) { +//wait here for response + } + t.stop(); //stop the timer once response detected + pc.printf("Your reaction time was %f seconds\n\r", t.read()); + t.reset(); + } +} \ No newline at end of file