国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

玩轉(zhuǎn) ESP32 + Arduino(二十六) 按鍵控制庫 OneButton

發(fā)布者:leader5最新更新時間:2025-04-02 來源: jianshu關(guān)鍵字:ESP32  Arduino 手機看文章 掃描二維碼
隨時隨地手機看文章

非常簡單的一個庫, 也非常好玩

安裝:

一. 用法

首先引入頭文件



#include 'OneButton.h'

實例化一個OneButton對象



OneButton button(PIN_INPUT, true);

里面可以傳三個參數(shù):


pin : 按鈕的pin角


activeLow :  true:按下為低電平 false : 按下為高電平


pullupActive : 如果有上拉電阻就激活上拉電阻


愉快的使用

為對象綁定單擊/雙擊/長按事件的回調(diào),  單擊/雙擊/長按等操作會觸發(fā)這些回調(diào)


二. 相關(guān)API

1. 關(guān)聯(lián)單擊事件 button.attachClick


void OneButton::attachClick(callbackFunction newFunction)

2. 關(guān)聯(lián)雙擊事件 button.attachDoubleClick


void OneButton::attachDoubleClick(callbackFunction newFunction)

3. 關(guān)聯(lián)長按開始事件 button.attachLongPressStart


void OneButton::attachLongPressStart(callbackFunction newFunction)

4. 關(guān)聯(lián)長按結(jié)束事件 button.attachLongPressStop


void OneButton::attachLongPressStop(callbackFunction newFunction)

5. 關(guān)聯(lián)長按期間事件 button.attachDuringLongPress


void OneButton::attachDuringLongPress(callbackFunction newFunction)

6. 注意按鍵就觸發(fā),不管單擊雙擊還上長按 button.attachPressStart

而且是按下持續(xù)觸發(fā)



void OneButton::attachPressStart(callbackFunction newFunction)

7. 獲取按鍵時長 button.getPressedTicks


int OneButton::getPressedTicks()

8. 獲取按鍵現(xiàn)在是否被長按 button.isLongPressed


bool OneButton::isLongPressed()

9. 清空按鈕狀態(tài)機 button.reset


void OneButton::reset()

10. 設(shè)置單擊時長  button.setClickTicks

單位毫秒



void OneButton::setClickTicks(int ticks)

11. 設(shè)置消抖時長 button.setDebounceTicks

單位毫秒



void OneButton::setDebounceTicks(int ticks)

12. 設(shè)置長按最短時長 button.setPressTicks

如果不夠時長,會被認(rèn)為是單擊



void OneButton::setPressTicks(int ticks)

13. 按鍵掃描


void OneButton::tick()

三. 測試觸發(fā)程序

由于我的板子按鍵接了0腳, 當(dāng)下載程序時, 會把0腳拉低, 所以每次下完程序, 這個測試程序一直在觸發(fā)長按, 其實是硬件0腳下程序時拉低引起的. 接別的腳沒這個問題, 如果遇到這個問題, 下載完程序后把單片機斷電再通電就可以了



#include #include 'OneButton.h'#define PIN_INPUT 0OneButton button(PIN_INPUT, true);void doubleclick(){

  Serial.println('doubleclick');}void click(){

  Serial.println('click');}void longPressStart(){

  Serial.println('longPressStart');}void duringLongPress(){

  if (button.isLongPressed())

  {

    Serial.print('duringLongPress:');

    Serial.println(button.getPressedTicks());

    delay(50);

  }}void longPressStop(){

  Serial.println('longPressStop');}void attachPressStart(){

  Serial.println('attachPressStart');

  Serial.println(digitalRead(PIN_INPUT));}void setup(){

  Serial.begin(115200);

  button.reset();//清除一下按鈕狀態(tài)機的狀態(tài)

  button.attachClick(click);

  button.attachDoubleClick(doubleclick);

  button.attachLongPressStart(longPressStart);

  button.attachDuringLongPress(duringLongPress);

  button.attachLongPressStop(longPressStop);

  button.attachPressStart(attachPressStart);//按下鍵就會持續(xù)觸發(fā)}void loop(){

  button.tick();

  delay(10);}

