Arduino关于旋转编码器程序的介绍资料

合集下载

《简易旋转编码器的制作导学案》

《简易旋转编码器的制作导学案》

《简易旋转编码器的制作》导学案导学目标:通过本节课的进修,学生能够了解简易旋转编码器的原理和制作方法,掌握相关的基本知识和技能。

导入引言:旋转编码器是一种常用的传感器,可以用来检测物体的旋转角度和方向。

在平时生活中,我们可以见到很多应用旋转编码器的设备,比如鼠标、遥控器等。

那么,你知道旋转编码器是如何工作的吗?今天我们就来进修一下如何制作一个简易的旋转编码器。

一、原理介绍旋转编码器是一种能够检测旋转运动并将其转换为数字信号的传感器。

它通常由一个旋转部件和一个固定部件组成,当旋转部件转动时,固定部件中的传感器会检测到这种运动并输出相应的信号。

二、制作材料准备1. Arduino开发板2. 旋转编码器模块3. 毗连线4. 电阻5. LED灯三、制作步骤1. 将旋转编码器模块毗连到Arduino开发板上,确保毗连正确无误。

2. 在Arduino开发环境中编写程序,实现旋转编码器的读取功能。

3. 将LED灯毗连到Arduino开发板上,用于显示旋转编码器的工作状态。

4. 调试程序,确保旋转编码器可以正常工作并输出正确的信号。

5. 测试旋转编码器的旋转角度和方向,观察LED灯的亮灭情况。

四、实验效果经过以上步骤的操作,我们可以成功制作出一个简易的旋转编码器,并且能够通过LED灯显示出编码器的工作状态。

通过旋转编码器模块的旋转,我们可以观察到LED灯的亮灭情况,从而了解编码器的工作原理。

五、拓展应用除了LED灯显示外,我们还可以将旋转编码器的信号输出毗连到其他设备上,实现更多的应用。

比如,我们可以将旋转编码器毗连到电机控制器上,用来控制电机的转动速度和方向;或者将旋转编码器毗连到舵机控制器上,用来控制舵机的转向角度。

六、总结反思通过本节课的进修,我们不仅掌握了旋转编码器的工作原理和制作方法,还学会了如何将编码器的信号输出应用到其他设备上。

在今后的进修和实践中,我们可以进一步深入钻研旋转编码器的原理和应用,为自己的创意和实验提供更多可能性。

Arduino教程——旋转编码器

Arduino教程——旋转编码器

Arduino教程——旋转编码器1. 所需的材料旋转编码器(KY-040)Arduino UNO开发板字符型图形点阵液晶1602电位器10k⾯包板2. 连接导线旋转编码器是如何⼯作的?旋转编码器是⼀种机电换能器,意味着它将机械运动转换为电⼦脉冲。

它由旋钮组成,当旋转时,旋钮将逐步移动并产⽣⼀系列脉冲序列,每个步骤具有预定义的宽度。

有许多类型的编码器,每个编码器都有⾃⼰的⼯作机制,稍后我们将了解这些类型,但现在让我们只关注KY040增量编码器,因为我们将它⽤于我们的教程。

编码器的内部机械结构如下所⽰。

它基本上由圆盘(灰⾊)和放置在该圆盘顶部的导电垫(铜⾊)组成。

这些导电焊盘以相同的距离放置,如下所⽰。

输出引脚固定在该圆盘的顶部,这样当旋钮旋转时,导电垫与输出引脚接触。

这⾥有两个输出引脚,输出A和输出B,如下图所⽰。

输出引脚A和输出B产⽣的输出波形分别以蓝⾊和绿⾊显⽰。

当导电焊盘直接位于引脚下⽅时,它会变⾼,导致导通时间,当导电焊盘移开时,引脚变低,导致上⾯所⽰波形的关闭时间。

现在,如果我们计算脉冲数,我们将能够确定编码器移动了多少步。

现在可能会出现这样的问题:当⼀个脉冲信号⾜以计算旋转旋钮时所采取的步数时,为什么我们需要两个脉冲信号。

这是因为我们需要确定旋钮旋转的⽅向。

如果您看⼀下这两个脉冲,您会注意到它们都是90°异相。

因此,当顺时针旋转旋钮时,输出A将⾸先变⾼,当旋钮逆时针旋转时,输出B将⾸先变⾼。

