当前位置: 首页 > news >正文

Arduino EC11编码器驱动库使用示例介绍

Arduino EC11编码器驱动库使用示例介绍


  • 📘EC11驱动库:Versatile_RotaryEncoder
    在这里插入图片描述
🔖通过EC11编码器驱动库,可以很轻松实现EC11编码器的功能使用。包括EC11编码器的基本功能正反旋转调节,单击、双击、长按功能。
  • 📺功能演示效果:
    在这里插入图片描述
  • 🌿测试对象:ESP8266

📗EC11编码器原理图

  • 🍁EC11编码器部分的原理图:
    在这里插入图片描述

📝驱动示例代码

#include <Versatile_RotaryEncoder.h>// SET READING PINS ACCORDINGLY TO YOUR ENCODER TO BOARD CONNECTIONS
// Set here your encoder reading pins (Ex.: EC11 with breakout board)
#define clk D5  // esp8266 gpio 14 ->D5  -- EC11-B如果旋转方向相反,与EC11-A对调接线
#define dt D6   // esp8266 gpio 12 ->D6  -- EC11-A
#define sw D7   // esp8266 gpio 13 ->D7 --EC11-M 编码器按压键// Functions prototyping to be handled on each Encoder Event
void handleRotate(int8_t rotation);
void handlePressRotate(int8_t rotation);
void handleHeldRotate(int8_t rotation);
void handlePress();
void handleDoublePress();
void handlePressRelease();
void handleLongPress();
void handleLongPressRelease();
void handlePressRotateRelease();
void handleHeldRotateRelease();// Create a global pointer for the encoder object
Versatile_RotaryEncoder *versatile_encoder;void setup() {Serial.begin(9600);versatile_encoder = new Versatile_RotaryEncoder(clk, dt, sw);// Load to the encoder all nedded handle functions here (up to 9 functions)versatile_encoder->setHandleRotate(handleRotate);versatile_encoder->setHandlePressRotate(handlePressRotate);versatile_encoder->setHandleHeldRotate(handleHeldRotate);versatile_encoder->setHandlePress(handlePress);versatile_encoder->setHandleDoublePress(handleDoublePress);//versatile_encoder->setHandleDoublePress(nullptr); // Disables Double Pressversatile_encoder->setHandlePressRelease(handlePressRelease);versatile_encoder->setHandleLongPress(handleLongPress);versatile_encoder->setHandleLongPressRelease(handleLongPressRelease);versatile_encoder->setHandlePressRotateRelease(handlePressRotateRelease);versatile_encoder->setHandleHeldRotateRelease(handleHeldRotateRelease);Serial.println("Ready!");// set your own defualt values (optional)// versatile_encoder->setInvertedSwitch(true); // inverts the switch behaviour from HIGH to LOW to LOW to HIGH// versatile_encoder->setReadIntervalDuration(1); // set 2ms as long press duration (default is 1ms)// versatile_encoder->setShortPressDuration(35); // set 35ms as short press duration (default is 50ms)// versatile_encoder->setLongPressDuration(550); // set 550ms as long press duration (default is 1000ms)// versatile_encoder->setDoublePressDuration(350); // set 350ms as double press duration (default is 250ms)}void loop() {// Do the encoder reading and processingif (versatile_encoder->ReadEncoder()) {// Do something here whenever an encoder action is read}}// Implement your functions here accordingly to your needsvoid handleRotate(int8_t rotation) {Serial.print("#1 Rotated: ");if (rotation > 0)Serial.println("Right");elseSerial.println("Left");
}void handlePressRotate(int8_t rotation) {Serial.print("#2 Pressed and rotated: ");if (rotation > 0)Serial.println("Right");elseSerial.println("Left");
}void handleHeldRotate(int8_t rotation) {Serial.print("#3 Held and rotated: ");if (rotation > 0)Serial.println("Right");elseSerial.println("Left");
}void handlePress() {Serial.println("#4.1 Pressed");
}void handleDoublePress() {Serial.println("#4.2 Double Pressed");
}void handlePressRelease() {Serial.println("#5 Press released");
}void handleLongPress() {Serial.println("#6 Long pressed");
}void handleLongPressRelease() {Serial.println("#7 Long press released");
}void handlePressRotateRelease() {Serial.println("#8 Press rotate released");
}void handleHeldRotateRelease() {Serial.println("#9 Held rotate released");
}

相关文章:

  • 深度学习模型:GAN(生成对抗网络)
  • 苹果笔记本MacBook电脑怎么卸载软件?三种方法快速卸载软件
  • C++逆向分析--虚函数(多态的前置)
  • 【Midjourney】绘画风格关键词
  • Python编程 从入门到实践(项目二:数据可视化)
  • Docker 配置 Gitea + Drone 搭建 CI/CD 平台
  • jQuery取整(Math.floor()、Math.ceil() 、 parseInt() )
  • Spring Boot 项目的创建和启动
  • LeetCode 刷题总结 【未完待续】
  • 应用案例:Ruff工业设备数据采集,为生产制造企业数字化转型赋能
  • 工厂方法模式-C#实现
  • 浮点数在内存中存储
  • 【mongoDB】文档 CRUD
  • VR漫游:赋予用户720度身临其境的沉浸式体验
  • 体验华为云对话机器人服务 CBS
  • Flex布局到底解决了什么问题
  • mongodb--安装和初步使用教程
  • Python学习之路13-记分
  • React Transition Group -- Transition 组件
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • sublime配置文件
  • 编写高质量JavaScript代码之并发
  • 从零开始学习部署
  • 从重复到重用
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 通过git安装npm私有模块
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 《天龙八部3D》Unity技术方案揭秘
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 湖北分布式智能数据采集方法有哪些?
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (Python) SOAP Web Service (HTTP POST)
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (论文阅读40-45)图像描述1
  • (三)uboot源码分析
  • (转)程序员疫苗:代码注入
  • ***测试-HTTP方法
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .bashrc在哪里,alias妙用
  • .form文件_SSM框架文件上传篇
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET开发人员必知的八个网站
  • .net开发时的诡异问题,button的onclick事件无效
  • /3GB和/USERVA开关
  • @Builder用法
  • @ConfigurationProperties注解对数据的自动封装
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @media screen 针对不同移动设备
  • @ModelAttribute 注解
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解