Timer y timeout

Dependencies:   mbed

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