c++ - 如何使用旋转编码器控制 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。我试图将计数器值打印到串行监视器上以查看它在做什么,但是监视器会随机更改并且无法识别旋转编码器。我可以澄清任何一点,但我想知道我能解决什么问题。
解决方案
事实证明,这只是一个干扰问题。使用上拉电阻解决了这个问题。
推荐阅读
- reactjs - Ag-grid,在单元格渲染器中获取网格 dom 元素的方法
- ansible - 如何在自定义 ansible 模块中使用第三方依赖项?
- android - 在 HTTP 或 RTSP 协议上使用 MJPG 的 Android 实时流式传输
- python - python定义类变量与全局变量
- macos-big-sur - macOS Big Sur 中的驱动程序安装问题(在本例中为 CP210x USB 桥接器)
- php - 使用 URL 通过电视浏览器获取智能电视 UID,然后将 UID 传递给服务器处理并返回内容显示
- python - 将脚本从 matlab 转换为 python
- unit-testing - 如何对需要内部模拟的 Cobra CLI 命令进行单元测试?
- hdfs - 如何使用 presto 更新表以获取新的 hdfs 路径?
- sql - MSSQL+Symfony 4.4 存储过程空结果学说