亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

DIY Arduino USB 游戏手柄 — 自制高性能游戏手柄

零部件与材料

SparkFun Pro Micro - 5V/16MHz ×1
Arduino Leonardo ×1
SparkFun 12mm 轻触开关 ×12
10kΩ 电阻 ×1
定制蚀刻 PCB ×1
UTSOURCE 电子元件 ×1

所需工具

软件与在线服务

项目详解

视频演示

建议先观看项目视频:

项目介绍

本项目在 ElectroPunkz Labs 开发,旨在制作一款基于 ATmega32U4 的低成本 USB 游戏手柄,含按键与模拟摇杆,可玩《极品飞车》《GTA》《半条命》《小小格斗 2》等游戏。

已制作两种外形:V1 采用 PS1/SNES 经典布局,V2 规划为 Xbox 风格带模拟摇杆(尚未定稿)。本文介绍 V1 版。

DIY Arduino USB 游戏手柄 — 自制高性能游戏手柄

材料清单

鸣谢 UTSOURCE.net 赞助电子元件! 他们提供全品类元器件,含本项目所有用料。

制作流程(接线、组装等)

核心电路:12 个按键以下拉电阻方式接 Pro Micro。先在面包板验证,再按原理图设计 PCB。

DIY Arduino USB 游戏手柄 — 自制高性能游戏手柄
DIY Arduino USB 游戏手柄 — 自制高性能游戏手柄

用 OrCAD 设计 PCB,打印顶层到光面纸,热转印法转印至铜覆板(见作者视频教程),氯化亚铁腐蚀,钻孔,焊接元件,电路板完成。

DIY Arduino USB 游戏手柄 — 自制高性能游戏手柄

用 Fusion 360 设计并 3D 打印外壳。

DIY Arduino USB 游戏手柄 — 自制高性能游戏手柄

上传代码即可游戏。

源代码

上传至 Pro Micro。重要提示: 上传前务必彻底测试电路/PCB 连通性与电阻值。缺地线会导致引脚悬浮,Pro Micro 疯狂发送随机按键,导致极难重新烧录。

#include <Keyboard.h>
int WPin = 2;   // 上
int SPin = 3;   // 下
int APin = 4;   // 左
int DPin = 5;   // 右
int UPLpin = 7; // 左上 (Q)
int UPRpin = 9; // 右上 (E)
int Xpin = 14;  // X
int Apin = 10;  // I
int Ypin = 15;  // Y
int Bpin = 16;  // B

void setup() {
  pinMode(WPin, INPUT);  pinMode(SPin, INPUT);  pinMode(APin, INPUT);  pinMode(DPin, INPUT);
  pinMode(UPLpin, INPUT); pinMode(UPRpin, INPUT); pinMode(Xpin, INPUT); pinMode(Apin, INPUT);
  pinMode(Ypin, INPUT);  pinMode(Bpin, INPUT);
  digitalWrite(WPin, HIGH);  digitalWrite(SPin, HIGH);  digitalWrite(APin, HIGH);  digitalWrite(DPin, HIGH);
  digitalWrite(UPLpin, HIGH); digitalWrite(UPRpin, HIGH); digitalWrite(Xpin, HIGH); digitalWrite(Apin, HIGH);
  digitalWrite(Ypin, HIGH);  digitalWrite(Bpin, HIGH);
  Keyboard.begin();
}

void loop() {
  if (digitalRead(WPin) == 0) { Keyboard.write('W'); delayMicroseconds(1); }
  if (digitalRead(SPin) == 0) { Keyboard.write('S'); delayMicroseconds(1); }
  if (digitalRead(APin) == 0) { Keyboard.write('A'); delayMicroseconds(1); }
  if (digitalRead(DPin) == 0) { Keyboard.write('D'); delayMicroseconds(1); }
  if (digitalRead(UPLpin) == 0) { Keyboard.write('q'); delayMicroseconds(1); }
  if (digitalRead(UPRpin) == 0) { Keyboard.write('e'); delayMicroseconds(1); }
  if (digitalRead(Xpin) == 0) { Keyboard.write('x'); delayMicroseconds(1); }
  if (digitalRead(Apin) == 0) { Keyboard.write('i'); delayMicroseconds(1); }
  if (digitalRead(Ypin) == 0) { Keyboard.write('y'); delayMicroseconds(1); }
  if (digitalRead(Bpin) == 0) { Keyboard.write('b'); delayMicroseconds(1); }
}

测试验证

  1. 打开记事本,按手柄各键,确认输出字符与代码映射一致。
  2. 或使用任意键盘测试网页/软件。
  3. 全键正常后,启动游戏实战测试。

后续改进计划

有问题欢迎留言!

自定义部件与外壳

(Fusion 360 源文件见附件)

原理图

(原理图文件见附件)

制造工艺

  1. Arduino Nano 与 MPU-6050 构建实时陀螺仪游戏
  2. Arduino 数字骰子:LCD 显示随机点数的电子骰子
  3. 自制 16×8 LED 矩阵俄罗斯方块游戏机:Arduino Nano + 74HC595 驱动
  4. 智能 Arduino 水杯:实时监测饮水量与智能提醒
  5. Pixel Chaser:Arduino Nano 单键 NeoPixel 追逐小游戏
  6. Alexa 语音控制 Arduino 智能家居中枢:基于 Yun + PubNub + AWS Lambda 全栈实现
  7. Arduino Nano 驱动 NeoPixel 矩阵:自制霓虹乒乓游戏
  8. 智能手语手套:柔性传感器 + 加速度计 + 蓝牙将手势转文字/语音
  9. Arduino Nano 与 WS2812 灯带打造 1D 乒乓球游戏——分步 DIY 教程
  10. Arduino DMX-512 测试控制器 – 可靠灯光控制的完整套件
  11. DIY LED 轮盘赌游戏机 —— Arduino Nano 打造单人桌面街机
  12. Arduino Mega 2560 驱动的开源植物生长箱控制器:固件与硬件全指南