Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- Revision:
- 0:2e007d983da0
diff -r 000000000000 -r 2e007d983da0 main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Fri May 24 21:49:03 2013 +0000
@@ -0,0 +1,49 @@
+/*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();
+ }
+}
+