这个得用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();
}
}
运行截图如下:
|