极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12315|回复: 4

旋转编码器学习笔记

[复制链接]
发表于 2015-6-30 17:13:44 | 显示全部楼层 |阅读模式
参考阿莫的sword_yang的文章“单片机在音响上的应用(一)旋转编码器的解码”了解了这种旋转编码器的原理。



元件与上述类似。

两相分别在两边,中间的可上拉也可下拉,本人用的上拉。接通为低电平,断开为高电平。

程序一,只使用其中一相,接7号口。
int inAPin = 7;
int aPreStatus;
int count = 0;

void setup() {
  pinMode(7, INPUT);
  pinMode(13, OUTPUT);
  aPreStatus = digitalRead(inAPin);
  Serial.begin(9600);
  Serial.println(count);
}

void loop() {
  if (digitalRead(inAPin)==0) // current pressed
  {
    if (aPreStatus == 1) // previous not pressed
    {
      count++;
      Serial.println(count);
    }
    aPreStatus = 0;
  }
  else
    aPreStatus = 1;
}

调试通过。

程序2,7、8号口分别接两相。
int inAPin = 7;
int inBPin = 8;
int aPreStatus;
int count = 0;

void setup() {
  pinMode(7, INPUT);
  pinMode(8, INPUT);
  pinMode(13, OUTPUT);
  aPreStatus = digitalRead(inAPin);
  Serial.begin(9600);
  Serial.println(count);
}

void loop() {
  if (digitalRead(inAPin)==0) // current pressed
  {
    if (aPreStatus == 1) // previous not pressed
    {
      if (digitalRead(inBPin)) count++; // U can change this with count--
      else count--;
      Serial.println(count);
    }
    aPreStatus = 0;
  }
  else
    aPreStatus = 1;
}
调试通过。


现在有一个问题是,开始的时候我用程序一来调试,只是线接得不对,左接地,中接A,右接B,程序运行后,计数器不断增加,还没想明白是怎么原理。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-6-30 17:36:19 | 显示全部楼层
为啥不用中断或者脉宽捕获功能呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-30 19:39:42 | 显示全部楼层
PINKWALKMAN 发表于 2015-6-30 17:36
为啥不用中断或者脉宽捕获功能呢?

脉宽捕获是inpulse那个么?

可以用中断,先写个不用中断的看看可不可行。

后来看了,有时是有反复的,比如向一个方向转的话,有的时候会跳回去一两个数字,不知道怎么解决。

如果用中断的方法,也会遇到反复的问题,应该。
回复 支持 反对

使用道具 举报

发表于 2016-1-18 04:04:07 | 显示全部楼层
楼主,感谢您的文章!  但有个小问题, 您能解释一下第二个程序的  if (digitalRead(inBPin)) count++;
      else count--;  是什么原理吗?怎么通过他控制码盘方向的???
回复 支持 反对

使用道具 举报

发表于 2016-1-18 20:55:19 | 显示全部楼层
本帖最后由 艰苦奋斗 于 2016-1-18 20:58 编辑

有个第三方编码器库,用起来非常简便,如果用两个外部中断口,可以用来给减速电机编码,详见:http://www.pjrc.com/teensy/td_libs_Encoder.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 18:57 , Processed in 0.049742 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表