esp32开发与应用(按键输入)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

按键输入是一个基本操作。大家如果手上只有esp32的裸板和一根usb线,看上去做不了按键输入。但其实不用担心,因为esp32上面就有一个按键。对,就是那个boot键。正常情况下,这个boot按键适用于下载版本的,但是当前我们用不到,所以就可以拿来做按键输入。

1、按键输入是基础

很多的电子设备由于成本的原因,用不上屏幕,更谈不上触摸屏。这种情况下,按键就是很好的选择。哪怕是用屏幕,可能也是那种几块钱的oled屏幕,纯粹解决一个显示有无的问题,谈不上有多好的体验。这种情况下,按键就派上用场了。

2、按键的长按和短按

这两种方式在按键比较少的时候,会同时出现。一般小于1s,都是短按;大于3s,就是长按。

3、按键+状态机

按键加上状态机,基本上就是标配。大家留心一下,就会很多时候看到一个mode按键,这个mode不停切换的时候,就会对应不同的状态。当然除了mode按键,有的时候还会有向上、向下、确认等按键。当然不同的按键,在不同mode下,功能也是不一样的,这一点需要注意下。

4、按键有上拉和下拉两种

注意上拉的时候,按下去的时候,输入为1;如果是下拉的时候,按下去的时候,输入为0。这就是两者的差别。

5、示例代码

示例代码其实是比较简单的,基本上找一下ai就可以生成。我们所需要做的,就是看懂ai生成的代码、在esp-idf编译、串口烧入即可。接着就是配合printf打印,看看按下去的时候,是不是打印真的会发生变化即可。做到这一点,后面进行功能开发的时候,就可以把按键输入加到项目当中去了。

复制代码
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"

// Define BOOT button pin (BOOT button on ESP32 dev board is usually connected to GPIO0)
#define BOOT_BUTTON_PIN GPIO_NUM_0
static int cnt = 0;

void app_main(void)
{
    // Configure GPIO0 as input mode with internal pull-up resistor enabled
    gpio_config_t io_conf = {
        .pin_bit_mask = (1ULL << BOOT_BUTTON_PIN),
        .mode = GPIO_MODE_INPUT,
        .pull_up_en = GPIO_PULLUP_ENABLE,   // Enable pull-up resistor
        .pull_down_en = GPIO_PULLDOWN_DISABLE,
        .intr_type = GPIO_INTR_DISABLE      // Disable interrupt
    };
    gpio_config(&io_conf);
    
    printf("ESP32 BOOT button detection program started\n");
    
    while (1) {
        // Read button state (pressed state is LOW due to pull-up resistor)
        int button_state = gpio_get_level(BOOT_BUTTON_PIN);
        
        if (button_state == 0) {
            printf("BOOT button pressed, %d!\n", ++cnt);
        }else{
            printf("BOOT button released, %d!\n", ++cnt);
        }
        
        vTaskDelay(100 / portTICK_PERIOD_MS); // Delay for 100ms
    }
}
相关推荐
福建佰胜张工16 分钟前
深度解析 Allen-Bradley 150-B135NBDA 智能电机控制器:选型、参数与工业应用
运维·数据库·单片机·嵌入式硬件·安全·自动化
secondyoung16 分钟前
Cortex-R52与TriCore详细对比
arm开发·单片机·嵌入式硬件·mcu
送外卖的工程师28 分钟前
STM32仓库环境监测系统
stm32·单片机·嵌入式硬件
2501_922639581 小时前
率能半导体 SS6840单通道H桥驱动芯片:42V/7A,覆盖打印机、办公自动化、机器人、工业缝纫机四大应用场景
stm32·单片机·嵌入式硬件·硬件工程
电子科技圈1 小时前
芯科科技2026年Tech Talks技术系列讲座再增添全新主题共探无线SoC架构演进与安全合规
科技·嵌入式硬件·mcu·物联网·安全·架构·iot
NYFEA2 小时前
跨协议桥接与高精度传感:我们的接口芯片如何连接物理世界?
嵌入式硬件
Zhao136824553913 小时前
DP4330A 与DP4363 测试对比
嵌入式硬件
辛迪聊物业数字化3 小时前
智慧社区小程序落地避坑指南:3类物业方案选型+成本测算,线上服务零翻车
大数据·嵌入式硬件·百度·系统架构
电子科技圈3 小时前
Arm电机控制开发工具哪家强?
arm开发·单片机·嵌入式硬件·设计模式·软件构建
JasmineX-14 小时前
下位机直接控制57步进电机匀速转动
stm32·单片机·嵌入式硬件