第3课:第一个ESP32程序 - LED闪烁与按键中断
在本课程中,您将学习如何编写第一个ESP32程序,包括:
使用Arduino IDE创建一个新项目,输入以下代码:
// 定义LED引脚
#define LED_PIN 2
void setup() {
// 初始化LED引脚为输出模式
pinMode(LED_PIN, OUTPUT);
}
void loop() {
// 点亮LED
digitalWrite(LED_PIN, HIGH);
// 延时1秒
delay(1000);
// 熄灭LED
digitalWrite(LED_PIN, LOW);
// 延时1秒
delay(1000);
}
首先,我们实现一个简单的按键检测(轮询方式):
#define BUTTON_PIN 0
#define LED_PIN 2
void setup() {
pinMode(BUTTON_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
}
void loop() {
if (digitalRead(BUTTON_PIN) == LOW) {
// 按键按下(假设是上拉电路)
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
}
更高效的方式是使用中断,ESP32支持GPIO中断:
#include "driver/gpio.h"
#define BUTTON_PIN GPIO_NUM_0
#define LED_PIN GPIO_NUM_2
// 中断处理函数
void IRAM_ATTR button_isr_handler(void* arg) {
// 切换LED状态
gpio_set_level(LED_PIN, !gpio_get_level(LED_PIN));
}
void setup() {
// 配置LED引脚
gpio_pad_select_gpio(LED_PIN);
gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT);
// 配置按键引脚
gpio_pad_select_gpio(BUTTON_PIN);
gpio_set_direction(BUTTON_PIN, GPIO_MODE_INPUT);
gpio_set_pull_mode(BUTTON_PIN, GPIO_PULLUP_ONLY);
// 配置中断
gpio_set_intr_type(BUTTON_PIN, GPIO_INTR_NEGEDGE); // 下降沿触发
gpio_install_isr_service(0); // 安装GPIO ISR服务
gpio_isr_handler_add(BUTTON_PIN, button_isr_handler, NULL); // 添加中断处理函数
}
void loop() {
// 主循环可以空置或执行其他任务
delay(1000);
}
IRAM_ATTR 确保中断处理函数放在IRAM中执行,提高响应速度gpio_set_intr_type 设置中断触发类型(上升沿、下降沿等)gpio_isr_handler_add 注册中断处理函数
客服小姐姐(优先添加)
讲师微信(备用)