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) {
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引脚状态,有变化进入打印循坏
int dtValue = digitalRead(ENCODER_DT);
获取DT引脚状态 3.
if (newClk == LOW && dtValue == HIGH) //顺时针旋转
if (newClk == LOW && dtValue == LOW)//逆时针旋转
每当它变为低电平时,读取DT引脚的值以确定方向:高表示顺时针旋转,低表示逆时针旋转。
结束
一个人需要以清醒的心智和从容的步履度过这虚虚实实的岁月
|