四. 案例

單擊快閃一下


雙擊慢閃兩下


長按開關(guān)燈



#include #include 'OneButton.h'#define PIN_INPUT 0#define PIN_LED 2OneButton button(PIN_INPUT, true);void doubleclick(){

  for (size_t i = 0; i < 4; i++)

  {

    digitalWrite(PIN_LED, !digitalRead(PIN_LED));

    delay(300);

  }}void click(){

  Serial.println('click');

  for (size_t i = 0; i < 2; i++)

  {

    digitalWrite(PIN_LED, !digitalRead(PIN_LED));

    delay(100);

  }}void longclick(){

  Serial.println('longclick');

  digitalWrite(PIN_LED, !digitalRead(PIN_LED));

  if (digitalRead(PIN_LED))

    Serial.println('start');

  else

    Serial.println('end');}void setup(){

  Serial.begin(115200);

  pinMode(PIN_LED, OUTPUT);

  button.attachClick(click);

  button.attachDoubleClick(doubleclick);

  button.attachLongPressStart(longclick);}void loop(){

  button.tick();

  delay(10);}


關(guān)鍵字:ESP32  Arduino 引用地址:玩轉(zhuǎn) ESP32 + Arduino(二十六) 按鍵控制庫 OneButton

上一篇:玩轉(zhuǎn) ESP32 + Arduino(二十七) ESP對象
下一篇:玩轉(zhuǎn) ESP32 + Arduino (二十五) SSD1306庫驅(qū)動OLED

推薦閱讀最新更新時間:2025-07-01 21:14