3. 旋转编码器的类型市场上有很多种类型的旋转编码器,设计⼯程师可以根据⾃⼰的应⽤选择⼀种。

最常见的类型如下所⽰增量编码器绝对值编码器磁编码器光学编码器激光编码器这些编码器基于输出信号和传感技术进⾏分类,增量编码器和绝对值编码器基于输出信号进⾏分类,磁、光和激光编码器基于传感技术进⾏分类。

这⾥使⽤的编码器是增量型编码器。

4. KY-040旋转编码器引脚和说明KY-040增量式旋转编码器的引脚分布如下所⽰前两个引脚(接地和Vcc)⽤于为编码器供电,通常使⽤+ 5V电源。

旋转编码器详细讲解

旋转编码器详细讲解

增量式编码器的A.B.Z 编码器A、B、Z相及其关系TTL编码器A相,B相信号,Z相信号,U相信号,V相信号,W相信号,分别有什么关系?对于这个问题的回答我们从以下几个方面说明:编码器只有A相、B相、Z相信号的概念。

所谓U相、V相、W相是指的电机的主电源的三相交流供电,与编码器没有任何关系。

“A相、B相、Z相”与“U相、V相、W相”是完全没有什么关系的两种概念,前者是编码器的通道输出信号;后者是交流电机的三相主回路供电。

而编码器的A相、B相、Z相信号中,A、B两个通道的信号一般是正交(即互差90°)脉冲信号;而Z相是零脉冲信号。

详细来说,就是——一般编码器输出信号除A、B两相(A、B两通道的信号序列相位差为90度)外,每转一圈还输出一个零位脉冲Z。

当主轴以顺时针方向旋转时,输出脉冲A通道信号位于B通道之前;当主轴逆时针旋转时,A通道信号则位于B通道之后。

从而由此判断主轴是正转还是反转。

另外,编码器每旋转一周发一个脉冲,称之为零位脉冲或标识脉冲(即Z相信号),零位脉冲用于决定零位置或标识位置。

要准确测量零位脉冲,不论旋转方向,零位脉冲均被作为两个通道的高位组合输出。

由于通道之间的相位差的存在,零位脉冲仅为脉冲长度的一半。

带U、V、W相的编码器,应该是伺服电机编码器A、B相是两列脉冲,或正弦波、或方波,两者的相位相差90度,因此既可以测量转速,还可以测量电机的旋转方向Z相是参考脉冲,每转一圈输出一个脉冲,脉冲宽度往往只占1/4周期,其作用是编码器自我校正用的,使得编码器在断电或丢失脉冲的时候也能正常使用。

ABZ是编码器的位置信号,UVW是电机的磁极信号,一般用于同步电机; AB对于TTL/HTL编码器来说,AB相根据编码器的细分度不同,每圈有很多个,但Z相每圈只有一个;UVW磁极信号之间相位差是120度,随着编码器的角度转动而转动,与ABZ 之间可以说没有直接关系。

/######################################################## #####编码器A+A-B+B-Z+Z-怎么用分别代表什么意思?这种编码器的输出方式为长线驱动(line driver),其中A+A-B+B-Z+Z-为输出的信号线,增量编码器给出两相方波,它们的相位差90°(电气上),通常称为A通道和B通道。

旋转编码器(音量旋钮)原理、ad接键原理

旋转编码器(音量旋钮)原理、ad接键原理

目的和意义
01
了解旋转编码器(音量旋钮)和AD 接键的工作原理有助于更好地理 解电子设备的工作机制,提高设 备的使用和维护效率。
02
掌握这些原理还有助于进行电子 设备的维修和改造,提高设备的 可靠性和稳定性。
02 旋转编码器(音量旋钮)原 理
旋转编码器概述
旋转编码器是一种光电转换装置,通过测量光束在旋转编码器圆盘上的透射和遮 挡,从而检测旋转角度或位置。
旋转编码器由光源、光敏元件、旋转编码盘、光电检测装置等组成,其中旋转编 码盘是关键部分,通常由玻璃、金属或塑料制成,上面刻有黑白相间的条纹。
旋转编码器的工作原理
当旋转编码器随着轴一起转动时,光束通过旋转编码盘上的 黑白条纹,产生交替的透射和遮挡,光敏元件接收到的光线 强度随之变化,从而输出相应的电信号。
我们详细分析了AD接键的工作机制,发现它是通过模拟信号和数字信号之间的转换来实现的。我们深 入研究了其电路设计、信号处理和性能优化等方面,并对其在实际应用中的表现进行了评估。
对未来研究的建议
进一步优化旋转编码器的性能 ,提高其稳定性和可靠性,以 满足更广泛的应用需求。
探索新型的编码器和接键技 术,以适应不断发展的电子 设备和智能化系统的需求。
视频处理
用于将模拟视频信号转换为数字视频 信号,以便进行数字视频处理、编辑 和录制。
04 旋转编码器与AD接键的 比较
工作原理的比较
旋转编码器
旋转编码器是一种旋转式位置传感器, 通过测量旋转角度来输出相应的电信号 。它通常由一个转轴和一个编码器组成 ,转轴与被测物体相连,编码器则将转 轴的旋转角度转换为电信号。
ABCD
对AD接键的电路设计进行改 进,以提高其信号质量和传输 速度,同时降低功耗和成本。

