一、硬件介绍
Arduino 开发板
Arduino 是一款开源电子原型平台,具备易用性高、扩展性强等特点。以常见的 Arduino Uno 板为例,它拥有数字引脚和模拟引脚。数字引脚可用于输入输出信号,在本项目中用于连接模拟按键和 LED 灯。其通过 USB 接口与电脑相连,实现数据传输与供电功能,还设有电源接口等,为外接设备提供稳定工作电压。
杜邦线
杜邦线是电子实验中常用的连接线,颜色多样,便于区分线路。在本项目里,杜邦线用于连接 Arduino 开发板引脚与模拟按键(通过接地模拟按键按下)、LED 灯,实现电路导通与信号传输。
LED 灯
LED 即发光二极管,是能将电能转化为可见光的半导体器件。本项目使用的是小功率 LED 灯,具有单向导电性,需串联合适阻值的限流电阻(一般 220Ω 左右 ),防止因电流过大烧毁。
二、硬件连接图(Fritzing 绘制)
图中,一根杜邦线一端接 Arduino 开发板数字引脚 2,另一端接开发板 GND 引脚,模拟按键按下接地状态;另一根杜邦线一端接数字引脚 3,另一端经 220Ω 限流电阻接 LED 灯正极,LED 灯负极接开发板 GND 引脚,完成硬件连接搭建。
三、代码展示
const int buttonPin = 2; // 按键连接的引脚
const int ledPin = 3; // LED连接的引脚
int buttonState = HIGH; // 初始按键状态设为高电平(按键未按下时的状态)
int lastButtonState = HIGH; // 上一次的按键状态
unsigned long debounceDelay = 50; // 消抖延时
unsigned long lastDebounceTime = 0; // 上次消抖的时间
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // 将按键引脚设置为输入上拉模式
pinMode(ledPin, OUTPUT); // 将LED引脚设置为输出模式
digitalWrite(ledPin, LOW); // 初始时LED灯熄灭
Serial.begin(9600); // 初始化串口,用于调试(可选)
}
void loop() {
int reading = digitalRead(buttonPin); // 读取按键引脚的状态
if (reading != lastButtonState) {
lastDebounceTime = millis(); // 更新消抖时间
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == LOW) {
digitalWrite(ledPin,!digitalRead(ledPin)); // 按下按键时,切换LED灯的状态
}
}
}
lastButtonState = reading;
}
代码解释
- 变量定义:定义
buttonPin
(按键连接引脚)、ledPin
(LED 连接引脚) 。buttonState
记录当前按键状态,初始为高电平(按键未按下) ,lastButtonState
记录上一次按键状态 。debounceDelay
为消抖延时,lastDebounceTime
记录上次消抖时间,用于软件消抖。 - setup 函数:将
buttonPin
设为输入上拉模式,按键未按下时引脚为高电平,按下时为低电平;ledPin
设为输出模式,控制 LED 灯亮灭,初始设置 LED 灯熄灭 。Serial.begin(9600)
初始化串口,用于调试(可按需保留 )。 - loop 函数:读取按键引脚状态
reading
。状态不同时更新消抖时间lastDebounceTime
。距离上次消抖时间超debounceDelay
(50ms )时,检查按键状态。若变为低电平(按键按下 ),通过digitalWrite(ledPin,!digitalRead(ledPin))
切换 LED 灯状态 。最后更新上一次按键状态lastButtonState
。