自己喜欢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);
}
更多回帖