风筝
发表于: 2019-6-5 16:44:10 | 显示全部楼层

之前的文章中,我们将操纵杆模块与Arduino UNO开发板进行连接,以了解它是如何工作的,并通过左、右、上、下运动控制四个LED指示灯。在本篇文章中,我们将使用操纵杆模块作为游戏手柄或游戏控制器来玩任何需要向左、右、上和下移动的电脑游戏。要玩需要更多控制选项的游戏,可以使用两个或更多个操纵杆。本文中,我们将使用Arduino Leonardo将操纵杆连接为游戏控制器。 Arduino Leonardo开发板比Uno更加强大,我们可以在计算机安装USB驱动程序,连接后可以被计算机检测为鼠标、键盘或操纵杆。


需要的组件

●   Arduino Leonardo开发板

●   双轴XY操纵杆模块

●   Arduino IDE

●   连接导线


Arduino Leonardo

在本篇文章中,我们使用的是Arduino Leonardo开发板,它是一个基于ATmega32u4的微控制器板。它有20个数字输入/输出引脚(其中7个可用作PWM输出,12个用作模拟输入)、16 MHz晶振、Micro USB连接、电源插孔、ICSP插头和复位按钮。它包含支持微控制器所需的一切;只需使用USB电缆将其连接到计算机,或使用AC-DC适配器或电池为其供电。

Arduino-Leonardo.jpg


Leonardo与之前的所有开发板不同,ATmega32u4具有内置USB通信功能,无需二级处理器。除了作为虚拟(CDC)串行端口之外,Leonardo还可以作为鼠标和键盘连接的计算机上。

以下是该开发板的接口:

Arduino-Leonardo-Pinout.png



操纵杆模块

操纵杆有不同的形状和尺寸。典型的操纵杆模块如下图所示。此操纵杆模块通常提供模拟输出,此模块提供的输出电压会根据我们移动它的方向而不断变化。我们可以通过使用某些微控制器解释这些电压变化来获得运动方向。

Joystick-Module.jpg



如您所见,此操纵杆模块有两个轴。它们是X轴和Y轴。 操纵杆的每个轴都安装在电位器上。这些电位器的中点被认为是Rx和Ry。所以Rx和Ry是这些电位器的可变点。当操纵杆处于待机状态时,Rx和Ry充当分压器。


当操纵杆沿水平轴移动时,Rx引脚上的电压会发生变化。类似地,当它沿垂直轴移动时,Ry引脚的电压发生变化。因此,我们在两个ADC输出上有四个操纵杆方向。当移动杆时,每个引脚上的电压根据方向变高或变低。


电路原理图

这款Arduino操纵杆游戏控制器需要按照下图进行Arduino和操纵杆之间的连接:

Arduino-Joystick-Game-Controller.png

Circuit-Diagram-for-Joystick-Game-Controller-using-Arduino-Leonardo.png

Circuit-Hardware-for-Joystick-Game-Controller-using-Arduino-Leonardo.jpg





代码和工作原理图

在本文的末尾处给出了完整代码;在本节中,我们只介绍代码中的一些重要部分。


首先,我们需要初始化键盘库

  1. #include<Keyboard.h>
复制代码

接下来在下面的代码中,我们分别为模拟引脚A0和A1初始化了操纵杆模块的X和Y轴。

  1. const int X_pin and const int Y_pin respectively
复制代码

读取VRX引脚的模拟值,如果值为1023,则给出“up”命令,如果值为0,则给出“down”命令。

类似地,读取VRY引脚的模拟值,如果值为1023,则给出“right”的命令,如果值为0,则给出“left”的命令。

操纵杆顶部还有一个按钮,因此该按钮(SW)也被读取,如果按下该按钮,则该值为0,然后给出“enter”命令。


最后将代码烧录到Arduino中并将Arduino与计算机连接起来。


接下来,检查控制面板中的“设备和打印机”,您将能够在设备部分下方看到“Arduino Leonardo”,如下图所示。现在您已准备好使用操纵杆。

Joystick-with-Arduino-Leonardo.png



我们可以使用此操纵杆控制任何游戏控制。操纵杆内部有两个电位器,一个用于X轴移动,另一个用于Y轴移动。每个电位器从Arduino获得5v。因此,当我们移动操纵杆时,电压值将发生变化,模拟引脚A0和A1的模拟值也会发生变化。因此操纵杆将充当游戏手柄。

Joystick-Game-Controller-using-Arduino-Leonardo.jpg



以上就是使用Arduino Leonardo将普通操纵杆转换为游戏控制器的方法,可用于进行具有左、右、上和下移动的所有控件的游戏控制。


代码

以下是本篇文章使用的完整代码: main.rar (630 Bytes, 下载次数: 115)

跳转到指定楼层
azi1974
发表于: 2019-6-6 01:12:23 | 显示全部楼层

必须要Arduino Leonardo开发板,这个程序才可以运行,我用uno R3没有通过,说库文件缺失
回复

使用道具 举报

风筝
发表于: 2019-6-6 09:14:11 | 显示全部楼层

azi1974 发表于 2019-6-6 01:12
必须要Arduino Leonardo开发板,这个程序才可以运行,我用uno R3没有通过,说库文件缺失 ...

使用的芯片主控不一样
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-27 13:05 , Processed in 0.041997 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表