ESP32學(xué)習(xí)筆記(18)——光強度GY-30(BH1750)使用
一、簡介 BH1750FVI 是一種用于兩線式串行總線接口的數(shù)字型光強度傳感器集成電路。這種集成電路可以根據(jù)收集的光線強度數(shù)據(jù)來調(diào)整液晶或者鍵盤背景燈的亮度。利用它的高分辨率可以探測較大范圍的光強度變化。 傳感器特點: 支持I2CBUS接口 接近視覺靈敏度的光譜靈敏度特性 輸出對應(yīng)亮度的數(shù)字值 對應(yīng)廣泛的輸入光范圍。(相當(dāng)于1-65535lx) 通過降低功率功能,實現(xiàn)低電流化。 通過50Hz/60Hz除光噪音功能實現(xiàn)穩(wěn)定的測定。 支持1.8v邏輯輸入接口。 無需其他外部件。 光源依賴性弱。 有兩種可選的I2Cslave地址。 可調(diào)的測量結(jié)果影響較大的因素為光入口大小。 使用這種功能計算1.1lx到100
[單片機]
ESP32學(xué)習(xí)筆記(25)——OTA(空中升級)接口使用(簡化API)
一、概述 ESP32應(yīng)用程序可以在運行時通過Wi-Fi或以太網(wǎng)從特定的服務(wù)器下載新映像,然后將其閃存到某些分區(qū)中,從而進行升級。 在ESP-IDF中有兩種方式可以進行空中(OTA)升級: 使用 app_update 組件提供的原生API 使用 esp_https_ota 組件提供的簡化API,它在原生OTA API上添加了一個抽象層,以便使用HTTPS協(xié)議進行升級。 分別在 native_ota_example 和 simple_ota_example 下的OTA示例中演示了這兩種方法。 1.1 OTA工作流程 1.2 OTA數(shù)據(jù)分區(qū) ESP32 SPI Flash 內(nèi)有與升級相關(guān)的(至少)四個分區(qū):OTA data
[單片機]
ESP32學(xué)習(xí)筆記(44)——SD卡使用(SPI方式)
一、簡介 SD 卡(Secure Digital Memory Card) 在我們生活中已經(jīng)非常普遍了,控制器對 SD 卡進行 讀寫通信操作一般有兩種通信接口可選,一種是 SPI 接口,另外一種就是 SDIO 接口。 SDIO 全稱是安全數(shù)字輸入/輸出接口,多媒體卡(MMC)、SD 卡、SD I/O 卡都有 SDIO 接口。 MMC 卡可以說是 SD 卡的前身,現(xiàn)階段已經(jīng)用得很少。 二、API說明 以下 SD SPI 主機接口位于 driver/include/driver/sdspi_host.h。 2.1 SDSPI_HOST_DEFAULT SDSPI_HOST_DEFAULT() SD over SPI 驅(qū)動程序的默認(rèn)
[單片機]
瑞薩對話Arduino:開源硬件正獲得企業(yè)級青睞
Arduino 的用戶群不斷多元化,已不止業(yè)余愛好者,越來越多的企業(yè)級應(yīng)用正在采用 瑞薩電子 1000 萬美元的投資使 Arduino 能夠推出 Uno R4,它將處理元件從 8 位提升到 32 位,性能大幅提升 這一進步加速了 Arduino 在企業(yè)級的應(yīng)用普及 瑞薩電子合作伙伴證明 Arduino 不僅僅適合周末 DIY 愛好者 瑞薩電子最近與 Arduino 首席執(zhí)行官 Fabio Violante 進行了座談,討論了開源開發(fā)環(huán)境如何隨著用戶群的擴大而不斷發(fā)展。 此次談話發(fā)生在瑞薩電子向 Arduino 投資 1000 萬美元(3200 萬美元 B 輪融資的一部分)一年多之后。 這項投資還使 Arduino
[嵌入式]
瑞薩對話<font color='red'>Arduino</font>:開源硬件正獲得企業(yè)級青睞
使用TTP223和Arduino UNO通過觸摸控制家庭燈
在某些應(yīng)用程序中,需要用戶輸入來控制設(shè)備的功能。 嵌入式 和 數(shù)字電子 產(chǎn)品 中使用了不同種類的用戶輸入方法。觸摸 傳感器 就是其中之一。觸摸傳感器是與 微控制器 接口 的重要且廣泛使用的輸入設(shè)備,它使輸入數(shù)據(jù)更簡單。觸摸傳感器有個別地方可以使用,無論是 手機 還是液晶顯示器開關(guān)。然而,市場上有許多類型的傳感器可用,但 電容 式觸摸傳感器是觸摸傳感器領(lǐng)域中廣泛使用的類型。 在這個項目中,相同的觸摸傳感器將與 Arduino UNO 接口。Arduino 是一種廣受歡迎且易于使用的開發(fā)板。 觸摸傳感器 將用于本項目的觸摸傳感器是電容式觸摸傳感器模塊,傳感器 驅(qū)動器 基于驅(qū)動器 IC TTP223。TTP223 IC 的工作電壓為
[嵌入式]
使用TTP223和<font color='red'>Arduino</font> UNO通過觸摸<font color='red'>控制</font>家庭燈
AVR開發(fā) Arduino方法(六) 內(nèi)存子系統(tǒng)
  Arduino UNO R3主處理器ATMega328P的芯片內(nèi)部擁有3種存儲器:數(shù)據(jù)存儲器,程序存儲器和電可擦寫可編程存儲器;它們各自有不同的用途。 1. 數(shù)據(jù)存儲器   數(shù)據(jù)存儲器是一塊2KB大小的靜態(tài)隨機存儲器(SRAM)。其中一部分空間分配給了通用寄存器和I/O寄存器,其余部分一般用于存儲全局變量,堆棧數(shù)據(jù)和支持動態(tài)內(nèi)存分配。它的存取速度快,但掉電后數(shù)據(jù)會丟失。 2. 程序存儲器   程序存儲器是一塊32KB大小的閃存(Flash),其中0.5KB用于引導(dǎo)程序。它可以多次擦寫,掉電后數(shù)據(jù)不會丟失,一般用于存儲程序。 3. 電可擦可編程只讀存儲器   電可擦寫可編程只讀存儲器(EEPROM)是一塊1KB大小的
[單片機]
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved