本文章将教会大家如何使用Arduino使按按钮后对小灯进行开关。
一、目标实现:
使用Arduino编程,使得按下按钮后小灯可以进行开关。
二、前期准备:
软件准备:Arduino 18.8
硬件准备:Arduino开发板,LED灯,220Ω电阻,面包板,杜邦线,2k电阻,按钮。
三、接线:
如下图
四、编写程序:
const int buttonPin = 2; // 定义一个常量buttonPin,其值为2,表示按钮连接的引脚编号。
const int ledPin = 13; // 定义一个常量ledPin,其值为13,表示LED灯连接的引脚编号。
int ledState = HIGH; // 定义一个变量ledState,初始值为HIGH(即1),表示LED灯初始状态为高电平(亮)。
int buttonState = LOW; // 定义一个变量buttonState,用于存储按钮的当前状态(HIGH或LOW)。
int lastButtonState = LOW; // 定义一个变量lastButtonState,初始值为LOW,用于存储按钮的上一个状态。
unsigned long lastDebounceTime = 0; // 定义一个无符号长整型变量lastDebounceTime,初始值为0,用于记录上一次按钮状态变化的时间。
unsigned long debounceDelay = 50; // 定义一个无符号长整型变量debounceDelay,其值为50,表示消抖延迟时间(单位可能是毫秒)。
void setup() {
pinMode(buttonPin, INPUT); // 将buttonPin设置为输入模式。
pinMode(ledPin, OUTPUT); // 将ledPin设置为输出模式。
digitalWrite(ledPin, ledState); // 将ledPin设置为ledState的值,即点亮LED灯。
}
void loop() {
int reading = digitalRead(buttonPin); // 读取buttonPin的值,存储在reading变量中。
/*消抖是一个重要的概念,特别是在处理物理按钮输入时。因为物理按钮在按下或释放时可能会产生快速的、多次的状态变化(即抖动),如果不进行适当的处理,
这些抖动可能会被误读为多次按钮操作。通过引入消抖延迟,程序可以等待一段时间,以确保按钮的状态变化是稳定的,然后再进行后续操作。*/
if (reading != lastButtonState) {//有状态变化
lastDebounceTime = millis(); // 如果reading和lastButtonState不同,则记录当前时间(毫秒)。1000ms/2000ms
}
if ((millis() - lastDebounceTime) > debounceDelay) { // 如果从上一次按钮状态变化到现在的时间超过了消抖延迟时间。
if (reading != buttonState) { // 如果reading和buttonState不同,说明按钮状态真的发生了变化。
buttonState = reading; // 更新buttonState为reading的值。
if (buttonState == HIGH) { // 如果按钮被按下(即buttonState为HIGH)。
ledState = !ledState; // 切换ledState的值,即LED灯的状态。
}
}
}
digitalWrite(ledPin, ledState); // 根据ledState的值,控制LED灯的亮灭。
lastButtonState = reading; // 更新lastButtonState为reading的值,为下一次循环做准备。
}
五、成果展示: