首页 > 微机单片机 >单片机制作 > 使用Arduino Leonardo将操纵杆作为游戏控制器的方式

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

来源:互联网发布者:张七岁 关键词: Arduino 操纵杆 游戏控制器 更新时间: 2024/05/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);

}

提问/讨论

这里还没有内容,您有什么问题吗?

我要提问/讨论

推荐帖子 最新更新时间:2025-01-29 04:24

百问FB网络编程 - 网络编程简介
## **6.1** **网络编程简介** ​ 要编写通过计算机网络通信的程序,首先要确定这些程序同通信的协议(protocol),在设计一个协议的细节之前,首先要分清程序是由哪个程序发起以及响应何时产生。 ​ 举例来说,一般认为WEB服务器程序是一个长时
 aleksib国产芯片交流
FRED案例展示:随机化自由曲面建模
附件中的文件展示了一种使用FRED的双立方网格(Bicubic Mesh)表面来创建具有随机轮廓的表面的简单方法。双立方网格表面表示在X和Y位置上的Z表面凹陷(sag),这些是由在X和Y上矩形网格中提供的表格数据决定的。这种表面类型提供了一种生成自由曲面的简便方式。
 W-Winnie测试/测量
MOS管在医用控温毯控制系统驱动电路设计中的VBE1606\VBN1603
一、医用控温毯的实用意义 在临床环境下,物理升降温的治疗方法非常常见。物理降温可用于亚低温治疗法,脑组织受损的患者可依赖亚低温治疗(28~35℃)使脑部在血氧不足的情况下有更高的耐受度;物理升温可用于手术或康复治疗,防止术后并发症或全身麻醉时间过长而出现的体温过低
 VBsemi模拟与混合信号
瑞芯微RK3566/RK3568开发板安卓11固件ROOT教程,Purple Pi OH演示
本文介绍RK3566/RK3568开发板Android11系统,编译ROOT权限固件的方法。触觉智能Purple Pi OH鸿蒙开发板演示,搭载了瑞芯微RK3566四核处理器,Laval鸿蒙社区推荐开发板,已适配全新OpenHarmony5.0 Release系统,SDK源码全
 Industio_触觉智能Linux与安卓
国内首创 | 扁线技术赋能自动化驱动电机
在科技的浪潮中,每一次创新都是对未来的探索。 磁驱输送技术相较于传统的链条及皮带等输送方式,其创新之处在于利用线圈电机产生的磁场进行磁力传动,实现输送线上的物料无接触高速传输,极大促进了生产流程的高效性、智能化以及柔性。 在磁驱输送
 纵苇科技分立器件
当你有两台电脑,想用一套键鼠怎么切换?
1、使用KVM 切换器可以让你用一个键盘、鼠标和显示器来使用多台电脑。使用简单,即插即用,不需要安装额外的软件。将KVM切换器的视频、键盘和鼠标接口分别连接到两台电脑上,上面有按钮可以在两台电脑之间切换, 2、可以下载一个软件Synergy,可以在不同使用系统之间共享一套键盘和
 SAMZHE山泽测试/测量

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

EEWORLD 电路图 站点相关: 下载中心 Datasheet 参考设计

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
  翻译: