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 个用作模拟输入)、一个 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);

}

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

    关注

    184

    文章

    6427

    浏览量

    184839
  • 操纵杆
    +关注

    关注

    0

    文章

    67

    浏览量

    8459
  • 游戏控制器
    +关注

    关注

    0

    文章

    15

    浏览量

    2926
收藏 人收藏

    评论

    相关推荐

    labview操纵杆

    用labview自带的初始化操纵杆,输入设备信息,获取操纵杆的坐标轴,会占很大的内存!!!!还有其他方法吗!!
    发表于 04-13 01:06

    小白求教,怎么实现操纵杆控制电机的旋转角度

    小白求教,怎么实现操纵杆控制电机的旋转角度。想要实现,电机保持慢转速,操纵杆前推控制向前转,后推控制向后转,
    发表于 02-05 14:27

    Digilent Pmod NAV和操纵杆

    允许通过按下两个按钮中的任何一个来调整强度。对于较小(尺寸)的应用,也可以使用Arduino Pro Mini 3.3V版本。免责声明:确保使用3.3V而不是5V,因为操纵杆的额定电压仅为3.3V。有
    发表于 11-01 15:52

    编码操纵杆问题

    Y值总是2.5V,因为操纵杆以Y方向为中心,X轴极值中的螺旋桨功率很小。螺旋桨的动力设置为5个前进挡和3个RE。诗齿轮。因此,我的控制循环读取操纵杆x/y值,然后通过9个I/IF I/OR语句来决定我
    发表于 12-21 15:47

    USB操纵杆如何编程

    我正在做一个项目,我们必须做一个无线USB操纵杆。我搜索了各种各样的USB微控制器,如CY7C6300 X,并阅读了它的数据表。谁能告诉我如何编程这个微控制器或有其他更好的微控制器
    发表于 04-19 09:28

    用于游戏手柄/操纵杆的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

    一个Apple IIe数字操纵杆适配器

    收到电路板,并且只使用了我自制的原型和从 KiCAD 文件生成的 CNC 文件。中心周围有一些抖动(由于未屏蔽的控制器电缆),但在最好使用数字操纵杆玩的游戏中似乎并不重要。调整游戏
    发表于 07-06 06:59

    MAME旋转操纵杆转USB的资料分享

    描述MAME 旋转操纵杆转 USB要使用像 SNK 的 LS30 这样的街机旋转操纵杆或像 MAME 中的 Happ Controls 旋转这样的克隆,需要将 12 个旋转位置开关转换为顺时针或
    发表于 07-22 06:12

    同时使用1个操纵杆玩2台使用Atari DB-9风格操纵杆端口的电脑

    描述Perifractic 和 Lorin Millsap 的 DoubleJoy - 使用 2 台计算机和 1 个操纵杆这个疯狂的科学实验让您可以玩 2 台使用 Atari DB-9 风格操纵杆端口的电脑,同时使用 1 个操纵杆
    发表于 08-12 07:11

    设计一个ESP32操纵杆控制器的教程

    。印刷电路板操纵杆控制器由许多制造商制造,通常使用 Arduino Nano 板和 nRF24L01 或蓝牙选项进行通信。在设计 PCB 时,我更喜欢蝙蝠主题以具有独特的设计。我也更喜欢 ESP32
    发表于 09-02 06:17

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

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

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

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