查看: 1336|回复: 0

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

[复制链接]
  • TA的每日心情
    擦汗
    2017-8-7 15:27
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2012-7-13 00:11:52 | 显示全部楼层 |阅读模式
    分享到:


    准备工作
    这一章我们来看看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。

    串口监视窗口
    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-19 09:22 , Processed in 0.123537 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.