用 RC 遥控器玩 PC 端赛车游戏
一、引言
在传统的 PC 端赛车游戏中,我们通常使用键盘、鼠标或者游戏手柄来进行操作。然而,对于一些模型爱好者来说,拥有专业的 RC(Remote Control,遥控)遥控器,却只能用于操控模型,实在有些可惜。本教程将介绍如何利用 Arduino Leonardo 开发板,将 RC 遥控器的信号转化为 PC 端可识别的输入,从而实现用 RC 遥控器玩 PC 端赛车游戏的目的。
二、所需材料
- Arduino Leonardo 开发板:用于接收 RC 接收机的信号,并将其转换为 PC 端可识别的输入信号。
- RC 遥控器及接收机:用于发送和接收控制信号。
- 杜邦线若干:用于连接 Arduino Leonardo 和 RC 接收机。
- PC 电脑:运行赛车游戏和相关软件。
- Xbox 模拟器软件:将 Arduino 模拟的信号转换为 Xbox 手柄信号,以便游戏识别。
三、详细步骤
步骤 1:购买 Arduino Leonardo
你可以通过多种渠道购买 Arduino Leonardo 开发板,如电子元件商城、淘宝、京东等电商平台。在购买时,要确保购买到的是正版、质量可靠的产品。同时,检查配件是否齐全,一般包括开发板、USB 数据线等。
步骤 2:Arduino Leonardo 录入程序
2.1 安装 Arduino IDE
- 访问 Arduino 官方网站(https://www.arduino.cc/en/software),根据你的操作系统(Windows、Mac OS、Linux 等)下载对应的 Arduino IDE 安装包。
- 运行安装包,按照提示完成安装。
2.2 连接 Arduino Leonardo 到电脑
- 使用 USB 数据线将 Arduino Leonardo 开发板连接到电脑的 USB 接口。
- 打开 Arduino IDE,点击“工具”菜单,选择“开发板”,然后选择“Arduino Leonardo”。
- 再点击“工具”菜单,选择“端口”,选择与 Arduino Leonardo 对应的串口端口。
2.3 编写并上传程序
以下是相关程序,用于将 RC 接收机的信号转换为 PC 端可识别的输入信号。你可以根据自己的需求进行修改。
#include <Joystick.h>
https://github.com/MHeironimus/ArduinoJoystickLibrary
// 创建Joystick对象
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_MULTI_AXIS, 0,
0, true, true, true,
true, true, true,
false, false, false,
false, false);
const int steeringPin = A0; // 方向盘信号接到数字引脚A0
const int throttlePin = A1; // 油门信号接到数字引脚A1
const int widthMedian = 500 ;// 默认为中立位置
const int widthMedianLimit = 50 ;// 默认为中立位置
const int widthMin = -500;
const int widthMax = 1500;
const int pulseMin = 1000;
const int pulseMax = 2000;
int mappedSteeringLast = widthMedian;
int lastXAxisValue = widthMedian;
int lastRyAxisValue = widthMedian;
unsigned long gNextTime = 0;
const unsigned long gcAnalogDelta = 25;
void setup() {
// // 初始化串口调试(可选)
Serial.begin(9600);
// 初始化Joystick模拟器
Joystick.begin(false);
Joystick.setRyAxisRange(0, 1000);
Joystick.setXAxisRange(0, 1000);
Joystick.setXAxis(widthMedian);
Joystick.setYAxis(widthMedian);
Joystick.setZAxis(widthMedian);
Joystick.setRxAxis(widthMedian);
Joystick.setRyAxis(widthMedian);
Joystick.setRzAxis(widthMedian);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
}
void loop() {
bool sendUpdate = false;
// 如果没有检测到信号(pulseIn超时),则设置为默认值
long throttlePulseWidth = pulseIn(throttlePin, HIGH); // 读取油门的PWM信号
int mappedThrottle = map(throttlePulseWidth, pulseMin, pulseMax, widthMin, widthMax);
if(mappedThrottle < (widthMedian+widthMedianLimit) && mappedThrottle > (widthMedian-widthMedianLimit)){
mappedThrottle = widthMedian;
}
if(lastRyAxisValue != mappedThrottle){
Joystick.setRyAxis(mappedThrottle);
lastRyAxisValue = mappedThrottle;
sendUpdate = true;
}
// 读取方向盘和油门信号的PWM脉宽
long steeringPulseWidth = pulseIn(steeringPin, HIGH); // 读取方向盘的PWM信号
int mappedSteering = map(steeringPulseWidth, pulseMin, pulseMax, widthMin, widthMax);
if(mappedSteering<(widthMedian+widthMedianLimit) && mappedSteering > (widthMedian-widthMedianLimit)){
mappedSteering = widthMedian;
}
if(lastXAxisValue != mappedSteering){
Joystick.setXAxis(mappedSteering);
lastXAxisValue = mappedSteering;
sendUpdate = true;
}
if (millis() >= gNextTime){
gNextTime = gNextTime + gcAnalogDelta;
}else{
return;
}
if (sendUpdate)
{
Joystick.sendState();
// 打印脉宽调试信息(可选)
// Serial.print("gNextTime: ");
// Serial.print(gNextTime);
// Serial.print("mappedSteering: ");
// Serial.print(mappedSteering);
// Serial.print("\tmappedThrottle: ");
// Serial.println(mappedThrottle);
}
// delay(500);
}
- 将上述代码复制到 Arduino IDE 中。
- 点击 Arduino IDE 左上角的“上传”按钮,将程序上传到 Arduino Leonardo 开发板。
会提示上传完成
步骤 3:Arduino Leonardo 连接 RC 接收机
- 首先,确保 RC 遥控器和接收机已经配对成功。
- 使用杜邦线将 RC 接收机的油门通道信号输出引脚连接到 Arduino Leonardo 的 A1 号引脚。
- 将 RC 接收机的转向通道信号输出引脚连接到 Arduino Leonardo 的A0 号引脚。
- 将 RC 接收机的供电和地线分别接到Arduino Leonardo的5V和GND。
- 注意连接时要确保引脚对应正确,避免短路。
图片中
灰色是GND
紫红是V5
蓝色是A0
绿色是A1
步骤 4:配置 Xbox 模拟器
4.1 下载并安装 Xbox 模拟器软件
Xbox 模拟器软件地址https://www.x360ce.com。下载并安装该软件。
4.2 配置模拟器
- 打开 Xbox 模拟器软件。
- 软件会自动检测到 Arduino Leonardo 模拟的 Joystick 设备。
- 根据软件的提示,对各个轴和按键进行映射。一般来说,将 X 轴映射到转向控制,Y 轴映射到油门控制。
- 配置后拨动RC遥控器的油门和方向会触发模拟器对应的按键动画。
- 配置完成后,保存设置。
以《极品飞车™:不羁》为例则其配置按钮映射为
配置后拨动RC遥控器的油门和方向会触发模拟器对应的按键动画。
步骤 5:打开游戏畅玩
- 确定RC遥控能触发 Xbox 模拟器模拟器。
- 打开你喜欢的 PC 端赛车游戏。
- 在游戏的设置中,选择控制器为 Xbox 手柄。
- 拿起 RC 遥控器,通过操作遥控器的油门和转向摇杆,就可以在游戏中控制赛车的加速、减速和转向了。
- 如果打开游戏后发现未能控制,可以插拔Arduino Leonardo的USB线重新识别。
四、注意事项
- 在连接硬件时,要注意电源和信号的极性,避免短路损坏设备。
- 如果在上传程序或运行游戏时遇到问题,可以检查程序代码是否正确、硬件连接是否稳固、模拟器配置是否正确等。
- 不同的赛车游戏对控制器的支持可能有所不同,有些游戏可能需要进行额外的设置才能正常使用 RC 遥控器。
通过以上步骤,你就可以用 RC 遥控器玩 PC 端赛车游戏了,享受不一样的游戏体验。希望本教程对你有所帮助!