arduino学习第一步,先装个开关。
最初想法很朴素,使用单刀单掷开关,如果针脚是高电平,就怎样怎样。跟语句直接对应
if (digitalRead(buttonPin) == HIGH) return true;
实际应用的时候发现,开关闭合的时候,针脚采到的确实是高电平;但是开关打开的时候,采到的数值不确定,有时为高有时为低;原因是因为开关打开的时候,针脚悬空,有可能从空中的电磁波或是周围的静电场中感生,得到一个不确定的电位。于是连接双刀双掷开关,输入值要么为高,要么为低。对应代码很简单:
bool isButtonPushed() {
if (digitalRead(buttonPin) == HIGH) // 若按键被按下
return true;
else
return false;
}
应用的时候发现开关在高低电电平之间切换的过程,对于采样率为成K上M的单片机来说时间太长了。好多个周期中输入脚上都是悬空状态,程序非常不稳定。查阅资料后得知需要连接上拉(下拉)电阻。
这样的开关电路是稳定的,开关闭合时候输入为低电平,开关打开时候为高电平。
几点注意:
1.跟高电平连接的叫上拉电阻,上拉的开关电路闭合时候输入电平为低。下拉电阻情况反之。
2.资料表明,arduino单片机引脚的输入模式是自带上拉电阻的。可使用pinMode(N,INPUT_PULLUP)将引脚设置为输入上拉模式。只是要注意,如果使用了单片机的上拉模式,外部电路要么使用普通单刀单掷开关,要么也使用上拉电阻的开关元件,否则可能出现意料之外的状态。
3.阻值一般选1k欧到10k欧。
4.网上能买到自带上(下)拉电阻的开关模块。使用的时候可以先测量一下它的连接,然后按所需要决定是不是要反接。