1. 概述
本模块主要由旋转编码器组成,它可通过旋转可以计数正方向和反方向转动过程中输出脉冲的次数,这种转动计数是没有限制的,复位到初始状态,即从0开始计数。模块自带2个定位孔,方便你将模块固定在其他设备。
2. 规格参数
工作电压:3.3-5V(DC)
接口:5PIN接口
输出信号:数字信号
重量:6.4g
3. 连接图
4. 测试代码
const int interruptA = 0; //中断0就是在数字口2
const int interruptB = 1;//中断1就是在数字口3
int CLK = 2; // 定义数字口2
int DAT = 3; // 定义数字口3
int BUTTON = 4; // 定义数字口4
int LED1 = 5; // 定义数字口5
int LED2 = 6; // 定义数字口6
void setup()
{
attachInterrupt(interruptA, RoteStateChanged, FALLING);
// 当数字口2由高电平变为低电平时,触发中断。
pinMode(CLK, INPUT);//设置CLK为输入
digitalWrite(2, HIGH); // 设置数字口2为高电平
pinMode(DAT, INPUT); //设置DAT为输入
digitalWrite(3, HIGH); //设置数字口3为高电平
pinMode(BUTTON, INPUT); //设置BUTTON为输入
digitalWrite(4, HIGH); //设置数字口4为高电平
pinMode(LED1, OUTPUT);//设置LED1为输出
pinMode(LED2, OUTPUT);//设置LED1为输出
Serial.begin(9600); //设置波特率
}
void loop()
{
if (digitalRead(BUTTON)==LOW)//当数字口4为低电平时
{
COUNT = 0; //设置数字变量COUNT为0
Serial.println(“STOP COUNT = 0”);//显示对于内容
digitalWrite(LED1, LOW);//LED1变暗
digitalWrite(LED2, LOW);//LED2变暗
delay (2000);//延迟2S
}
Serial.println(COUNT);//显示COUNT数据
}
void RoteStateChanged() //当数字口2由高电平变为低电平时
{
if (digitalRead(DAT)==HIGH) // 当数字口3为高电平时
{
COUNT++;//数字变量COUNT加1
digitalWrite(LED1, HIGH);//LED1亮起
digitalWrite(LED2, LOW);//LED2变暗
delay(200);//延迟0.2S
}
else
{
COUNT–;//数字变量COUNT减1
digitalWrite(LED2, HIGH);//LED2亮起
digitalWrite(LED1, LOW);//LED1变暗
delay(200);//延迟0.2S
}
}
5. 测试结果
按照上图接好线,烧录好代码,上电后,我们可以通过旋转旋转编码器,可以随意控制两个数字白色 LED 模块的亮灭。