之前的项目中使用Arduino做UE4的输入设备时候需要用到UE4Duino这个插件,以字符串的形式从Arduino中组装信息并发送到串口,使用UE4Duino进行解析,过程比较麻烦。

最近发现的一个工具UnoJoy可以把Arduino变成一个游戏手柄,开发和调试就简单多了。不过要注意它只能模拟一些常规的游戏输入,例如左右摇杆的X,Y axis,各种按钮等。对于自行车轮胎测速这种需求可能就无能为力了,还是需要使用UE4Duino手动组装和解析数据。

这里就把diy一个游戏方向盘的过程记录下来。

必备工具

硬件

  1. Arduino Uno,
  2. 电位器,
  3. 下拉电阻(10K)

软件

  1. Unojoy(https://code.google.com/archive/p/unojoy/), 进入downloads后下载 最新的windows版本
  2. x360ce(https://www.x360ce.com/) 我使用的是64位版
  3. flip(http://www.microchip.com/Developmenttools/ProductDetails/FLIP) ,下载 FLIP 3.4.7.112 for Windows (Java Runtime Environment included)
  4. Visual Leak Detector(https://kinddragon.github.io/vld/),不确定这个是不是必须,启动x360ce时会提示你下载,如果看到提示,就下载吧。下载installer版本最简单,直接默认安装

步骤1

  连接电路:

  电位器两端引脚分别连接5V和ground,中间引脚连接模拟输入A0。最终我们只使用A0模拟为游戏手柄的Left ThumbStick X-Axis

  为了确保A1-A5-输入为稳定值,可以给他们都通过下拉电阻接地。

步骤2

  安装flip,默认安装即可

步骤3  

  给arduino通电,然后短路arduino最靠近usb连接口的两个针脚几秒钟。

  打开设备管理器,会出现Other device> unknown device。

  右键>Update Driver Software,

  Browse my computer for driver software

  Let me pick a list.....

  Next

  Have disk

  Browse...

  选择unojoy中的drivers/Arduino Uno.inf

  OK

  Next

  Install

步骤4

  打开unojoy中的 UnojoyArduinoSample/目录中的ino文件,编译上传。

  如果上传失败,可能需要重新拔、插Arduino,在IDE中选择正确的com口再上传

步骤5

  重新拔、插 Arduino,双击unojoy中的TurnIntoAJoystick.bat, 稍等片刻后,提示按任意键退出。

  再次重新拔、插Arduino.

  然后再控制面板/硬件和打印机中就能看到一个unojoy joystick的图标,双击并选择属性可以进行测试。


  到上一步为止已经完成了通用的配置

  下面是为UE4设置的步骤


步骤6

  把下载好的x360ce.exe放置到UE4的exe文件目录下(Engine/Binaries/Win64/)

  双击打开,按照提示点击Create,创建一个dll文件。

  设置如下:

  

   这里只需要一个Stick Axis X,这里选择Axes- Axis1,保存。

   注意,如果使用的不是电位器,而是飞行控制摇杆等设备,发现没有办法走满行程,那么需要修改UnojoyArduinoSample.inf文件,首先打印出真实的数值范围,然后使用map函数重新映射相应的模拟引脚的数值范围到(0-1023).


到此为止所有的设置都完成了,剩下的就是进入UE4的配置环节了


步骤7

  新建一个车辆模板工程,在工程的输入设置中,去掉所有无用的设置,把右转向设置为 Gamepad Left Thumbstick X-Axis。

  如果运行游戏发现中间死区过大,可以展开Bindings的高级选项,展开Axis Config,把Gamepad LetfX 的deadzone设置为很小的数值。

步骤8

  如果Arduino还要用作普通Arduino使用,连接reset引脚几秒钟,运行 TurnIntoAnArduino.bat, 稍过片刻,再重新拔、插,即可还原。

DIY Arduino 方向盘的更多相关文章

  1. DIY蓝牙hub F1方向盘

    介于已经入手了自己的第一套OWS FFB直驱力反馈方向盘,因此决定要自己做一款F1方向盘盘面,来提升一下F1 2020游戏的游戏体验感.整体的技术路线如下: [技术路线] 主控:esp32 软件环境: ...

  2. 极客DIY:使用Arduino制作一块开源手表

    1 – 引言 首先让我们看下这个项目要考虑到的问题: .)使用100%Arduino兼容性硬件 .)保证存储器足够大可以装下大量的稍后会扩展的新内容 .)电量最少够1天用 .)BLE既是中枢设备又是外 ...

  3. PS2手柄在arduino上进行测试,可用,供喜欢diy的朋友借鉴

    #include <PS2X_lib.h> //PS2手柄PS2X ps2x; // create PS2 Controller Class//////////PS2引脚///////// ...

  4. Arduino 极速入门系列 - 光控灯(3) - 光敏电阻、与电阻分压那些事

    继续是讲解基础原理,新手专用部分.这次讲光敏电阻,和用电阻分压.光电元器件有好几种,其中测光相关的元器件,常见的有光敏三极管和光敏电阻,我们这次光控灯用光敏电阻.在我们光控灯里面,将会使用它搭建出分压 ...

  5. DIY FSK RFID Reader

    This page describes the construction of an RFID reader using only an Arduino (Nano 3.0 was tested, b ...

  6. x86 构架的 Arduino 开发板Intel Galileo

    RobotPeak是上海的一家硬件创业团队,团队致力于民用机器人平台系统.机器人操作系统(ROS)以及相关设备的设计研发,并尝试将日新月异的机器人技术融入人们的日常生活与娱乐当中.同时,RobotPe ...

  7. NX-bridge,可以实现无线XBee控制的Arduino板

    ”今天Elecfreaks Studio给你介绍一个新的.很实用的朋友:带有一些奇幻色彩的神秘设备.它是什么呢?它可以完成什么功能呢?它对我们的生活有哪些促进呢?非常感兴趣吧?别着急,我们这就给您详细 ...

  8. Arduino VS. Raspberry Pi VS. Beaglebone Black

    The Arduino is a small Atmel-based microcontroller development board easily integrated into many dif ...

  9. MicroPython教程之TPYBoard开发板DIY红外寻迹小车

    智能小车现在差不多是电子竞赛或者DIY中的主流了,寻迹,壁障,遥控什么的,相信大家也都见得很多了,这次就大家探讨一下寻迹小车的制作方法,不同于以往的是这次的程序不用C语言写,而是要使用python语言 ...

随机推荐

  1. HDU 2044 DP (fibonacci)

    HDU 2044 https://vjudge.net/problem/HDU-2044 每一个只有可能由它左面的以及左上的状态变过来,也就是F(i-1)和F(i-2) F(1) = 1 F(2) = ...

  2. java限流工具类

    代码 import com.google.common.util.concurrent.RateLimiter; import java.util.concurrent.ConcurrentHashM ...

  3. Java Web开发技术教程入门-JavaBean组件与Servlet

    补更:阅战阅勇第7/8/9Days笔记 昨天我们了解了JDBC技术的一些日常操作,对于数据库而言,不仅仅的只有"增,删,改,查".博主觉得最重要的是SQL语句的优化,一个" ...

  4. [Next] 四.在next中引入redux

    添加 redux 写过 react 稍微复杂一些应用的话,应该都对 redux(mobx)有一定的了解.这次将 redux 引入到项目中 因为之前写项目的习惯,更喜欢使用 redux-thunk 改写 ...

  5. C# 面向对象8 值类型和引用类型

    值类型和引用类型 概念 示意图: 1.值类型,在栈中开辟一块空间,存储 2.引用类型,在堆中开辟一块空间,存储数据,然在栈中开辟一块空间存储堆中的数据的地址

  6. [转载]C++STL概述

    来源:https://www.cnblogs.com/dyllove98/p/3214898.html 什么是容器 首先,我们必须理解一下什么是容器,在 C++ 中容器被定义为:在数据存储上,有一种对 ...

  7. js之运算符(算术运算符)

    Javascript中的运算符大多是由标点符号少数由关键字表示.可以根据其操作数的个数进行分类.大多数运算符是一个二元运算符,将两个表达式合成一个比较复杂的表达式.还有需要注意的一点是运算符的优先级, ...

  8. Vue初始化一个项目

    @1 npm install -g @vue/cli-init vue init webpack projectName @2 cnpm install -g @vue/cli vue create ...

  9. Spring框架中<mvc:default-servlet-handler/>的作用

    优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...

  10. CentOS MySql5.6编译安装

    生产环境中,mysql服务器上边最好什么服务都不要再安装!!! 一.准备工作: # yum -y install make gcc-c++ cmake bison-devel ncurses-deve ...