Arduino爱好者

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: eagler8

[经验] 【Arduino】108种传感器模块系列实验(40)---旋转编码器模块

[复制链接]
发表于 2019-11-9 19:31 | 显示全部楼层
请问 KY040旋转编码器,能通过代码实现自动旋转(顺或逆)功能吗?我查网上都是通过手动旋转实现一些功能,或者有什么模块可以实现这个功能
 楼主| 发表于 2019-11-13 09:11 | 显示全部楼层
zhang13359 发表于 2019-11-9 19:31
请问 KY040旋转编码器,能通过代码实现自动旋转(顺或逆)功能吗?我查网上都是通过手动旋转实现一些功能, ...

实现旋转功能,来带动什么呢?
发表于 2019-11-13 23:10 | 显示全部楼层
eagler8 发表于 2019-11-13 09:11
实现旋转功能,来带动什么呢?

带动门锁,我用5V的28BYJ48步进电机,发现力度差了大概一半,有没有接近这个程度的电机给推荐一下
 楼主| 发表于 2019-11-14 17:25 | 显示全部楼层
zhang13359 发表于 2019-11-13 23:10
带动门锁,我用5V的28BYJ48步进电机,发现力度差了大概一半,有没有接近这个程度的电机给推荐一下 ...

1222222222.jpg

试试这个......
发表于 2019-11-15 11:36 | 显示全部楼层

好的 谢谢!
 楼主| 发表于 2019-11-15 12:26 | 显示全部楼层

不客气,多交流
发表于 2020-2-11 18:04 | 显示全部楼层
不能做到转一格增或减1
 楼主| 发表于 2020-2-11 19:12 | 显示全部楼层
瑞轩 发表于 2020-2-11 18:04
不能做到转一格增或减1

这个可以的

[mw_shl_code=arduino,true]/*
【Arduino】66种传感器模块系列实验(40)
实验四十:360度旋转增量编码器模块(KY-040)
*/

int CLK = 2;
int DT = 3;
int SW = 4;
const int interrupt0 = 0;
int count = 0;
int lastCLK = 0;

void setup()
{
  pinMode(SW, INPUT);
  digitalWrite(SW, HIGH);
  pinMode(CLK, INPUT);
  pinMode(DT, INPUT);
  attachInterrupt(interrupt0, ClockChanged, CHANGE);
  Serial.begin(9600);
}

void loop()
{
  if (!digitalRead(SW) && count != 0)
  {
    count = 0;
    Serial.print("count:");
    Serial.println(count);
  }
}

void ClockChanged()
{
  int clkValue = digitalRead(CLK);
  int dtValue = digitalRead(DT);
  if (lastCLK != clkValue)
  {
    lastCLK = clkValue;
    count += (clkValue != dtValue ? 1 : -1);
    Serial.print("count:");
    Serial.println(count);
  }
}[/mw_shl_code]
 楼主| 发表于 2020-2-11 19:13 | 显示全部楼层
10.jpg

增加
发表于 2020-2-11 22:34 | 显示全部楼层
eagler8 发表于 2020-2-11 19:12
这个可以的

[mw_shl_code=arduino,true]/*

可能我编码器不好用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino爱好者

GMT+8, 2022-11-27 23:54 , Processed in 0.075917 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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