2. 按键控制LED
任务目标
读取按键数字输入状态,按下时点亮LED,松开时熄灭,实现最基本的数字输入控制数字输出。
所需硬件与接线
- ESP32开发板(本文以ESP32-DevKitC为例)
- LED一个(串联220Ω限流电阻)
- 轻触按键一个(建议使用10kΩ下拉电阻)
- 杜邦线若干
| ESP32引脚 | 连接目标 |
|---|---|
| GPIO2 | LED阳极(阴极接GND,阳极串联220Ω电阻后接GPIO2) |
| GPIO4 | 按键一端(另一端接3.3V) |
| GND | 10kΩ下拉电阻一端(另一端接GPIO4) |
说明:GPIO4通过10kΩ电阻下拉到GND,按键按下时GPIO4被拉高到3.3V,松开时恢复低电平。GPIO2为高电平时LED点亮。
完整代码
// 按键控制LED - ESP32 Arduino框架
const int ledPin = 2; // LED连接到GPIO2
const int buttonPin = 4; // 按键连接到GPIO4
void setup() {
pinMode(ledPin, OUTPUT); // LED引脚设为输出
pinMode(buttonPin, INPUT); // 按键引脚设为输入(外部下拉电阻)
Serial.begin(115200);
}
void loop() {
int buttonState = digitalRead(buttonPin); // 读取按键状态
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH); // 按下:点亮LED
Serial.println("Button pressed - LED ON");
} else {
digitalWrite(ledPin, LOW); // 松开:熄灭LED
Serial.println("Button released - LED OFF");
}
delay(50); // 简单消抖,避免按键抖动导致LED闪烁
}
编译与烧录
- 安装Arduino IDE并添加ESP32开发板支持(开发板管理器搜索“esp32”安装)。
- 在Arduino IDE中选择开发板:工具 → 开发板 → ESP32 Dev Module。
- 选择正确的串口端口(工具 → 端口)。
- 将上述代码复制到Arduino IDE编辑器中,点击上传按钮编译并烧录到ESP32。
验证方法
- 烧录成功后,打开Arduino IDE的串口监视器(波特率115200)。
- 按下按键,观察LED应点亮,串口监视器输出
Button pressed - LED ON。 - 松开按键,LED应熄灭,串口监视器输出
Button released - LED OFF。 - 通过条件:每次按下/松开按键,LED状态与串口输出均与按键动作一致,且无异常闪烁。
常见问题
- LED不亮:检查LED正负极是否接反,GPIO2是否被其他功能占用(部分开发板GPIO2连接板载LED,不影响使用)。
- 按键无反应:确认下拉电阻连接正确,GPIO4没有虚接;若使用内部上拉模式(INPUT_PULLUP),需将按键另一端接GND并反转逻辑。
- LED闪烁不稳定:增大delay值或改用硬件消抖电路。