首页 > 其他分享 >Arduino 驱动360度旋转传感器(如旋转编码器)

Arduino 驱动360度旋转传感器(如旋转编码器)

时间:2024-07-05 10:59:35浏览次数:21  
标签:编码器 引脚 Arduino 旋转 CLK DT

以下是使用Arduino Uno R3驱动一个360度旋转传感器(如旋转编码器)的详细说明、接线图和代码示例,其中传感器引脚为CLK、DT、SW、+、GND。

所需材料

  • Arduino Uno R3
  • 360度旋转传感器(旋转编码器)
  • 面包板和连接线

接线步骤

  1. 连接旋转传感器
    • 将旋转编码器的CLK引脚连接到Arduino Uno的数字引脚(例如D2)。
    • 将旋转编码器的DT引脚连接到Arduino Uno的数字引脚(例如D3)。
    • 将旋转编码器的SW引脚连接到Arduino Uno的数字引脚(例如D4,如果有按键功能)。
    • 将旋转编码器的+引脚连接到Arduino Uno的5V引脚。
    • 将旋转编码器的GND引脚连接到Arduino Uno的GND引脚。

连接图示

Arduino Uno R3        360度旋转传感器(旋转编码器)
----------------      --------------------------------
D2 (CLK) ----------->  CLK
D3 (DT) ------------>  DT
D4 (SW, 可选) ------>  SW
5V  ---------------->  +
GND ---------------->  GND

示例代码

const int CLK = 2;  // 旋转编码器的CLK引脚连接到D2
const int DT = 3;   // 旋转编码器的DT引脚连接到D3
const int SW = 4;   // 旋转编码器的SW引脚连接到D4(如果有按键功能)

volatile long encoderCount = 0;  // 旋转计数器

void setup() {
  Serial.begin(9600);  // 启动串口通信
  pinMode(CLK, INPUT);
  pinMode(DT, INPUT);
  pinMode(SW, INPUT_PULLUP);  // 如果有按键功能,使用内部上拉电阻
  attachInterrupt(digitalPinToInterrupt(CLK), handleEncoder, CHANGE);  // 设置中断处理函数
}

void loop() {
  // 输出旋转计数器的值
  Serial.print("Encoder count: ");
  Serial.println(encoderCount);

  delay(1000);  // 延迟1秒
}

void handleEncoder() {
  // 中断处理函数,每次CLK信号变化时调用
  if (digitalRead(DT) == digitalRead(CLK)) {
    encoderCount++;
  } else {
    encoderCount--;
  }
}

代码详解

  1. 定义引脚

    • CLK:连接到旋转编码器的CLK引脚(例如D2)。
    • DT:连接到旋转编码器的DT引脚(例如D3)。
    • SW:连接到旋转编码器的SW引脚(例如D4,可选,用于按键功能)。
  2. 初始化

    • setup()函数中,设置数字引脚模式为输入,并启动串口通信以便输出旋转计数器的值。
    • Serial.begin(9600):启动串口通信,波特率为9600。
    • pinMode(CLK, INPUT)pinMode(DT, INPUT):设置CLK和DT引脚为输入。
    • 如果有按键功能,使用pinMode(SW, INPUT_PULLUP)将SW引脚设置为输入,并启用内部上拉电阻。
  3. 中断处理函数

    • handleEncoder()函数用于处理旋转编码器的CLK信号变化。
    • 根据DT引脚的状态变化确定旋转方向,并更新encoderCount计数器。
  4. 输出旋转计数器值

    • loop()函数中,输出旋转计数器的值,以显示旋转角度或位置的变化。
    • 使用Serial.printSerial.println输出计数器值。
  5. 延迟

    • delay(1000):延迟1秒,以便每隔1秒输出一次旋转计数器的值。

总结

以上示例展示了如何使用Arduino Uno R3驱动一个360度旋转传感器(旋转编码器),并通过中断处理函数实时监测和输出旋转计数器的值。这种方法适用于需要准确测量旋转角度或位置的应用。