欧姆龙 旋转编码器

欧姆龙 旋转编码器

旋转式编码器概要旋转式编码器的定义旋转式编码器,是将旋转的机械位移量转换为电气信号,对该信号进行处理后检测位置速度等的传感器。

检测直线机械位移量的传感器称为线性编码器。

特长①根据轴的旋转变位量进行输出通过联合器与轴结合,能直接检测旋转位移量。

;②启动时无需原点复位。

(仅绝对型)绝对型的情况下,将旋转角度作为绝对数值进行并列输出。

③可对旋转方向进行检测。

增量型中可通过A相和B相的输出时间,绝对型中可通过代码的增减来掌握旋转方向。

④请根据丰富的分辨率和输出型号,选择最合适的传感器。

根据要求精度和成本、连接电路等,选择适合的传感器。

原理分类选择要点增量式或绝对式考虑到容许的成本,电源接通时的原点可否恢复、控制速度、耐干扰性等,选择合适的类型。

分解率精度的选择在考虑组装机械装置的要求精度和机械的成本的基础上,选择最适合的产品。

一般选择机械综合精度的1/2~1/4精度的分辨率。

外形尺寸选定时还要考虑安装空间与选定轴的形态(中空轴、杆轴类)。

轴容许负重选定时要考虑到不同安装方法的不同轴负载状态、及机械的寿命等。

容许最大旋转数根据使用时的机械的最大旋转数来选择。

最高响应频率数根据组装机械装置使用时的轴最大旋转数来定。

最大响应频率=(旋转数/60)×分辨率但是,由于实际的信号周期有所波动,所以选定时应针对上述的计算值,来选择留有余度的规格。

保护构造∙根据使用环境中的灰尘、水、油等的程度来选择。

∙仅灰尘:IP50∙还有水、油:IP52(f)、IP64(f)(防滴落、防油)轴的旋转启动转矩驱动源的转矩为多少?输出电路方式选择电路方式时应考虑到连接的后段机器、信号的频率、传送距离、干扰环境等。

长距离传送的情况下,选择线路驱动器输出。

术语解说分辨率轴旋转1次时输出的增量信号脉冲数或绝对值的绝对位置数。

输出相增量型式的输出信号数。

包括1相型(A相)、2相型(A相、B相)、3相(A相、B相、Z相)。

Z相输出1次即输出1次原点用的信号。

单片机操作旋转编码器

单片机操作旋转编码器

.最近做了一个关于旋转编码器的项目,在网上查阅了很多资料,然后又是进行了诸多的实验,分享给大家。

1 旋转编码器原理(借用一下别的文档里的图片)5脚的旋转编码开关具有左转,右转,按下三个功能。

2脚接地,1,3脚接上拉电阻。

4脚,5脚是按下功能的两个脚,可以根据需求自己接线。

检查方向时,通常采用两种做法.的上升沿或下跳沿,在中断程序中,检测此时另外获取(1)中断法:A或B相为高电平一相的电平。

例如上图中,A相上跳沿,相为低电平则为顺时针转动;BB 二者为逆时针方向转动。

