ezButton-按钮库

ezButton-按钮库

使用按钮时,初学者通常会遇到以下麻烦:

  • Floating input issue 浮动输入问题
  • Chattering issue 抖动问题
  • Detecting the pressed and released events
    检测按下和释放的事件
  • Managing timestamp when debouncing for multiple buttons
    在多个按钮去抖动时管理时间戳

The ezButton (easy button) library is designed to solve all of the above problems and make it easy to use for not only beginners but also experienced users. It is created by ArduioGetStarted.com.
ezButton(简易按钮)库旨在解决上述所有问题,不仅对初学者而且对有经验的用户都易于使用。它是由 ArduioGetStarted.com 创建的。

The library can be used for push button, momentary switches, toggle switch, magnetic contact switch (door sensor)…
该库可用于按钮、瞬时开关、拨动开关、磁接触开关(门传感器)…

Arduino button library feature

Library Features 库功能

  • Uses the internal pull-up resistor to avoid the floating value
    使用内部上拉电阻器来避免浮点值
  • Supports debounce to eliminate the chattering phenomenon
    支持去抖动,消除抖动现象
  • Supports the pressed and released events
    支持按下和释放事件
  • Supports the counting (for FALLING, RISING and BOTH)
    支持计数(用于 FALLING、RISING 和 BOTH)
  • Easy to use with multiple buttons
    易于使用,带有多个按钮
  • All functions are non-blocking
    所有功能都是非阻塞的

※ NOTE THAT: ※ 注意事项:

How To Install Library 如何安装库

  • Navigate to the Libraries icon on the left bar of the Arduino IDE.
    导航到 Arduino IDE 左侧栏上的 Libraries 图标。

Search “ezButton”, then find the button library by ArduinoGetStarted
搜索“ezButton”,然后通过ArduinoGetStarted找到按钮库

Click Install button to install ezButton library.
单击“安装”按钮以安装 ezButton 库。

Arduino button library

Or you can download it on Github
或者您可以在 Github 上下载它Ezoic

EzoicExamples 例子

  • Example - Single Button
    示例 - 单按钮
  • Example - Single Button Events
    示例 - 单按钮事件
  • Example - Single Button Debounce
    示例 - 单按钮去抖
  • Example - Single Button All
    示例 - 全部单按钮
  • Example - Multiple Button All
    示例 - 多按钮
  • Example - Button Count
    示例 - 按钮计数
  • Example - Button Array
    示例 - 按钮数组

