Arduino IDE开发ATtiny24/44/84实践(五)模数转换——电位器及单管脚多按键读取

        开发板上可用于ADC模数转换实验的外设有两个,一个是电位器,另一个是多路选择按键。电位器本质上是一个滑动变阻器,通过电阻分压获得不同的电压,无需多言。在使用引脚较少的单片机时,可以在各个按键上串联不同的电阻,在不同的按键按下时,不同的电阻分出不同的电压,进而可以用一个引脚实现多个按键的读取。

        ATtiny24/44/84有8路单端的10位ADC,分在在PA0~PA7引脚上,分别对应Arduino IDE中序号0~7。在Arduino IDE中,读取模拟量的函数为analogRead(pin),pin为引脚序号,返回值为0~1023的整数。

        在上一篇中,我们已经能够对电机的转速进行调整。这一篇中,我们将电机的控制权交给电位器。根据上面的电路,在旋转电位器时,ADC引脚的电压会在0~VCC之间变化,对应数字量0~1023,而PWM占空比的调节范围是0~255。因此,我们可以引入map函数。map函数将数字从一个范围重新映射到另一个范围,如下图程序所示,当analog在0~1023之间变化时,函数返回值在0~255之间等比例变化。用得到的结果控制电机,即可用电位器调整电机转速。

        在本系列的第三篇中,我们已经了解了单按键读取的方式。当需要读取多个按键但引脚不够用时,我们可以使用上述的方式通过不同电阻按键选通分压。在电阻选型时,最好能将各个按键分出的电压均匀区分开,便于确定阈值,提升抗干扰能力。设计一个实验,我们可以通过不同的按键让电机工作在不同的状态下,如下图所示。

        可以通过计时函数实现长短按的区分,如下图程序所示。在时间还未到达2秒时,判断是否存在按键松开。若存在则判断为短按并退出,否则2秒后若按键松开,则判断为长按。

        通过这种方式进行按键读取时,更加需要进行延时消抖,因为抖动造成的电压不稳相对于高低电平判断,其对模数转换的影响更大。

        以下为演示视频,当短按第一个按键时,电机以半速正转;短按第二个按键时,电机以全速正转;短按第三个按键时,电机以半速反转;短按第四个按键时,电机以全速反转;长按任一按键时,电机停止。完整程序和开发板电路可在本系列第一篇博客中电路城链接中下载。

Arduino IDE开发ATtiny实践

        至此,基于Arduino IDE开发ATtiny24/44/84实践就告一段落甚至完全结束了,对于其中的错误与不足还望各位道友指正。有感兴趣的电子相关系列希望我做的可以在评论区积极留言,后面我可能出该系列的博客。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值