不相同时,则能判,BAB)电平法:同时检测A相和相的电平,当出现2 (B相的电平,则能判断出转动的方向。

定发生了转动,根据前一时刻A相和硬件电路2本设计在PIC16单片机上进行开发,采用中断法。

旋转编码开关输出上拉,之后采用RC 滤波器对信号进行先一步滤波,此处的RC滤波器的元器件大小可以适当调整。

中断源采用的是捕捉模块(CCP2)的捕捉中断(外部中断用于别处)。

3 C代码中断响应函数:void interrupt ISR(void){if(CCP2IF){CCP2IF=0;Change();}// 程序中CCP2设置成捕捉下跳沿void Change(){...unsigned int t2=2000;if(RC3)// 高电平{while((!RC1)&&(t2--))//等待RC1的低电平持续完{Delay();}的电平,以确认转动发生if(!RC3)//判断此时RC3{// 增或减操作}else{while((!RC1)&&(t2--))//等待RC1的低电平持续完{Delay();}RC3if(RC3)//判断此时的电平,以确认转动发生{// 增或减操作}}}注意事项:4滤波电路,延迟时间等均需要根据具体的旋转开关进行调整。

一般的单片机程序中,并不建议在中断中添加延迟函数,但应视具体情况而定。

《简易旋转编码器的制作作业设计方案》

《简易旋转编码器的制作作业设计方案》

《简易旋转编码器的制作》作业设计方案一、设计目标本设计旨在帮助学生了解旋转编码器的工作原理,并通过实际操作制作一个简易的旋转编码器,提高学生对电子原理的理解和实践能力。

二、设计原理旋转编码器是一种用于测量旋转角度的传感器,通常由一个旋转轴和两个输出信号组成。

当旋转编码器旋转时,两个输出信号的相位差会发生变化,通过检测相位差的变化可以确定旋转角度。

三、设计材料1. Arduino开发板2. 旋转编码器3. 毗连线4. 电阻5. LED灯四、设计步骤1. 毗连旋转编码器到Arduino开发板,将A相和B置信号分别毗连到数字引脚2和3上。

2. 编写Arduino代码,通过读取A相和B置信号的状态来确定旋转方向和角度,并将结果输出到串口监视器。

3. 将LED灯毗连到Arduino开发板的数字引脚13上,用于指示旋转编码器的工作状态。

4. 通过旋转编码器,观察LED灯的闪烁情况,验证旋转编码器的工作原理。

5. 调整旋转编码器的旋转角度,观察串口监视器的输出结果,确认旋转编码器的准确性。

五、设计评估学生可以通过以下方式评估自己的设计:1. 确认旋转编码器的工作原理是否清晰。

2. 检查Arduino代码是否正确编写,旋转角度是否准确输出。

3. 观察LED灯的闪烁情况,验证旋转编码器的工作状态。

4. 调整旋转编码器的旋转角度,检查串口监视器的输出结果是否符合预期。

六、设计拓展学生可以根据自己的兴趣和能力对设计进行拓展,例如:1. 添加LCD显示屏,实时显示旋转角度。

2. 将旋转编码器与舵机结合,实现旋转角度控制舵机的功能。

3. 设计一个简易的旋转编码器模拟器,帮助其他同砚理解旋转编码器的工作原理。

通过本设计,学生不仅可以掌握旋转编码器的工作原理,还可以提高自己的动手能力和创造力,为将来的进修和工作打下坚实的基础。

单片机操作旋转编码器

单片机操作旋转编码器

.最近做了一个关于旋转编码器的项目,在网上查阅了很多资料,然后又是进行了诸多的实验,分享给大家。

1 旋转编码器原理(借用一下别的文档里的图片)5脚的旋转编码开关具有左转,右转,按下三个功能。

2脚接地,1,3脚接上拉电阻。

4脚,5脚是按下功能的两个脚,可以根据需求自己接线。

检查方向时,通常采用两种做法.的上升沿或下跳沿,在中断程序中,检测此时另外获取(1)中断法:A或B相为高电平一相的电平。

例如上图中,A相上跳沿,相为低电平则为顺时针转动;BB 二者为逆时针方向转动。

不相同时,则能判,BAB)电平法:同时检测A相和相的电平,当出现2 (B相的电平,则能判断出转动的方向。

定发生了转动,根据前一时刻A相和硬件电路2本设计在PIC16单片机上进行开发,采用中断法。

旋转编码开关输出上拉,之后采用RC 滤波器对信号进行先一步滤波,此处的RC滤波器的元器件大小可以适当调整。

中断源采用的是捕捉模块(CCP2)的捕捉中断(外部中断用于别处)。

3 C代码中断响应函数:void interrupt ISR(void){if(CCP2IF){CCP2IF=0;Change();}// 程序中CCP2设置成捕捉下跳沿void Change(){...unsigned int t2=2000;if(RC3)// 高电平{while((!RC1)&&(t2--))//等待RC1的低电平持续完{Delay();}的电平,以确认转动发生if(!RC3)//判断此时RC3{// 增或减操作}else{while((!RC1)&&(t2--))//等待RC1的低电平持续完{Delay();}RC3if(RC3)//判断此时的电平,以确认转动发生{// 增或减操作}}}注意事项:4滤波电路,延迟时间等均需要根据具体的旋转开关进行调整。

一般的单片机程序中,并不建议在中断中添加延迟函数,但应视具体情况而定。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Arduino关于旋转编码器程序的介绍介绍旋转或编码器是一个角度测量装置. 他用作精确测量电机的旋转角度或者用来控制控制轮子(可以无限旋转,而电位器只能旋转到特定位置)。

其中有一些还安装了一个可以在轴上按的按钮,就像音乐播放器的控制按钮。

Some of them are also equipped with a pushbutton when you press on the axis (like the ones used for navigation on many music controllers). 它们的精度多种多样,有每圈16步到1024步的各种,价格也从2到200欧元不等。

我写了一个小例子去读旋转编码器,并且使将读数通过RS232显示。

我们很容易实现当编码器每走一步更新一下计数,并且将它通过串口显示在电脑上(通过串口监视器)。

这个程序在ALPS STEC12E08编码器(每圈有24步)上运行良好。

但是我认为当它使用在一个有更高精度的编码器上时有可能就会失效或者当电机旋转很快,或者你拓展这个程序以适应多个编码器。

请先试试他吧。

我在Arduino distribution(A VRLib的一部分)的encoder.h中学会了怎样操作编码器。

谢谢作者:Pascal Stang,感谢他对每一个函数友好而详细的解释。

如下:Example 1/* Read Quadrature Encoder* Connect Encoder to Pins encoder0PinA, encoder0PinB, and +5V.** Sketch by max wolf / * v. 0.1 - very basic functions - mw 20061220**/int val;int encoder0PinA = 3;int encoder0PinB = 4;int encoder0Pos = 0;int encoder0PinALast = LOW;int n = LOW;void setup() {pinMode (encoder0PinA,INPUT);pinMode (encoder0PinB,INPUT);Serial.begin (9600);}void loop() {n = digitalRead(encoder0PinA);if ((encoder0PinALast == LOW) && (n == HIGH)) {//上升沿if (digitalRead(encoder0PinB) == LOW) {encoder0Pos--;} else {encoder0Pos++;}Serial.print (encoder0Pos);Serial.print ("/");}encoder0PinALast = n;}要注意的几点:encoder0Pos会一直记数,那也就意味着如果电机一直向一个方向进行旋转,那么串口消息会变的很长(最多6个字符),这样的话就会画更多的时间去转换。

你需要保证当encoder0Pos 溢出的时候,在你的PC端不会发生bugs-如果它的值大于INT的最大值(32,767)时,它会突变为-32,768!反之亦然。

改进建议: 仅当上位机需要读数的时候,将计数相加,即只计数发送周期之间的数据。

当然,如果你在loop()中添加更多的代码,或者使用更高精度的编码器,就有可能丢失某一步(少计数)。

更好的解决办法是使用中断(当检测到信号的突变时)。

我上面提到库文件就是这么去做的,但是现在(2006-12) 无法再Arduino环境下编译,或者我不知道怎么去做……。

更深的解释, 包括编码器时序图我对于编码器的时序的原理不怎么确定,但是还是将这些内容添加到这里吧. Paul Badger下图,是编码器A & B两通道的时序图。

下面的描述会更好的解释编码器是怎么运行的。

当代码检测到A通道一个上升沿的时候,他会接着去检查B通道是高电平或者是低电平,因为方向不同,接着它会将计数增加或者减少。

为了检测到波形,编码器必须旋转。

上面代码的优势是,他只检测了关于编码器的一种可能性(共4种分别是检测A(上升沿,下降沿)(B+,B-),检测B(上升沿,下降沿)(A+,A-))。

为了方便解释,不管红色还是绿色虚线标注的变换,都是根据编码器的旋转方向变化而变化的。

中断的例子使用一个中断的例子下面是使用中断的代码. 当Arduino检测到A通道有变化(上升沿或下降沿), 它立刻跳转到“doEncoder”函数, 中断函数会在上升沿和下降沿都会被调用,所以每个一步都会被计两次。

我不想使用另一个中断去检查B通道的2个变换( 上图紫色和青色线标注处),但是即使调用了,也不会很麻烦.使用中断去操作旋转编码器比较不错,因为中断响应时间很快,因为它不用操作很多任务。

I used the encoder as a “mode selector”on a synthesizer made solely from an Arduino chip(译者作者可能是说他将这个旋转编码器用作一个模式选择用途,就是如同按钮形式的东西). 这是一个比较随意的程序,因为用户对单片机丢失一些脉冲并不在意. 中断方法比较重要的应用是在伺服电机或者机器人的轮子上,在这些应用中,单片机不能丢失任何一个脉冲,不然运动的精度就无法保证了。

要注意的另一点是: I used the Arduino’s pullup resistors to “steer”the inputs high when they were not engaged by the encoder. Hence the encoder common pin is connected to ground. (译者作者使用Arduino内部上拉电阻使输入端的常态是高电平,因此编码器的公共端是连接到地上)上面的程序没有提到的一点是:输入端需要串联上拉电阻(10K欧就好),因为编码器的公共端连接是+5V./* read a rotary encoder with interruptsEncoder hooked up with common to GROUND,encoder0PinA to pin 2, encoder0PinB to pin 4 (or pin 3 see below)it doesn't matter which encoder pin you use for A or Buses Arduino pullups on A & B channel outputsturning on the pullups saves having to hook up resistorsto the A & B channel outputs*/#define encoder0PinA 2#define encoder0PinB 4volatile unsigned int encoder0Pos = 0;void setup() {pinMode(encoder0PinA, INPUT);digitalWrite(encoder0PinA, HIGH); // turn on pullup resistorpinMode(encoder0PinB, INPUT);digitalWrite(encoder0PinB, HIGH); // turn on pullup resistorattachInterrupt(0, doEncoder, CHANGE); // encoder pin on interrupt 0 - pin 2Serial.begin (9600);Serial.println("start"); // a personal quirkvoid loop(){// do some stuff here - the joy of interrupts is that they take care of themselves}void doEncoder() {/* If pinA and pinB are both high or both low, it is spinning* forward. If they're different, it's going backward.** For more information on speeding up this process, see* [Reference/PortManipulation], specifically the PIND register.*/if (digitalRead(encoder0PinA) == digitalRead(encoder0PinB)) {encoder0Pos++;} else {encoder0Pos--;}Serial.println (encoder0Pos, DEC);}/* See this expanded function to get a better understanding of the* meanings of the four possible (pinA, pinB) value pairs:*/void doEncoder_Expanded(){if (digitalRead(encoder0PinA) == HIGH) { // found a low-to-high on channel Aif (digitalRead(encoder0PinB) == LOW) { // check channel B to see which way// encoder is turningencoder0Pos = encoder0Pos - 1; // CCW}else {encoder0Pos = encoder0Pos + 1; // CW}}else // found a high-to-low on channel A {if (digitalRead(encoder0PinB) == LOW) { // check channel B to see which way// encoder is turning encoder0Pos = encoder0Pos + 1; // CW}else {encoder0Pos = encoder0Pos - 1; // CCW}}Serial.println (encoder0Pos, DEC); // debug - remember to comment out// before final program run// you don't want serial slowing down your program if not needed}/* to read the other two transitions - just use another attachInterrupt()in the setup and duplicate the doEncoder function into say,doEncoderA and doEncoderB.You also need to move the other encoder wire over to pin 3 (interrupt 1).*/BY:dskv 注意!!!在中断程序中使用Serial.Print要特别注意,大多数情况下它会失败, 但是有时它会成功, 这是个程序比较糟糕的bugs. 下面连接是解释文档:“https:///a//forum/#!topic/developers/HKzEcN6gikM”“/index.php?topic=94459.0”“/node/1188.html”中断例程(编码器中断主线程). 使用两个中断端口读编码器,使用2个中断pin 2 & pin3注意:下面的程序使用两个中断来使用编码器的最高精度(就像步进电机的细分. 上文的程序使用1个中断. 它仅仅读取一半精度,通过检测EncoderPin A的位置,但是它省一个中断程序。

相关文档
最新文档