旋转编码器就是这个东西,正转和反转以及按下动作。英文叫Encoder

主要参考文章:https://www.cnblogs.com/watson8544/p/5454086.html,比论文有用多了。

旋转编码器的电路图如下,网上抄的,我也不懂。

大概A和B就是正反转,4和5就是按下动作。

用万能表测了LCD12864与mega2560的连接脚我数是 33 35 37 ,但实际上37好像是蜂鸣器,按 31、33、35定义则对应了,(1-31,3-33,5-35)

百度有好多旋转编码器的文章,有用一个中断,也有用二个中断,也有直接用D引脚作识别,但最有用的文章是上面这篇,其它的文章都没有深入认识到旋转编码器。仅凭万通用表对这旋转编码器的检测,导致认识不足,估计要示波器。

借用人家的描述,这段话是精髓,要好好理解:旋转编码器可以一直旋轉,旋轉一整周被分為20小格,正轉逆轉皆可,當轉動時,CLK腳位就會呈低電位,此時可讀取DT資料腳位,若為HIGH代表正轉,LOW代表逆轉;SW則是開關腳位,轉軸可被按下改變此腳位的狀態。另外+需接正電源,GND接地。

走了二天的弯路,过程不多说了。核心部分,需要使用一个中断,直接使用D引脚作编码识别,比较难识别准确。

引脚对应的中断如下:

板子型号 int.0 int.1 int.2 int.3 int.4 int.5
Uno, Ethernet 2 3        
Mega2560 2 3 21 20 19 18
32u4 based (e.g Leonardo, Micro) 3 2 0 1 7

Mega2560关于31 33 35引脚没有中断,可短接引脚,或者程序复制引脚状态,百度搜不出。

我自己试了开始是

#define interrupt 21 //可中断引脚,对应中断值为2pinMode(interrupt,OUTPUT);if(digitalRead(31)) {digitalWrite(interrupt,HIGH);}else{digitalWrite(interrupt,LOW);}

在执行的时候,有点延时造成不准确。

想了想改成这样

pinMode(interrupt,OUTPUT);digitalWrite(interrupt,digitalRead(CLK)); //直接赋值到可中断引脚  

然后真的可以了。(DUE 全部引脚都可以中断,)

全部亲测程序如下(mega2560+Reprap LCD12864)