EzoicFunctions 功能

  • `ezButton()``
  • setDebounceTime()
  • getState()
  • getStateRaw()
  • isPressed()
  • isReleased()
  • setCountMode()
  • getCount()
  • resetCount()
  • loop()

References 参考

EzoicezButton()

Description 描述

This function creates a new instance of the ezButton class that represents a particular button attached to your Arduino board.
此函数创建 ezButton 类的新实例,该类表示连接到 Arduino 板的特定按钮。

Syntax 语法

ezButton(pin)

Parameters 参数

pin: int - Arduino’s pin that connects to the button.
pin: int - 连接到按钮的 Arduino 引脚。

Return 返回

A new instance of the ezButton class.
ezButton 类的新实例。

Example 例

ezButton button(7);

setDebounceTime()

Description 描述

This function is used to set the debounce time. The debounce time takes effect on getState(), isPressed(), isReleased() and getCount().
此函数用于设置去抖动时间。去抖动时间对 getState()isPressed()isReleased()getCount() 生效。

Syntax 语法

button.setDebounceTime(time);

Parameters 参数

time: unsigned long - debounce time in milliseconds
时间:无符号长整数 - 去抖动时间(以毫秒为单位)

Return 返回

None 没有

Example 例
#include <ezButton.h>ezButton button(7);  // create ezButton object that attach to pin 7;void setup() {button.setDebounceTime(100); // set debounce time to 100 milliseconds
}void loop() {}

getState()

Description 描述

This function returns the state of the button. If the debounce time is set, the returned state is the state after debouncing. We MUST call button.loop() function before using this function.
此函数返回按钮的状态。如果设置了去抖动时间,则返回的状态是去抖动后的状态。在使用此函数之前,我们必须调用 button.loop() 函数。

Syntax 语法

button.getState();

Parameters 参数

None 没有

Return 返回

The state of button. Since the ezButton library used the internal pull-up resistor, the state will be HIGH (1) when no press, and LOW (0) when pressed. If the debounce time is set, the returned state is the state after debouncing.
按钮的状态。由于ezButton库使用内部上拉电阻,因此不按下时状态为高电平(1),按下时状态为低电平(0)。如果设置了去抖动时间,则返回的状态是去抖动后的状态。

Example 例
#include <ezButton.h>ezButton button(7);  // create ezButton object that attach to pin 7;void setup() {}void loop() {button.loop(); // MUST call the loop() function firstint btnState = button.getState();
}

getStateRaw()

This function returns the current state of the button without debouncing. It is equivalent to digitalRead().
此函数返回按钮的当前状态,而不进行去抖动。它等同于 digitalRead()

Description 描述
Syntax 语法

button.getStateRaw()

Parameters 参数

None 没有

Return 返回

The current state of button without debouncing.
按钮的当前状态,没有去抖动。

Example 例
#include <ezButton.h>ezButton button(7);  // create ezButton object that attach to pin 7;void setup() {}void loop() {int btnState = button.getStateRaw();
}

isPressed()

Description 描述

This function check whether a button is pressed or not. We MUST call button.loop() function before using this function.
此功能检查按钮是否被按下。在使用此函数之前,我们必须调用 button.loop() 函数。

Syntax 语法

button.isPressed()

Parameters 参数

None 没有

Return 返回

true if the button is pressed, false otherwise
如果按下按钮,则为 true,否则为 false

Example 例
#include <ezButton.h>ezButton button(7);  // create ezButton object that attach to pin 7;void setup() {Serial.begin(9600);
}void loop() {button.loop(); // MUST call the loop() function firstif(button.isPressed())Serial.println("The button is pressed");
}

isReleased()

Description 描述

This function check whether a button is released or not. We MUST call button.loop() function before using this function.
此功能检查按钮是否被释放。在使用此函数之前,我们必须调用 button.loop() 函数。

Syntax 语法

button.isReleased()

Parameters 参数

None 没有

Return 返回

true if the button is released, false otherwise
如果释放按钮,则为 true,否则为 false

Example 例
#include <ezButton.h>ezButton button(7);  // create ezButton object that attach to pin 7;void setup() {Serial.begin(9600);
}void loop() {button.loop(); // MUST call the loop() function firstif(button.isReleased())Serial.println("The button is released");
}

setCountMode()

Description 描述

This function sets the count mode.
此函数设置计数模式。

Syntax 语法

button.setCountMode(mode)

Parameters 参数

mode: int - count mode. The available count modes include: COUNT_FALLING, COUNT_RISING and COUNT_BOTH.
mode: int - 计数模式。可用的计数模式包括:COUNT_FALLINGCOUNT_RISINGCOUNT_BOTH

Return 返回

None 没有

Example 例
#include <ezButton.h>ezButton button(7);  // create ezButton object that attach to pin 7;void setup() {Serial.begin(9600);button.setDebounceTime(100); // set debounce time to 100 millisecondsbutton.setCountMode(COUNT_FALLING);
}void loop() {button.loop(); // MUST call the loop() function firstunsigned long count = button.getCount();Serial.println(count);
}

getCount()

Description 描述

This function returns the count value. We MUST call button.loop() function before using this function.
此函数返回计数值。在使用此函数之前,我们必须调用 button.loop() 函数。

Syntax 语法

button.getCount()

Parameters 参数

None. 没有。

Return 返回

The count value. If the debounce time is set, the returned value is the value after debouncing.
计数值。如果设置了去抖动时间,则返回的值为去抖动后的值。

Example 例
#include <ezButton.h>ezButton button(7);  // create ezButton object that attach to pin 7;void setup() {Serial.begin(9600);button.setDebounceTime(100); // set debounce time to 100 millisecondsbutton.setCountMode(COUNT_FALLING);
}void loop() {button.loop(); // MUST call the loop() function firstunsigned long count = button.getCount();Serial.println(count);
}

resetCount()

Description 描述

This function set the counter value to 0.
此函数将计数器值设置为 0。

Syntax 语法

button.resetCount()

Parameters 参数

None. 没有。

Return 返回

None. 没有。

Example 例
#include <ezButton.h>ezButton button(7);  // create ezButton object that attach to pin 7;void setup() {Serial.begin(9600);button.setCountMode(COUNT_FALLING);
}void loop() {button.loop(); // MUST call the loop() function firstunsigned long count = button.getCount();if(count >= 100)button.resetCount();
}

loop() 循环()

loop() 循环()

Description 描述

This function does debounce and updates the state of the button. It MUST be called before using getState(), isPressed(), isReleased() and getCount() functions.
此函数会去抖动并更新按钮的状态。在使用 getState()、isPressed()、isReleased() 和 getCount() 函数之前,必须调用它。

Syntax 语法

button.loop(); button.loop();

Parameters 参数

None 没有

Return 返回

None 没有

## 单个按钮Example

Wiring Diagram

在这里插入图片描述

#include <ezButton.h>ezButton button(7);  // create ezButton object that attach to pin 7;void setup() {Serial.begin(9600);button.setDebounceTime(50); // set debounce time to 50 milliseconds
}void loop() {button.loop(); // MUST call the loop() function firstif(button.isPressed())Serial.println("The button is pressed");if(button.isReleased())Serial.println("The button is released");
}
#include <ezButton.h>ezButton button(7);  // create ezButton object that attach to pin 7;void setup() {Serial.begin(9600);button.setDebounceTime(100); // set debounce time to 100 milliseconds
}void loop() {button.loop(); // MUST call the loop() function firstint btnState = button.getState();Serial.println(btnState);if(button.isPressed())Serial.println("The button is pressed");if(button.isReleased())Serial.println("The button is released");
}

按钮数组

Wiring Diagram

在这里插入图片描述

/** Created by ArduinoGetStarted.com** This example code is in the public domain** Tutorial page: https://arduinogetstarted.com/tutorials/arduino-button-library** This example shows how to use array of button.*/#include <ezButton.h>const int BUTTON_NUM = 5;const int BUTTON_1_PIN = 2;
const int BUTTON_2_PIN = 3;
const int BUTTON_3_PIN = 4;
const int BUTTON_4_PIN = 5;
const int BUTTON_5_PIN = 6;ezButton buttonArray[] = {ezButton(BUTTON_1_PIN),ezButton(BUTTON_2_PIN),ezButton(BUTTON_3_PIN),ezButton(BUTTON_4_PIN),ezButton(BUTTON_5_PIN)
};void setup() {Serial.begin(9600);for (byte i = 0; i < BUTTON_NUM; i++) {buttonArray[i].setDebounceTime(50); // set debounce time to 50 milliseconds}
}void loop() {for (byte i = 0; i < BUTTON_NUM; i++)buttonArray[i].loop(); // MUST call the loop() function firstfor (byte i = 0; i < BUTTON_NUM; i++) {if (buttonArray[i].isPressed()) {Serial.print("The button ");Serial.print(i + 1);Serial.println(" is pressed");}if (buttonArray[i].isReleased()) {Serial.print("The button ");Serial.print(i + 1);Serial.println(" is released");}}
}

多个按钮

Wiring Diagram

在这里插入图片描述

This image is created using Fritzing. Click to enlarge image

Arduino Code

Quick Steps

  • Install ezButton library. See How To
  • Connect Arduino to PC via USB cable
  • Open Arduino IDE, select the right board and port
  • On Arduino IDE, Go to File Examples ezButton 05.MultipleButtonAll example
/** Created by ArduinoGetStarted.com** This example code is in the public domain** Tutorial page: https://arduinogetstarted.com/tutorials/arduino-button-library** This example:*   + uses debounce for multiple buttons.*   + reads state of multiple buttons*   + detects the pressed and released events of multiple buttons*/#include <ezButton.h>ezButton button1(6);  // create ezButton object that attach to pin 6;
ezButton button2(7);  // create ezButton object that attach to pin 7;
ezButton button3(8);  // create ezButton object that attach to pin 8;void setup() {Serial.begin(9600);button1.setDebounceTime(50); // set debounce time to 50 millisecondsbutton2.setDebounceTime(50); // set debounce time to 50 millisecondsbutton3.setDebounceTime(50); // set debounce time to 50 milliseconds
}void loop() {button1.loop(); // MUST call the loop() function firstbutton2.loop(); // MUST call the loop() function firstbutton3.loop(); // MUST call the loop() function firstint btn1State = button1.getState();int btn2State = button2.getState();int btn3State = button3.getState();Serial.print("button 1 state: ");Serial.println(btn1State);Serial.print("button 2 state: ");Serial.println(btn2State);Serial.print("button 3 state: ");Serial.println(btn3State);if(button1.isPressed())Serial.println("The button 1 is pressed");if(button1.isReleased())Serial.println("The button 1 is released");if(button2.isPressed())Serial.println("The button 2 is pressed");if(button2.isReleased())Serial.println("The button 2 is released");if(button3.isPressed())Serial.println("The button 3 is pressed");if(button3.isReleased())Serial.println("The button 3 is released");
}
  • Click Upload button on Arduino IDE to upload code to Arduino

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/29024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

社团管理系统

用Spring Boot、Vue.js和MyBatis实现社团管理系统 温馨提示&#xff1a;项目源代码获取方式见文末 摘要 本文探讨了如何使用Spring Boot作为后端框架&#xff0c;Vue.js作为前端框架&#xff0c;以及MyBatis作为数据库持久层框架&#xff0c;构建一个社团管理系统。该系统旨…

从 PERL 脚本获取输出并将其加载到 MySQL 数据库的解决方案

1、问题背景 有一段 Python 脚本可以调用 Perl 脚本来解析文件&#xff0c;解析后&#xff0c;Perl 脚本会生成一个输出&#xff0c;这个输出将被加载到 Python 脚本中的 MySQL 数据库中。Python 脚本如下&#xff1a; pipe subprocess.Popen(["perl", "./pa…

JSR303校验

校验的需求 前端请求后端接口传输参数&#xff0c;需要校验参数。 在controller中需要校验参数的合法性&#xff0c;包括&#xff1a;必填项校验、数据格式校验等在service中需要校验业务规则&#xff0c;比如&#xff1a;课程已经审核过了&#xff0c;所以提交失败。 servi…

【UML用户指南】-17-对基本行为建模-交互

目录 1、消息的可视化表示 2、对象与角色 3、链和连接件 4、消息 5、序列 6、创建、修改和撤销 7、表示法 8、常用建模技术 8.1、对控制流建模 8.1.1、基于时间的控制流 8.1.2、基于结构的控制流 在任何有意义的系统中&#xff0c;对象都不是孤立存在的&#xff0c;…

Gitlab SSH无法连接但是HTTP可以连接

项目场景&#xff1a; Gitlab在docker中布置好之后测试&#xff0c;发现SSH无法连接但是HTTP可以连接 提示&#xff1a;这是一个无效的源路径 问题描述 http可以识别为git项目&#xff0c;而ssh无法识别成git项目。 原因分析&#xff1a; 三种猜想 端口号被占用 尝试查看…

韩兴国/姜勇团队在《Trends in Plant Science》发表植物根系氮素再分配的观点文章!

氮素是陆地生态系统中的关键限制性营养元素&#xff0c;通过生物固氮和土壤氮供应通常远低高等植物的氮需求。当土壤氮素供应无法充分满足植物茎叶生长需求时&#xff0c;植物会通过自身营养器官&#xff08;如根或根茎&#xff09;再分配来实现氮的内部循环和再利用。尽管植物…

SaaS产品运营|一文讲清楚为什么ToB产品更适合采用PLG模式?

在数字化时代&#xff0c;ToB&#xff08;面向企业&#xff09;产品市场的竞争愈发激烈。为了在市场中脱颖而出&#xff0c;许多企业开始转向PLG&#xff08;产品驱动增长&#xff09;模式。这种模式以产品为核心&#xff0c;通过不断优化产品体验来驱动用户增长和业务发展。本…

RAG未来的出路

总有人喊RAG已死,至少看目前不现实。 持这个观点的人,大多是Long context派,老实说,这派人绝大多数不甚理解长上下文的技术实现点,就觉得反正context越长,越牛B,有点饭圈化 ,当然我并不否认长上下文对提升理解力的一些帮助,就是没大家想的那么牛B而已(说个数据,达到…

2024年ERP软件公司排名前十!

在当今的商业环境中&#xff0c;ERP&#xff08;企业资源规划&#xff09;系统已成为企业日常运营不可或缺的一部分。然而&#xff0c;如何在这众多的ERP系统软件中筛选出最适合自己的一款&#xff0c;成为许多企业共同面临的挑战。今天&#xff0c;我将带大家盘点erp软件公司的…

李沐:用随机梯度下降来优化人生!

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 今天我们来聊聊达叔 6 大核心算法之 —— 优化 算法。吴恩达&#xff1a;机器学习的六个核心算法&#xff01; 梯度下降优化算法是机器…

Java共享台球室无人系统支持微信小程序+微信公众号

共享台球室无人系统 &#x1f3b1; 创新台球体验 近年来&#xff0c;共享经济如火如荼&#xff0c;从共享单车到共享汽车&#xff0c;无一不改变着我们的生活方式。而如今&#xff0c;这一模式已经渗透到了更多领域&#xff0c;共享台球室便是其中之一。不同于传统的台球室&a…

从中概回购潮,看互联网的未来

王兴的饭否语录里有这样一句话&#xff1a;“对未来越有信心&#xff0c;对现在越有耐心。” 而如今的美团&#xff0c;已经不再掩饰对未来的坚定信心。6月11日&#xff0c;美团在港交所公告&#xff0c;计划回购不超过20亿美元的B类普通股股份。 而自从港股一季度财报季结束…

Hue Hadoop 图形化用户界面 BYD

软件简介 Hue 是运营和开发 Hadoop 应用的图形化用户界面。Hue 程序被整合到一个类似桌面的环境&#xff0c;以 web 程序的形式发布&#xff0c;对于单独的用户来说不需要额外的安装。

SBT30100VFCT-ASEMI大功率肖特基SBT30100VFCT

编辑&#xff1a;ll SBT30100VFCT-ASEMI大功率肖特基SBT30100VFCT 型号&#xff1a;SBT30100VFCT 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;30A 最大循环峰值反向电压&#xff08;VRRM&#xff09;&#xf…

服务器----阿里云服务器重启或关机,远程连接进不去,个人博客无法打开

问题描述 在使用阿里云免费的新加坡服务器时&#xff0c;发现重启或者是关机在开服务器后&#xff0c;就会出现远程连接不上、个人博客访问不了等问题 解决方法 进入救援模式连接主机&#xff0c;用户名是root&#xff0c;密码是自己设置的 点击访问博客查看更多内容

AcWing 1273:天才的记忆 ← ST算法求解RMQ问题

【题目来源】https://www.acwing.com/problem/content/1275/【题目描述】 从前有个人名叫 WNB&#xff0c;他有着天才般的记忆力&#xff0c;他珍藏了许多许多的宝藏。 在他离世之后留给后人一个难题&#xff08;专门考验记忆力的啊&#xff01;&#xff09;&#xff0c;如果谁…

CSS选择符和可继承属性

属性选择符&#xff1a; 示例&#xff1a;a[target"_blank"] { text-decoration: none; }&#xff08;选择所有target"_blank"的<a>元素&#xff09; /* 选择所有具有class属性的h1元素 */ h1[class] { color: silver; } /* 选择所有具有hre…

配置文件-基础配置,applicationproperties.yml

黑马程序员Spring Boot2 文章目录 1、属性配置2、配置文件分类3、yaml文件4、yaml数据读取4.1 读取单个数据4.2 读取全部属性数据4.3 读取引用类型属性数据 1、属性配置 SpringBoot默认配置文件application.properties&#xff0c;通过键值对配置对应属性修改配置 修改服务器端…

浏览器必装插件推荐:最新版Simple Allow Copy,解除网页复制限制!

经常在网上找资料的朋友&#xff0c;尤其是学生党&#xff0c;总会遇到一个问题&#xff1a;很多资料网站的文字是禁止复制的。于是大家通常会使用各种文字识别软件来图文转换&#xff0c;或者直接手打。 今天这款小工具&#xff0c;可以轻松复制各种氪金网站上的任何文字&…

视频监控平台:通过网络SDK对TCL网络摄像机进行PTZ控制 的源代码介绍及分享

目录 一、视频监控平台介绍 &#xff08;一&#xff09;概述 &#xff08;二&#xff09;视频接入能力介绍 &#xff08;三&#xff09;功能介绍 二、TCL网络摄像机 &#xff08;一&#xff09;360度全景自动旋转&#xff1a; &#xff08;二&#xff09;高清夜视和全彩…