2. 按键控制LED

任务目标

读取按键数字输入状态,按下时点亮LED,松开时熄灭,实现最基本的数字输入控制数字输出。

所需硬件与接线

  • ESP32开发板(本文以ESP32-DevKitC为例)
  • LED一个(串联220Ω限流电阻)
  • 轻触按键一个(建议使用10kΩ下拉电阻)
  • 杜邦线若干
ESP32引脚连接目标
GPIO2LED阳极(阴极接GND,阳极串联220Ω电阻后接GPIO2)
GPIO4按键一端(另一端接3.3V)
GND10kΩ下拉电阻一端(另一端接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闪烁
}

编译与烧录

  1. 安装Arduino IDE并添加ESP32开发板支持(开发板管理器搜索“esp32”安装)。
  2. 在Arduino IDE中选择开发板:工具 → 开发板 → ESP32 Dev Module。
  3. 选择正确的串口端口(工具 → 端口)。
  4. 将上述代码复制到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值或改用硬件消抖电路。
ESP32 DevKitC (俯视图) GPIO2 GPIO4 GND 3.3V 220Ω LED GND 按键 3.3V 10kΩ GND 接线示意图:按键按下→GPIO4=HIGH→LED点亮