首页 > 解决方案 > 如何使用旋转编码器控制 HID 设备?

问题描述

我的目标是为我的 Windows 10 PC 创建一个小型开关面板。我正在使用 Arduino Micro 来运行我的程序。我想使用数字旋转编码器来控制操纵杆输入。我想在顺时针转动编码器时按调高音量,逆时针转动时按调低音量来控制音量

#include <Joystick.h>

#define outputA 2
#define outputB 3


int counter = 0;
int aState;
int aLastState;

void setup() {
  Joystick.begin();
  pinMode(2, INPUT);
  pinMode(3, INPUT);
}

void loop() {
  aState = digitalRead(outputA);
  if (aState != aLastState) {
    if (digitalRead(outputB) != aState) {      // Clockwise
      Joystick.pressButton(1);
      delay(10);
      Joystick.releaseButton(1);
      counter ++;
    } else {                   // Counterclockwise
      Joystick.pressButton(2);
      delay(10);
      Joystick.releaseButton(2);
      counter --;
    }
    Serial.print("Counter:  ");
    Serial.println(counter);
  }
  aLastState = aState;
}

每次顺时针推销时都应按下按钮(按钮 1),逆时针移动时按下按钮 2。我试图将计数器值打印到串行监视器上以查看它在做什么,但是监视器会随机更改并且无法识别旋转编码器。我可以澄清任何一点,但我想知道我能解决什么问题。

标签: c++arduino

解决方案


事实证明,这只是一个干扰问题。使用上拉电阻解决了这个问题。


推荐阅读