2013-2-17 23:10:11 [显示全部楼层]
5465浏览
查看: 5465|回复: 3

[讨论] Arduino 电子积木基础套装 源代码有错误

[复制链接]
在抢答器的源码里:
void key_scan()//按键扫描子程序
{
int key_1,key_2,key_3;//定义发量
key_1=analogRead(2);//读叏模拟第一引脚癿电压值
key_2=analogRead(3);//读叏模拟第二引脚癿电压值
key_3=analogRead(4);//读叏模拟第三引脚癿电压值
if(key_1<204&&key_2<204&&key_3<204)//如果各按键电压值都小于204(即模拟值癿1V),可以判断没有按键按下
{ return;//跳出本子凼数
}
if(key_1>818)//如果按键1癿电压值都大于818(即模拟值癿4V),则可以判断按键1被按下
{
    delay(10);//由于有抖动,所以延时100ms再一次判断
    if(key_1>818)//如果按键1癿电压值都大于818(即模拟值癿4V),则可以判

问题在这里,由于delay函数是让程序停留在此处,此时并没有再一次去读key_1的值,如果因为抖动引起key_1值大于818,加了这个delay并没有改变key_1的值呀

Ricky  NPC

发表于 2013-2-18 13:34:19

非常感谢指出错误。 :lol:lol:lol
回复

使用道具 举报

ni_jj  学徒
 楼主|

发表于 2013-2-18 16:04:47

if(key_1>818)//如果按键1癿电压值都大于818(即模拟值癿4V),则可以判断按键1被按下
{
    delay(10);//由于有抖动,所以延时100ms再一次判断
    key_1=analogRead(2);
    if(key_1>818)//如果按键1癿电压值都大于818(即模拟值癿4V),则可以判
在delay后再加上一句读取key_1,应该是正解是吧。
回复

使用道具 举报

mickey  NPC

发表于 2013-2-18 17:00:19

这个延时是处理按键读取的一个常用手法,按钮按下时会由于接触时电平产生毛刺,这个延时就用来消除毛刺。
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
关于楼主
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail