在〈mBlock & Arduino(2)点亮外接 LED〉中,看过了如何使用 Arduino 来控制输出脚位,并使用 LED 来得知输出脚位的状态,使用 LED 来检视脚位输出是经常之应用,看过了基本的脚位输出,接下来来看基本的脚位输入,这边要来透过按键开关来控制输入的信号。
认识按键开关
按键之类的开关有好几种,有两针脚、四针脚、六针脚等,两针脚很单纯,就是按下后两个针脚会接通,四针脚或六针脚的话,实际上要看说明,了解哪些脚位是连通,而哪些是由开关控制,以常见的四针脚开关来说,脚位突出的一边在按键按下前彼此不连通,而与对面脚位是连通的:
如果想实际测试按键开关的运作,可以使用 LED,例如设计以下的电路:
如果实际想接在面包板上测试,5V 电源的部份,可以使用 Arduino 上的 5V 脚位,如下所示:
在读取输入信号之前
在〈mBlock & Arduino(2)点亮外接 LED〉中谈过,脚位 D0 到 D13 可以当作数位输出与输入脚位,在这边,我们用其中一个脚位来试着读取按键开关是否按下,不过,并非单纯设计以下的电路就可以了:
这是因为此时输入脚位没有接受任何讯号或输入悬空时,会因为周遭环境的原因(电子杂讯等)而变为不确定的值,因此,在按键实际按下前,输入脚位可以借由一个下拉电阻(Pull-down resistor)连接到 GND,或者是使用一个上拉电阻(Pull-up resistor),将输入脚位保持在已知状态。例如说,若使用下拉电阻,可以如下设计电路:
就大多数的电路而言,可以选用 10K Ω 的电阻(原因与其他考量,可参考 How do I calculate the required value for a pull-up resistor?🔗http://bit.ly/2oQmpnF);上图的设计方式在按键按下时,输入脚位会得到一个高电位值,未按下则是低电位值。
使用上拉电阻的话,可以如下设计电路:
这样的设计方式下,在按键按下时,输入脚位会得到一个低电位值,未按下则是高电位值。
利用按键控制猫咪
你可以利用程式来侦测按键是否按下,通常会使用 LED 灯来作为程式的输出,像是即使使用上拉电阻方式,也是侦测到按键按下时,让 LED 灯点亮,否则 LED 保持在未点亮状态,不过,这边稍微变化一下,希望按键按下时,Scratch 的猫咪可以喵喵叫,这样比较有趣一些,你可以如下拉设电路:
我们打算读取 D7 的输入讯号,接着在 mBlock 中撰写程式如下:
接着试着执行看看程式,在按下按键时,猫咪会发出 meow 的声音,也会显示以下的图样:
附带一提的是,根据 Arduino – Digital Pins 中的说明,数位脚位都内建有上拉电阻,可以借由 pinMode() 为 INPUT_PULLUP 来打开,这样你在连接电路时,可以不用自行设置上拉电阻,不过,在 mBlock 中,并没有对应的控制方块可以使用的样子。
感谢CodeData用户:caterpillar的贡献 著作权归作者所有
整理:宁波家电物联网云平台,中科极动云