📜  Arduino 旋转编码器 (1)

📅  最后修改于: 2023-12-03 15:13:27.997000             🧑  作者: Mango

Arduino 旋转编码器

简介

旋转编码器是一种传感器,在机械领域中应用非常广泛。它可以测量转动角度和转速等参数,并以数字信号输出。Arduino 旋转编码器连接到Arduino主板上,可以与其他模块联动,实现更加复杂的控制任务。本文将介绍如何使用Arduino旋转编码器进行编程。

材料
  • Arduino主板
  • 旋转编码器
  • 杜邦线
连接

将旋转编码器按照下面的方式连接到Arduino主板上:

  • VCC引脚连接到Arduino的5V电源引脚
  • GND引脚连接到Arduino的GND引脚
  • CLK引脚连接到Arduino的数字引脚2号
  • DT引脚连接到Arduino的数字引脚3号
编程

在Arduino IDE中打开一个新的空白窗口,输入以下代码:

int CLK=2;           //CLK引脚定义
int DT=3;            //DT引脚定义 
volatile int counter=0;  //计数器变量
 
void setup() {
  pinMode(CLK,INPUT_PULLUP); //设置CLK引脚为输入模式
  pinMode(DT,INPUT_PULLUP);  //设置DT引脚为输入模式
  attachInterrupt(0,COUNTER,RISING); //开启中断0,触发方式为上升沿触发中断
  Serial.begin(9600);     //设置串口通信波特率为9600
}
 
void loop() {
  Serial.println(counter); //输出计数器变量到串口监视器
}
 
void COUNTER(){
  if (digitalRead(DT)==HIGH) counter ++; //如果DT引脚为高电平,则计数器加1
  else counter --; //如果DT引脚为低电平,则计数器减1
}

代码解释:

  • CLK和DT定义了编码器输入引脚的接口
  • volatile int counter = 0; 定义计数器,存储旋转编码器的变化次数
  • 在setup()中,将CLK和DT设置输入模式,并将中断0连接到COUNTER函数
  • 在loop()中,将计数器的值输出到串口监视器
  • COUNTER()函数将在旋转编码器发生变化时被调用。如果DT引脚为高电平,计数器将加1,如果DT引脚为低电平,计数器将减1
测试

将Arduino板和旋转编码器连接到电脑上。上传代码后,打开串口监视器,旋转编码器将输出旋转次数或旋转方向信息。

注意事项
  • 在connect中设置了输入模式
  • 中断函数名随意,记住要跟attachInterrupt函数名相同
  • attachInterrupt(0, COUNTER, RISING) 第一个参数表示中断号,nano在0号引脚中有中断0,而UNO则在数字引脚2中有中断0。第二个参数表示中断函数名称
  • 应该在setup() 函数中启动Arduino串行通信来与计算机建立连接。 若程序中没有使用Serial库,则程序会挂掉