标签:编码器,引脚,Arduino,旋转,CLK,DT
From: https://www.cnblogs.com/jeikerxiao/p/18285370

相关文章

  • Arduino 驱动激光传感器模块
    以下是使用ArduinoUnoR3驱动激光传感器模块的详细说明、接线图和代码示例。激光检测模块所需材料ArduinoUnoR3激光传感器模块(例如KY-008激光发射模块)面包板和连接线接线步骤连接激光传感器:将激光传感器模块的S引脚(信号引脚)连接到ArduinoUno的数字引脚(例如D2)。将......
  • Arduino 驱动U型光电传感器模块
    以下是使用ArduinoUnoR3驱动U型光电传感器模块的详细说明、接线图和代码示例。检测物品所需材料ArduinoUnoR3U型光电传感器模块面包板和连接线接线步骤连接U型光电传感器:U型光电传感器一般有发射管和接收管两个部分。将U型光电传感器的输出引脚(通常标记为OUT或DO......
  • Arduino 驱动红外寻迹模块
    以下是使用ArduinoUnoR3驱动红外寻迹模块的详细说明、接线图和代码示例。所需材料ArduinoUnoR3红外寻迹模块(例如TCRT5000)面包板和连接线接线步骤连接红外寻迹模块:红外寻迹模块通常有一个发射器和一个接收器。将红外寻迹模块的VCC引脚连接到ArduinoUno的5V引脚。......
  • 02-Arduino程序
    基本框架voidsetup(){//putyoursetupcodehere,torunonce:}voidloop(){//putyourmaincodehere,torunrepeatedly:}PINMODE:pinMode()函数:pinMode(脚位,工作模式);pinMode()函数可以将Arduino的引脚配置成三种模式:输出模式(OUTPUT)——使用引脚......
  • HarmonyOS Next开发学习手册——旋转屏动画增强
    在原旋转屏动画基础上,可配置渐隐和渐现的转场效果。完整的代码示例和效果如下。//xx.etsimport{display}from'@kit.ArkUI';@Entry@Componentstructrotation{@StorageLink('orientation')myOrientation:display.Orientation=display.Orientation.PORTR......
  • 153. 寻找旋转排序数组中的最小值(中等)
    153.寻找旋转排序数组中的最小值1.题目描述2.详细题解3.代码实现3.1Python3.2Java1.题目描述题目中转:153.寻找旋转排序数组中的最小值2.详细题解  如果不考虑O(......
  • 151.翻转字符串里的单词 卡码网:55.右旋转字符串
    151.翻转字符串里的单词卡码网:55.右旋转字符串 151.翻转字符串里的单词题目链接:151.反转字符串中的单词-力扣(LeetCode) Code:classSolution{public:  stringreverseWords(strings){​    //单词级翻转,而不是单词内翻转  ​......
  • Arduino 驱动烟雾传感器模块
    以下是使用ArduinoUnoR3驱动烟雾传感器模块的详细说明、接线图和代码示例。所需材料ArduinoUnoR3烟雾传感器模块(例如MQ-2)面包板和连接线接线步骤供电和地线连接:将ArduinoUno的5V引脚连接到烟雾传感器模块的VCC引脚。将ArduinoUno的GND引脚连接到烟雾传感器模块......
  • Arduino 驱动火焰传感器模块
    以下是使用ArduinoUnoR3驱动火焰传感器模块的详细说明、接线图和代码示例。所需材料ArduinoUnoR3火焰传感器模块面包板和连接线接线步骤供电和地线连接:将ArduinoUno的5V引脚连接到火焰传感器模块的VCC引脚。将ArduinoUno的GND引脚连接到火焰传感器模块的GND引......
  • Arduino 驱动模拟温度传感器模块
    以下是使用ArduinoUnoR3驱动模拟温度传感器模块的详细说明、接线图和代码示例。所需材料ArduinoUnoR3模拟温度传感器模块(例如LM35)面包板和连接线接线步骤供电和地线连接:将ArduinoUno的5V引脚连接到模拟温度传感器模块的VCC引脚。将ArduinoUno的GND引脚连接到模......