这个得用PC终端配合,就是程序每个都显示个延时我基数,用户根据这个基数,默数记时,程序则延时这个数后用定时器记时,然后按下按钮。
这时定时器记数在PC终端显示出来。
程序如下:
- #include "mbed.h"
- #include <stdio.h>
- #include <stdlib.h>
- void measure();
- Serial pc(USBTX,USBRX);
- Timeout Response;
- Timeout Response_duration;
- DigitalIn button(PA15);
- DigitalOut led1(PB30);
- DigitalOut led2(PA20);
- DigitalOut led3(PA21);
- Timer t; //用于测量响应时间
- Timeout action; //超时用于初始化响应速度测试
- int main()
- {
- pc.printf("Reaction Time Test\n\r");
- pc.printf("---------------------\n\r");
-
- while(1){
- int r_delay; //LED闪烁之前的随机延迟
- pc.printf("New Test\n\r");
- led2 = 1;
- wait(0.2);
- led2 = 0;
- r_delay = rand() % 10 + 1; //生成一个1-10的随机数
- pc.printf("random number is %i\n\r",r_delay);//用于测试随机数正常使用时删除
- action.attach(&measure,r_delay);//设置超时调用函数measure()
- wait(10); //在该时间内开始测试完成测试后返回
-
- }
- }
-
- void measure()
- {
- if(button == 0)
- {
- pc.printf("Don't hold button down!");
- }
- else{
- t.start();
- led2 = 1;
- wait(0.05);
- led2 = 0;
- while(button ==1)
- {}
- t.stop();
- pc.printf("Your reaction time was %f seconds\n\r",t.read());
- t.reset();
- }
- }
-
-
运行截图如下:
|