
编码器是一种将旋转位移转换为一连串数字脉冲信号的旋转式传感器,通过旋转可以计数正方向和反方向转动过程中输出脉冲的次数,旋转计数不像电位计,这种转动计数是没有限制的。配合旋转编码器上的按键,可以实现某些特定功能。读数系统通常采用差分方式,即将两个波形一样但相位差为 180°的不同信号进行比较,以便提高输出信号的质量和稳定性。编码器广泛用于汽车音量、空调调节等应用场景。

| 引脚名称 | 描述 |
|---|---|
| G | GND(电源输入负极) |
| V | VCC(电源输入正极) |
| SW | 开关引脚 |
| DT | 数据引脚 |
| CLK | 时钟引脚 |
供电电压:3.3V / 5V
连接方式:PH2.0端子线
安装方式:双螺丝固定

示例程序:点击下载
volatile int lastCLK;
volatile int count;
void attachInterrupt_fun_RISING_2() {
procedure();
}
void procedure() {
int clkstate = digitalRead(2);
int dtstate = digitalRead(A2);
if (lastCLK != clkstate) {
lastCLK = clkstate;
}
count = count + ((clkstate != dtstate)?1:(-1));
Serial.println(count);
}
void setup(){
lastCLK = 0;
count = 0;
Serial.begin(9600);
pinMode(2, INPUT);
attachInterrupt(digitalPinToInterrupt(2),attachInterrupt_fun_RISING_2,RISING);
pinMode(A1, OUTPUT);
digitalWrite(A1,HIGH);
pinMode(A2, INPUT);
}
void loop(){
//编码器CLK接扩展板D2,dt引脚接A2,sw引脚接A1
if (digitalRead(A1) == 0) {
count = 0;
Serial.println(count);
}
}
示例程序:点击下载

准备配件:
电路接线图:

视频教程:点击查看

通过实验效果分析,旋转编码器是一个无限制旋转的,顺时针旋转计数自加,逆时针旋转计数自减,按下旋转编码器按钮计数归零。如上图:打开Mxily串口监视器,转动旋转编码器旋钮, 串口输出数值。