Game reaction

Dependencies:   mbed

Revision:
0:c3ed03e22b93
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Oct 31 11:08:54 2016 +0000
@@ -0,0 +1,48 @@
+/*Program Example 7: 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(D5);
+DigitalOut led4(D6);
+DigitalIn responseinput(PC_13); //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("Do not hold button down!\n");
+    } 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