#define SERIAL_BAUDRATE 115200
#define CLK 31 // 定义连接脚位
#define DT 33
#define SW 35  //按下
#define interrupt 21 //可中断引脚,对应中断值为2unsigned long previousMillis = 0;
int encoderPos =0;void setup() {// put your setup code here, to run once:pinMode(CLK, INPUT_PULLUP); // 输入模式并启用内建上拉电阻pinMode(DT, INPUT_PULLUP); pinMode(SW, INPUT_PULLUP); attachInterrupt(2, test1, FALLING); //中断,调用test1程序Serial.begin(SERIAL_BAUDRATE);
}void loop() {// put your main code here, to run repeatedly:pinMode(interrupt,OUTPUT);digitalWrite(interrupt,digitalRead(CLK)); //直接赋值到可中断引脚  }void test1(){//unsigned long temp = millis();if(millis() - previousMillis < 50) // 防动作过快{return;}previousMillis =millis();//DT的状态代表正转和反转encoderPos += digitalRead(DT) == HIGH ? 1 : -1;Serial.println(encoderPos);}

在这困了二天,有需要的朋友自己领悟了。

我要做一个蠕动泵的工作记录(二)做一个arduino 多级菜单(2)旋转编码器相关推荐

  1. 记录一个菜鸡的大一立项:做一个跑步打卡APP

    记录一个菜鸡的大一立项:做一个跑步打卡APP(///▽///) 1. 思路: 2. 具体功能: [ 记录跑步时间.距离] [ 跑步计划制定] [ 跑步路程追踪] [ 跑步信息记录 ] [ 校园景点介绍 ...

  2. Java生成doc文档二(做一个简单的封面)

    在上一篇博客中,我们提到了三个重要的概念,下面来就来实际做一个word文档的封面. 我们创建的是Maven项目,添加两个Maven依赖如下: <dependencies><depen ...

  3. 想做一个成功的女性,首先要做一个好女人

    第一,我觉得一个好女人,一个真正最后通过一生的努力能够达到一个目标的女人,她是一个幸福的女人.所以说我觉得要做一个好女人.做一个幸福的女人,首先是要做一个有爱的女人. 因为只有爱她才是生命的核心,才是 ...

  4. 对一个即将上线的网站,如何做一个较完整的Web应用/网站测试?

    Web应用,也叫做网站,相对于客户端应用来说,Web应用无需单独安装,在浏览器上即可使用其功能. web应用的主要开发流程如下: 在网站开发的整个流程中,测试验收是上线发布前的最后一个环节,测试是否到 ...

  5. 同r做一个窗口_怎样在触摸屏上做一个自定义的弹出窗口?

    在触摸屏的应用中,一些故障.警告等提示信息通常是使用系统的报警窗口来实现.系统的报警窗口通常只有故障/警告的编号.日期时间及报警信息等内容,并且可以被折叠.这种千篇一律的报警窗口有时候并不能满足项目的 ...

  6. 用python编写一个点餐程序_用python做一个点餐系统,热敏打印机怎么连?

    做一个局域网内的点餐系统 一台服务器(启动点餐系统的),一台路由器,一台平板电脑,一个热敏打印机. 流程是:服务器启动点餐系统,服务器连着路由器Wi-Fi,平板电脑连着路由器Wi-Fi,那么平板电脑通 ...

  7. 老男孩Day1作业(二):编写多级菜单

    要求:编写多级菜单 1.三级菜单 2.可依次进入各子菜单 3.菜单能够回到上一级 4.用到知识点:字典.列表.多层循环.函数 1)编写思路 编写思路参考下面GitHub链接中的流程图 https:// ...

  8. 工作记录二: 记录一次简单的SQL优化过程

    在工作时, 和同事一起遇到了一个关于SQL优化方面的问题, 现在将解决过程记录如下 项目缺陷描述 项目分析思路 首先F12进入开发者模式, 查看最费时的请求 然后利用restful风格接口工具集( R ...

  9. 管理案例:一个日本小老板的工作记录

    < DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> ------一个小老板某 ...

最新文章

  1. 运行一段时间后,RestTemplate请求报400错误
  2. 为什么需要权重初始化(weight initialization)?常见的权重初始化方式有哪些?启发式权重初始化的好处?
  3. pfSense修改PPPoE拨号总数
  4. 一个批量停止和启动服务的工具
  5. mysql fio测试_MySQL Hardware--FIO压测
  6. Jupyter Notebook 入门指南
  7. ReviewForJob——最小生成树(prim + kruskal)源码实现和分析
  8. 5000字权威指南分享!企业如何正确制定 IT 战略及其路线图
  9. php redis list llen,redis llen list 命令简介
  10. 误差理论实际应用公式
  11. 关于Decision in process状态时间变化的解释
  12. 第一百六十天 how can I 坚持
  13. 乐谱xml文件转为VOCALOID3的输入文件格式vsqx
  14. 易基因|RNA m6A甲基化测序(MeRIP-seq)技术介绍
  15. net bios支持服务器,禁用NetBIOS巧妙解决网络不通故障
  16. Android TextView字体样式设置
  17. hdmi接口有什么用_显示器有哪些接口?DP、HDMI、VGA、DVI有什么区别?
  18. bat批处理删除日志文件
  19. python广告点击率预测_推荐系统中的点击率预估 – Advertising Recommendation
  20. HTML页面防止表单重复提交

热门文章

  1. vue项目中使用到的 git 指令 (github)
  2. 聚划算客户端2期总结
  3. 鄙视链是一种怪圈现象,那么IT行业也存在鄙视链吗?
  4. 五步教你如何注册一个公司网站
  5. 手机桌面上的计算机为什么不能删除,桌面上的东西删不掉怎么办 桌面上的东西删不掉解决方法...
  6. LaTeX 关于缩进的设置取消默认的段落前的首行缩进
  7. 基于AutoDock进行全局分子对接筛选结合位点
  8. MindManager中文汉化补丁V2021.20思维导图软件
  9. iPhone录音转文字识别率高达96%,录音转文字在线转换的方法
  10. C++/MFC串口应用总结(232/485)