ESP32 教程 9/55 - 使用按钮切换LED,按下开,按下关 - SunFounder ESP32 物联网套件
在本教程中,我们将学习如何使用ESP32微控制器通过按钮来控制LED的开关。该项目将演示如何读取按钮的状态并相应地控制LED。当按钮被按下时,LED将点亮,松开时,LED将熄灭。这是使用ESP32进行许多交互式项目的基础概念。
ESP32是一款功能强大的微控制器,内置Wi-Fi和蓝牙功能,适用于各种物联网应用。在本课中,我们将使用SunFounder ESP32入门套件中的ESP32(该套件包含电阻和LED等基本组件)来搭建一个简单的电路。有关接线和代码的详细说明,请参考视频(视频中00:00处)。
硬件说明
该项目的主要组件包括ESP32微控制器、按钮、LED和电阻。ESP32作为项目的核心,根据按钮的状态控制LED。按钮允许用户与电路交互,而LED则在按钮被按下时提供视觉反馈。
按钮的工作原理是:按下时闭合电路,使电流流通。此操作会向ESP32的指定输入引脚发送高电平信号,该信号可在代码中读取。连接到按钮的电阻确保按钮未被按下时引脚具有确定的状态,防止出现异常行为。
带电阻的按钮
接线说明
要搭建电路,首先将LED的较长引脚(阳极)连接到220欧姆电阻。将电阻的另一端连接到ESP32上的GPIO引脚26。LED的较短引脚(阴极)应连接到地线。接下来,取按钮,将一侧连接到板上的3.3V电源。按钮的另一侧连接到GPIO引脚14。
不带电阻的按钮
不带电阻的按钮
带电阻的按钮
带电阻的按钮
此外,在GPIO引脚14和地线之间放置一个10k欧姆电阻,以确保按钮未被按下时引脚读取为低电平。最后,将ESP32的地线连接到面包板上的公共地线。此设置将使ESP32能够读取按钮状态并相应地控制LED。
代码示例与讲解
程序的核心首先使用常量定义按钮和LED的引脚编号。这确保了引脚分配在程序执行过程中保持不变。
// 设置引脚编号
const int buttonPin = 14; // 按钮引脚
const int ledPin = 26; // LED引脚
在setup()函数中,我们初始化串行监视器,并将按钮引脚设置为输入,同时将LED引脚配置为输出。这使ESP32能够从按钮读取状态并控制LED。
void setup() {
Serial.begin(115200);
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
在loop()函数内部,程序持续读取按钮状态并将其打印到串行监视器。如果按钮被按下,LED点亮;否则,LED熄灭。此逻辑对于根据按钮状态切换LED至关重要。
void loop() {
buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
delay(100);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
此基本功能使LED能够直接响应按钮。有关项目的更多详细信息和完整代码,请参考提供的视频(视频中14:00处)。
演示/预期效果
接线完成并上传代码后,按下按钮应点亮LED,松开按钮则LED熄灭。此行为确认按钮状态被正确读取。如果LED未按预期响应,请检查接线并确保按钮正常工作。
测试期间,请务必观察串行监视器上的按钮状态读数。按下按钮时应看到“1”,松开时应看到“0”。如果读数意外波动,可能表明存在接线问题,或需要在代码中添加额外的消抖逻辑。
视频时间戳
- 00:00 开始
- 1:48 项目介绍
- 3:10 开关和按钮说明
- 7:19 接线说明
- 12:25 按钮的Arduino代码说明
- 15:56 选择ESP32开发板和COM端口
- 17:38 项目演示
- 18:33 项目二:切换和LED
- 19:09 切换LED的Arduino代码
- 21:16 切换LED的演示
图像
Push button with resistor
Push button with resistor
Push button without resistor
Push button without resistor
Push button with resistor
Push button with resistor
Push button with resistor
Push button without resistor
Push button without resistor
Push button with resistor
808-ESP32 Tutorial 9/55 - Arduino code push button
语言: C++
/*
* 设置引脚编号
*/
const int buttonPin = 14; // 按钮针
const int ledPin = 26; // LED引脚
// 用于存储按钮状态的变量
int buttonState = 0;
void setup() {
Serial.begin(115200);
// 将按钮引脚初始化为输入。
pinMode(buttonPin, INPUT);
// 将LED引脚初始化为输出模式
pinMode(ledPin, OUTPUT);
}
void loop() {
// 读取按钮值的状态
buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
delay(100);
// 如果按钮被按下
if (buttonState == HIGH) {
// 打开LED
digitalWrite(ledPin, HIGH);
} else {
// 关闭LED灯
digitalWrite(ledPin, LOW);
}
}