单片机/MCU论坛
直播中

出生入屎

8年用户 8经验值
擅长:电源/新能源
私信 关注
[问答]

小白提问,Arduino Leonardo制作了一个飞行摇杆,模拟脚输入干扰怎么解决?

自己喜欢DCS World这款飞行游戏,但是遥感太贵想着自己动手做一个。于是用了Arduino Leonardo这款单片机。目前设想四个轴,但是四个轴同时用上之后各个轴之间有干扰,最多只能用两个轴才能正常使用。麻烦懂的大佬指点以下,晚辈不胜感激。

以下是自己编写的程序:
#include <Joystick.h>

// 创建一个Joystick对象
Joystick_ Joystick;

// 定义摇杆引脚
const int VRX_PIN = A0; // 水平方向引脚
const int VRY_PIN = A1; // 垂直方向引脚
const int VRX_PIN2 = A2;//第二个轴水平方向引脚
const int VRY_PIN2 = A3;//第二个轴锤子方向引脚
const int SW_PIN = 2; // 按键引脚

void setup() {
// 初始化摇杆对象
Joystick.begin();

// 设置按键引脚为输入,并启用内部上拉电阻
pinMode(SW_PIN, INPUT_PULLUP);
}

void loop() {
// 读取水平方向模拟值,取值区间为95-919,并映射到0到1023之间
int xValue = analogRead(VRX_PIN);
xValue = map(xValue, 115, 863, 0, 1023);
Serial.print('X');
Serial.println(xValue);//向计算机发送xValue的数据

// 读取垂直方向模拟值,取值区间为126-865,并映射到0到1023之间
int yValue = analogRead(VRY_PIN);
yValue = map(yValue, 126, 865, 0, 1023);

// 反转y轴的符号(可选)
//yValue = -yValue;
Serial.print('Y');
Serial.println(yValue);//向计算机发送yValue的数据

/*int xValue2 = analogRead(VRX_PIN2);
xValue2 = map(xValue2,95,919,0,1023);
Serial.print('X');
//Serial.println(xValue2);

int yValue2 = analogRead(VRY_PIN2);
yValue2 = map(yValue2,160,865,0,1023);
Serial.print('Y');
//Serial.println(yValue2);*/

// 设置Joystick对象的x轴和y轴值
Joystick.setXAxis(xValue);
Joystick.setYAxis(yValue);
/Joystick.setXAxis(xValue2);
Joystick.setXAxis(yValue2);
/
//读取按键数字值,并设置Joystick对象的第一个按钮状态(LOW为按下,HIGH为释放)
int buttonState = digitalRead(SW_PIN);
Joystick.setButton(0, !buttonState);

// 延时一段时间(可调整)
delay(10);
}

回帖(1)

李艳

2023-8-9 16:26:42
egin();// 初始化引脚 pinMode(SW_PIN, INPUT_PULLUP); // 按键引脚设为上拉输入}void loop() { // 读取摇杆的值 int x = analogRead(VRX_PIN); int y = analogRead(VRY_PIN); int x2 = analogRead(VRX_PIN2); int y2 = analogRead(VRY_PIN2);// 将读取的值转化为Joystick对象的值 Joystick.setXAxis(x); Joystick.setYAxis(y); Joystick.setXAxis(x2); Joystick.setYAxis(y2);// 读取按键状态并发送到Joystick对象 if (digitalRead(SW_PIN) == LOW) { Joystick.setButton(0, true); } else { Joystick.setButton(0, false); }}```
1 举报

更多回帖

发帖
×
20
完善资料,
赚取积分