极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9841|回复: 3

求助一个很简单的试验程序

[复制链接]
发表于 2014-4-4 09:23:23 | 显示全部楼层 |阅读模式
刚接触Arduino,想在一个试验里用它来计时,但是不知道Arduino怎么计时和显示计算的时间,求高手指点。
基本功能描述就是:3个LED灯每隔2-5秒随机闪烁,就是说每个2-5秒的区间内有一个LED灯亮,至于亮哪个,就是随机的了。每次灯亮的持续时间为2秒,每当一个灯亮起时过200毫秒开始计时,(Arduino连接一个外部按钮),当按钮被按下的时候记录从200毫秒到按下时的时间间隔,即被测者对LED亮灯的反应时间,这个反应时间输出到电脑屏幕上。
功能上看是很简单的一个程序,但是Arduino的计时是通过什么方式实现的?以及计算的反应时间如何输出到电脑上?
{:soso_e154:}
回复

使用道具 举报

发表于 2014-4-4 10:44:12 | 显示全部楼层
簡單的做法:
1) 在 setup 中對 按钮 連接的 pin 設定  attachInterrupt.
2) 在亮燈後, 自定一個 delay 時間, 就記下當時的時間 (用 start_time = millis() 或 start_time = micros() 之類);
3) 當 interrupt 觸發時, 再記下時間 (例如 button_click_time = millis() 之類)
4) 在 loop 之內檢查 button_click_time 是否已收到, 有的話就用 button_click_time - start_time 再輸出電腦 (亦可在 interrupt 時直接記下 millis() - start_time);
回复 支持 反对

使用道具 举报

发表于 2014-4-4 10:48:41 | 显示全部楼层
補充:
如果你的程序沒有其他工作的話, 甚至可以不用 interrupt, 直接在 loop 內檢查是否按了, 就更加簡單.

但用 interrupt 的方法, 可以容許 更複雜的主程序, 也可以準確得到按下的時間.  因為如果放在 loop 內, 必須要完成當前的工作才會執行下一次 loop, 可能會有少許延誤.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-6 19:40:30 | 显示全部楼层
{:soso_e100:}非常感谢详细的解答!开始动手来试一试~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 03:18 , Processed in 0.034408 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表