1 使用Arduino Leonardo将操纵杆作为游戏控制器的方式-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用Arduino Leonardo将操纵杆作为游戏控制器的方式

科技观察员 来源:circuitdigest 作者:Pradeep Kumar 2022-09-01 16:17 次阅读

在这个项目中,我们将使用与游戏手柄或游戏控制器相同的操纵杆来玩任何需要左右移动的电脑游戏。要玩需要更多控制选项的游戏,可以使用两个或更多操纵杆。在这里,我们将使用 Arduino Leonardo 将操纵杆作为游戏控制器进行接口。Arduino Leonardo 比 Uno 的优势在于我们可以在其上安装 USB 驱动程序,并且在连接时可以被计算机检测为鼠标、键盘或操纵杆。

所需组件

阿杜诺·莱昂纳多

双轴XY操纵杆模块

Arduino IDE

连接线

阿杜诺·莱昂纳多

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

pYYBAGMQaj6AHZghAALXAvZWT4c005.png

Leonardo 与之前所有开发板的不同之处在于 ATmega32u4 具有内置 USB 通信功能,无需辅助处理器。除了虚拟 (CDC) 串行/COM 端口外,这允许 Leonardo 在连接的计算机上显示为鼠标和键盘。

技术规格

pYYBAGMQajmAVXUVAAAuditmaho209.png

引脚输出参考

pYYBAGMQajaAVMInAAEQM_TOS94801.png

双轴XY操纵杆模块

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

poYBAGMQajKAdMfyAALMzeimLuw480.png

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

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

电路原理

此Arduino 操纵杆游戏控制器需要 Arduino 和操纵杆之间的连接,如下所示:

pYYBAGMQai6AH4NcAABQqxp_6jU359.png

poYBAGMQaiqAdZmgAAM4sBm9q_Q844.png

poYBAGMQaiiAdQhRAAaZck6_7KM309.png

代码和工作说明

最后给出完整的代码和演示视频;在这里,我们解释它的几个重要部分。

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

#include《键盘.h》

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

const int X_pin 和 const int Y_pin 分别

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

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

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

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

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

pYYBAGMQaiOAe5N7AADm5E9LWdw341.png

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

poYBAGMQah-ABymMAAavtoU4LUE891.png

因此,这就是使用 Arduino Leonardo 将普通操纵杆转换为游戏控制器的方式,并可用于玩具有向左、向右、向上和向下移动的所有控件的游戏。如前所述,除了这四个基本功能之外,可以连接多个操纵杆以获得更多控制。

#include<键盘.h>


常量 int SW_pin = 2; // 数字引脚连接到开关输出

const int X_pin = A0; // 模拟引脚连接到 X 输出

const int Y_pin = A1; // 模拟引脚连接到 Y 输出

int x, y;

无效设置()

{

pinMode(SW_pin,输入);// SW 引脚设置为输入

digitalWrite(SW_pin, HIGH); // 向 SW 引脚写入高值

Serial.begin(115200);

键盘.开始();

}

无效循环()

