动手学arduino(6)按键控制

在《动手学arduino(5)用mos管驱动马达》一文中,介绍arduino驱动马达及改变马达转速的方法。

本文继续前文内容,介绍用按键来控制马达的开关,调速等。

先学最简单的按键控制LED:按下按键,arduino板上的LED灯(图中荧光笔标示的“L”处)亮,松开按键,LED熄灭。

动手学arduino(6)按键控制

按键有四个引脚,分别为Terminal11、12、21、22;

其中11、12是相连的,21、22也相连,11(12)、21(22)是断开的,按下按钮,11(12)、21(22)接通,松开后又断开。

动手学arduino(6)按键控制

(按键接线原理图)

如图,当按键没按下时,到arduino的引线是低电平,当按下按键时,变成高电平(5V)

用下面的代码实现按下按键,板上的LED亮,松开LED熄灭。

动手学arduino(6)按键控制

第一句是读取按键连接arduino的2脚的电平状态,存于变量buttonState中
分支结构中判断buttonState是高还是低,并据此控制LED的亮和灭。
 

当然这种方法是不能用于风扇的,因为你不会把手永远按在按键上。
如何实现只按一下,松开手后,LED(或风扇)就一直开着,直到你再按一下按键?
下面代码可以实现:

动手学arduino(6)按键控制

这个代码有点抽象,这里不细说了。
但这只是两个状态:开和关。
小风扇至少有三种状态,高速档、低速档和停止。
用一个按键如何实现?
各元件连接如下:
动手学arduino(6)按键控制
代码如下:
动手学arduino(6)按键控制
仿真效果如下 :
按一次,电机低速转动(约100RPM),再按一次,电机高速转动(约168RPM),又按一次,电机停止转动。如此循环。

代码有点长,不一一解释。