ChipKIT Uno32 教程--第四课:按键

作者: Pollux
上传时间为: 2012-07-13 12:11 AM

准备工作

这一章我们来看看chipKIT Uno32怎样接受外部的输入信号。按键开关是常用的外部控制信号,我们还需准备电阻、LED、导线即面包板。

按键开关

                10K电阻(4.7K到100K之间都行)

       1K电阻(330到2K之间都行)

        220欧电阻,(20到220之间都行)

按键开关

电路设计中常用的是下面这种按键开关,尽管它有4个引脚,但其实只是个2线开关。

通常情况下是断开的,如果按下小按钮则会导通。

挑选按键开关时比较注重尺寸大小、最大通过电流、最大电压以及最大承受压力等。

digitalRead

  • 按键开关的使用很简单,可以控制电路的电流,如下
  • 但是如果把按键开关的状态作为输入信号时,直接串联会带来一点隐患,因为开关断开时输入状态就是悬空的。如果按键是接通高电平,那么开关就不起作用了。
  • 解决这个问题最好办法是添加上拉电阻或者下拉电阻。

  • 把按键开关作为输入连接,10k电阻作为下拉电阻,如下

  • 打开MPIDE,输入以下程序。

  • 打开串口监视窗口查看程序运行结果。

analogRead

我们也可以把按键作为模拟信号输入来判断其状态。chipKIT Uno32模拟输入口电压范围为0-5V,而数据分辨率为10位,也就是说用0-1023个数来表示0-5V之间的电压值。

  • 可以设置一个条件来判断开关时断开还是导通,程序如下
  • 硬件连线稍微修改,只是开关状态接到模拟0口

打开串口监视窗口查看程序运行结果。

控制LED

我们已经知道怎么判断开关的状态,可以通过数字输入口,也可以通过模拟输入口。那么下面看看怎么根据开关的状态来控制其他操作。

  • 通过开关控制LED,数字2为输入接口读入开关状态,断开时LD4不亮,按下开关则点亮数字13口的LD4。

硬件连线

  • 也可以修改程序试试,按下开关点亮LD4,断开时点亮LD5。

记录开关次数

我们已经可以通过按键开关来控制某些功能,不过开关还可以做更多的事。为什么要记录开关的次数呢,因为有时我们希望知道开关的状态,比如希望按一次开关点亮LED,再按一次才熄灭LED,当我们看电视时不会一直按着开关。

  • 修改程序如下

打开串口监视窗口

消除抖动

抖动是按键操作中常见的现象,即当按下或者放开按键时,电平不会马上到达稳定值,一般会有延迟时间,这时电平脉冲上有毛刺,可能产生误触发,例如按下一次按键却记录下很多次开关记录。按键的抖动可以通过并联电容来改善,更简单的是通过软件来消除抖动。

  • 软件消除抖动就是延迟一段时间在此读取开关状态,然后相比较可以判断是不是抖动。例如下面程序延迟10ms读取状态,然后控制LE:如果LD4、LD5不亮,控制点亮LED;如果LD4、LD5是亮着,控制熄灭LED。

串口监视窗口

全部评论 ()

创建讨论帖子

登录 后参与评论
系统提示