【史上最全面esp32教程】OneButton库的使用(一)


前言

在ESP32的开发过程中,我们经常会遇到需要使用按钮进行交互的情况。然而,按钮的使用并不总是那么直观,特别是当我们需要识别单击、双击或长按等不同的按钮事件时。这时,OneButton库就派上了用场。


OneButton库简介

OneButton库是一个为Arduino设计的库,它可以改善单个按钮的输入使用。这个库能够检测一些典型的按钮按压事件,如单击、双击和长时间按压。这使得我们可以重复使用同一个按钮进行多种功能,从而降低硬件投资。

OneButton库的使用非常简单,只需要包含头文件,然后实例化一个OneButton对象,就可以开始使用了。此外,该库还提供了一些方法,如setDebounceTicks设置去除抖动间隔,setClickTicks设置单击检测间隔,setPressTicks设置长按检测间隔,以及attachClick绑定点击响应方法,attachDoubleClick绑定双击响应方法等。

OneButton的使用

OneButtonTiny

对于较为简单的按键检测,我们可以使用OneButtonTiny,当然,你可以直接使用OneButtonOneButtonTiny我们可以在文件->示例->OneButton->BlinkMachine找到他

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用 OneButton.h 可以很方便地实现按键的长按和短按功能。下面是一个简单的示例代码,演示了如何使用来检测按键的状态: ```C++ #include <OneButton.h> // 定义按键引脚 #define BUTTON_PIN 2 // 创建一个 OneButton 对象 OneButton button(BUTTON_PIN, true); void setup() { // 初始化串口 Serial.begin(9600); // 设置按键长按和短按的时间阈值(单位为毫秒) button.setClickTicks(100); button.setPressTicks(1000); // 绑定按键短按和长按的回调函数 button.attachClick(clickHandler); button.attachLongPressStart(longPressStartHandler); button.attachLongPressStop(longPressStopHandler); } void loop() { // 处理按键事件 button.tick(); } // 按键短按的回调函数 void clickHandler() { Serial.println("Short press detected."); } // 按键长按开始的回调函数 void longPressStartHandler() { Serial.println("Long press started."); } // 按键长按结束的回调函数 void longPressStopHandler() { Serial.println("Long press stopped."); } ``` 在上面的代码中,我们首先定义了按键的引脚。然后创建了一个 OneButton 的对象,并设置了按键长按和短按的时间阈值。接着,我们绑定了按键短按和长按的回调函数,这些函数将在相应的事件发生时被调用。最后,在主循环中调用 `button.tick()` 处理按键事件即可。 需要注意的是,`OneButton.h` 使用了 `attachInterrupt()` 函数来检测按键状态,因此在使用时需要根据实际情况选择正确的引脚。同时,由于 Arduino 的 `loop()` 函数是一个无限循环,因此需要使用 `button.tick()` 来驱动按键事件的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人才程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值