Timer y timeout

Dependencies:   mbed

Committer:
jangelgm
Date:
Thu Mar 09 21:46:19 2017 +0000
Revision:
0:eca04bd27d29
Timer y timeout

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jangelgm 0:eca04bd27d29 1 /*Program Example 9.8: Tests reaction time, and demos use of Timer and Timeout functions
jangelgm 0:eca04bd27d29 2 */
jangelgm 0:eca04bd27d29 3 #include "mbed.h"
jangelgm 0:eca04bd27d29 4 #include <stdio.h>
jangelgm 0:eca04bd27d29 5 #include <stdlib.h> //contains rand() function
jangelgm 0:eca04bd27d29 6
jangelgm 0:eca04bd27d29 7 void measure ();
jangelgm 0:eca04bd27d29 8
jangelgm 0:eca04bd27d29 9 Serial pc(USBTX, USBRX);
jangelgm 0:eca04bd27d29 10
jangelgm 0:eca04bd27d29 11 DigitalOut led1(LED1);
jangelgm 0:eca04bd27d29 12 DigitalOut led4(LED4);
jangelgm 0:eca04bd27d29 13
jangelgm 0:eca04bd27d29 14 DigitalIn responseinput(p5); //the player hits the switch connected here to respond
jangelgm 0:eca04bd27d29 15
jangelgm 0:eca04bd27d29 16 Timer t; //used to measure the response time
jangelgm 0:eca04bd27d29 17
jangelgm 0:eca04bd27d29 18 Timeout action; //the Timeout used to initiate the response speed test
jangelgm 0:eca04bd27d29 19
jangelgm 0:eca04bd27d29 20 int main ()
jangelgm 0:eca04bd27d29 21 {
jangelgm 0:eca04bd27d29 22 pc.printf("Reaction Time Test\n\r");
jangelgm 0:eca04bd27d29 23 pc.printf("------------------\n\r");
jangelgm 0:eca04bd27d29 24 while (1) {
jangelgm 0:eca04bd27d29 25 int r_delay; //this will be the “random” delay before the led is blinked
jangelgm 0:eca04bd27d29 26 pc.printf("New Test\n\r");
jangelgm 0:eca04bd27d29 27 led4=1; //warn that test will start
jangelgm 0:eca04bd27d29 28 wait(0.2);
jangelgm 0:eca04bd27d29 29 led4=0;
jangelgm 0:eca04bd27d29 30 r_delay = rand() % 10 + 1; // generates a pseudorandom number range 1-10
jangelgm 0:eca04bd27d29 31 pc.printf("random number is %i\n\r", r_delay); // allows test randomness;
jangelgm 0:eca04bd27d29 32 //removed for normal play
jangelgm 0:eca04bd27d29 33 action.attach(&measure,r_delay); // set up Timeout to call measure()
jangelgm 0:eca04bd27d29 34 // after random time
jangelgm 0:eca04bd27d29 35 wait(10); //test will start within this time, and we then return to it
jangelgm 0:eca04bd27d29 36 }
jangelgm 0:eca04bd27d29 37 }
jangelgm 0:eca04bd27d29 38
jangelgm 0:eca04bd27d29 39 void measure () // called when the led blinks, and measures response time
jangelgm 0:eca04bd27d29 40 {
jangelgm 0:eca04bd27d29 41 if (responseinput ==1) { //detect cheating!
jangelgm 0:eca04bd27d29 42 pc.printf("Don’t hold button down!");
jangelgm 0:eca04bd27d29 43 } else {
jangelgm 0:eca04bd27d29 44 t.start(); //start the timer
jangelgm 0:eca04bd27d29 45 led1=1; //blink the led
jangelgm 0:eca04bd27d29 46 wait(0.05);
jangelgm 0:eca04bd27d29 47 led1=0;
jangelgm 0:eca04bd27d29 48 while (responseinput==0) {
jangelgm 0:eca04bd27d29 49 //wait here for response
jangelgm 0:eca04bd27d29 50 }
jangelgm 0:eca04bd27d29 51 t.stop(); //stop the timer once response detected
jangelgm 0:eca04bd27d29 52 pc.printf("Your reaction time was %f seconds\n\r", t.read());
jangelgm 0:eca04bd27d29 53 t.reset();
jangelgm 0:eca04bd27d29 54 }
jangelgm 0:eca04bd27d29 55 }