前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

arduino——编码器示例

qiguaw 2024-12-04 14:45:40 资源文章 27 ℃ 0 评论

KY-040旋转编码器模块

操作

旋转编码器提供两种交互方式:

  • 每次用户旋转旋钮时,都会在 DT 和 CLK 引脚上产生低电平信号:
  • 顺时针旋转会先使CLK引脚变为低电平,然后DT引脚也变为低电平。
  • 逆时针旋转会使 DT 引脚首先变为低电平,然后 CLK 引脚变为低电平。

示例

代码

#define ENCODER_CLK 2
#define ENCODER_DT 3
void setup() {
Serial.begin(115200);
pinMode(ENCODER_CLK, INPUT);
pinMode(ENCODER_DT, INPUT);
}
int lastClk = HIGH;
void loop() {
int newClk = digitalRead(ENCODER_CLK);
if (newClk != lastClk) {
// CLK别针上有变化
lastClk = newClk;
int dtValue = digitalRead(ENCODER_DT);
if (newClk == LOW && dtValue == HIGH) {
Serial.println("Rotated clockwise ?");
}
if (newClk == LOW && dtValue == LOW) {
Serial.println("Rotated counterclockwise ?");
}
}
}

代码解析

您可以通过检查CLK引脚的状态来读取旋转。每当它变为低电平时,读取DT引脚的值以确定方向:高表示顺时针旋转,低表示逆时针旋转。
1.

int newClk = digitalRead(ENCODER_CLK);
if (newClk != lastClk)

获取CLK引脚状态,有变化进入打印循坏

2.

int dtValue = digitalRead(ENCODER_DT);

获取DT引脚状态
3.

if (newClk == LOW && dtValue == HIGH) //顺时针旋转
if (newClk == LOW && dtValue == LOW)//逆时针旋转

每当它变为低电平时,读取DT引脚的值以确定方向:高表示顺时针旋转,低表示逆时针旋转。

结束

一个人需要以清醒的心智和从容的步履度过这虚虚实实的岁月

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表