{

x = 模拟读取(X_pin);// 读取 X_pin 的输出

if (x == 1023) // 检查 x = 1023

{

Serial.println("Up:");

键盘.press(218); // 键向上移动

}

else

{

键盘.release(218); // 释放键

}

x = analogRead(X_pin); // 读取 X_pin 的输出

if (x == 0) // 检查 x 的值是否 = 0


{

Serial.println("向下:");

键盘.press(217); // 键向下移动

}

else

{

Keyboard.release(217); // 释放键

}

y = analogRead(Y_pin); // 读取 Y_pin 的输出


if (y == 1023) // 检查 y = 1023

{

Serial.println("Right:");

键盘.press(216); // 键向右移动

}

else

{

Keyboard.release(216); // 释放键

}

y = analogRead(Y_pin); // 读取 Y_pin 的输出


if (y == 0) // 检查 y = 0

{

Serial.println("Left:");

键盘.press(215); // 键向左移动


}

else

{

键盘.release(215); // 释放密钥

}

int z = digitalRead(SW_pin); // 读取 SW pin 的值

if (z == 0) // 检查 z 的值是否 = 0

{

Serial.println("Enter:");

键盘.println(); //按下回车键

}

delay(500);

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Arduino
    +关注

    关注

    188

    文章

    6468

    浏览量

    186952
  • 操纵杆
    +关注

    关注

    0

    文章

    69

    浏览量

    8526
  • 游戏控制器
    +关注

    关注

    0

    文章

    15

    浏览量

    3011
收藏 人收藏

    评论

    相关推荐

    用于游戏手柄/操纵杆的PSoC嵌入式系统介绍

    用于游戏手柄/操纵杆的PSoC嵌入式系统,使用CY7C63000 USB控制器设计低成本USB鼠标
    发表于 07-19 16:06

    如何使用Arduino UNO、操纵杆模块和NRF24L01模块控制伺服电机?

    文章目录参考资料:如何使用Arduino UNO、操纵杆模块和NRF24L01模块控制伺服电机1. 必需的组件2. 伺服电机控制如何工作3. NRF24L01引脚说明4. 电路原理图5
    发表于 06-28 09:49

    PS2游戏操纵杆摇杆模块

    PS2游戏操纵杆摇杆模块(双轴按键摇杆)产品简介:双轴按键摇杆传感模块由采用PS2摇杆电位制作,具有(X,Y)2轴模拟输出,(Z)1路按钮数字输出。配合
    发表于 07-19 09:40

    基于arduino的超级无尾卡丁车操纵杆

    描述超级无尾卡丁车操纵杆这是我为在 2021 年的 arduino 日玩 Super Tux Kart 而创建的 arduino 操纵杆的演变。您可以在下面看到第一个版本,它是精美的纸
    发表于 06-24 06:52

    基于C++的游戏操纵杆模拟鼠标的程序

      要编写一个支持游戏操纵杆的应用程序,首先必须要捕获游戏操纵杆,接着要处理Windows发送给程序窗口的操纵杆消息,最后使用完
    发表于 09-01 11:54 2005次阅读

    怎样用Arduino操纵杆控制伺服电机

    这个项目的硬件部分非常容易制作。首先,操纵杆模块与Arduino连接。操纵杆模块和Arduino的连接如下:
    的头像 发表于 08-01 14:24 5783次阅读

    使用操纵杆模块和LCD制作游戏

    德赢Vwin官网 网站提供《使用操纵杆模块和LCD制作游戏.zip》资料免费下载
    发表于 10-28 14:27 0次下载
    使用<b class='flag-5'>操纵杆</b>模块和LCD制作<b class='flag-5'>游戏</b>

    使用Arduino Uno制作操纵杆控制的PC鼠标

    德赢Vwin官网 网站提供《使用Arduino Uno制作操纵杆控制的PC鼠标.zip》资料免费下载
    发表于 11-04 14:46 2次下载
    使用<b class='flag-5'>Arduino</b> Uno制作<b class='flag-5'>操纵杆</b><b class='flag-5'>控制</b>的PC鼠标

    如何使用Arduino操纵杆控制BLDC电机

    德赢Vwin官网 网站提供《如何使用Arduino操纵杆控制BLDC电机.zip》资料免费下载
    发表于 11-24 10:10 0次下载
    如何使用<b class='flag-5'>Arduino</b>和<b class='flag-5'>操纵杆</b><b class='flag-5'>控制</b>BLDC电机

    如何使用Arduino创建操纵杆控制器

    德赢Vwin官网 网站提供《如何使用Arduino创建操纵杆控制器.zip》资料免费下载
    发表于 12-06 14:35 0次下载
    如何使用<b class='flag-5'>Arduino</b>创建<b class='flag-5'>操纵杆</b><b class='flag-5'>控制器</b>

    Arduino之使用PS2操纵杆控制LED

    德赢Vwin官网 网站提供《Arduino之使用PS2操纵杆控制LED.zip》资料免费下载
    发表于 12-22 16:39 2次下载
    <b class='flag-5'>Arduino</b>之使用PS2<b class='flag-5'>操纵杆</b><b class='flag-5'>控制</b>LED

    基于Arduino Pro Mini的操纵杆手柄和DIY相机滑块

    方案介绍操纵杆手柄控制器可以使用两轴值(操纵杆旋钮的移动方向)来控制项目。此外,在这个项目中,我制作了一个 DIY 相机滑块,并使用 Arduino
    发表于 12-27 16:35 0次下载

    Arduino基于网络的操纵杆

    德赢Vwin官网 网站提供《Arduino基于网络的操纵杆.zip》资料免费下载
    发表于 02-01 10:06 0次下载
    <b class='flag-5'>Arduino</b>基于网络的<b class='flag-5'>操纵杆</b>

    如何双轴操纵杆Arduino Uno连接

    Duel axis Joystick:Arduino摇杆模块,采用双轴电位控制X、Y轴。按下时,它会激活一个开关。它基于 PS2 控制器操纵杆
    发表于 07-07 15:01 0次下载
    如何<b class='flag-5'>将</b>双轴<b class='flag-5'>操纵杆</b>与<b class='flag-5'>Arduino</b> Uno连接

    如何使用操纵杆Arduino控制伺服电机

    在这篇文章中,我们学习如何使用操纵杆Arduino控制伺服电机。我们看到有关操纵杆,其销,
    的头像 发表于 07-27 11:47 1793次阅读
    如何使用<b class='flag-5'>操纵杆</b>和<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b>伺服电机