打印
[Atmel]

在mbed环境下跑一下SAMD21:一个超时游戏

[复制链接]
1280|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
这个得用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();
               }   
    }
   
   


运行截图如下:

相关帖子

沙发
dirtwillfly| | 2016-3-30 11:04 | 只看该作者

使用特权

评论回复
板凳
snubber| | 2016-3-30 13:28 | 只看该作者
不懂

使用特权

评论回复
地板
大果仁儿| | 2016-3-30 13:41 | 只看该作者
哈哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2398

主题

6945

帖子

66

粉丝