Arduino 电子积木基础套装 源代码有错误
2013-02-171.4万
AI 快速预览详细
本文讨论了Arduino电子积木基础套装中抢答器源代码的一个常见问题:按键抖动。在按键扫描子程序中,由于使用了delay函数,导致key_1的值没有被重新读取,从而无法有效消除抖动。文章详细解析了问题原因,并提供了解决方案:在delay函数后重新读取key_1的值。这一修改可以确保按键状态的准确判断,使抢答器能够正常工作。
|
在抢答器的源码里: 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的值呀 |




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