用RC遥控器玩PC端赛车游戏

用 RC 遥控器玩 PC 端赛车游戏

一、引言

在传统的 PC 端赛车游戏中,我们通常使用键盘、鼠标或者游戏手柄来进行操作。然而,对于一些模型爱好者来说,拥有专业的 RC(Remote Control,遥控)遥控器,却只能用于操控模型,实在有些可惜。本教程将介绍如何利用 Arduino Leonardo 开发板,将 RC 遥控器的信号转化为 PC 端可识别的输入,从而实现用 RC 遥控器玩 PC 端赛车游戏的目的。
请添加图片描述

二、所需材料

  1. Arduino Leonardo 开发板:用于接收 RC 接收机的信号,并将其转换为 PC 端可识别的输入信号。
  2. RC 遥控器及接收机:用于发送和接收控制信号。
  3. 杜邦线若干:用于连接 Arduino Leonardo 和 RC 接收机。
  4. PC 电脑:运行赛车游戏和相关软件。
  5. 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线重新识别。
    请添加图片描述
    请添加图片描述

四、注意事项

  1. 在连接硬件时,要注意电源和信号的极性,避免短路损坏设备。
  2. 如果在上传程序或运行游戏时遇到问题,可以检查程序代码是否正确、硬件连接是否稳固、模拟器配置是否正确等。
  3. 不同的赛车游戏对控制器的支持可能有所不同,有些游戏可能需要进行额外的设置才能正常使用 RC 遥控器。

通过以上步骤,你就可以用 RC 遥控器玩 PC 端赛车游戏了,享受不一样的游戏体验。希望本教程对你有所帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值