当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]这是一个DIY手持式Arduino游戏机,由Arduino UNO R4 WiFi驱动。它在一块0.96英寸的SSD1306 OLED显示屏(128×64像素)上运行10款复古风格的街机游戏,通过四个触控按钮进行控制。配备5V升压转换器的锂聚合物电池使其具备完全便携性。所有元件均安装在定制的HAT型PCB板上,直接贴合Arduino主板,无需松散电线,也不需使用面包板。

这是一个DIY手持式Arduino游戏机,由Arduino UNO R4 WiFi驱动。它在一块0.96英寸的SSD1306 OLED显示屏(128×64像素)上运行10款复古风格的街机游戏,通过四个触控按钮进行控制。配备5V升压转换器的锂聚合物电池使其具备完全便携性。所有元件均安装在定制的HAT型PCB板上,直接贴合Arduino主板,无需松散电线,也不需使用面包板。

包含的游戏:小行星、打砖块、恐龙、小鸟飞行、迷宫跑者、吃豆人、乒乓球、贪吃蛇、太空侵略者、俄罗斯方块。

这些并非原创的商业游戏,而是轻量级的复制品,经过重新创建和优化,以适应Arduino平台的内存和速度限制。

所需部件

•Arduino UNO R4 WiFi - 1个

•双面覆膜板 - 1块(用于HAT)

•0.96英寸I2C OLED显示屏(SSD1306,128×64)- 1个

•触控按钮 - 4个

•活动蜂鸣器 - 1个

•1SS 锂聚合物电池(3.7V)- 1个

•5V升压转换器模块 - 1个

•滑动开关 - 1个

•按需连接电线

接线 / / 引脚连接

所有组件均通过以下方式连接到Arduino R4 WiFi:

OLED显示屏(I2C)

•VCC → 5V

•GND → GND

•SDA → A4

•SCL → A5

按钮(低电平激活,另一端接地)

•UP → D4

•向下 → D2

•左 → D3

•右 → D5

蜂鸣器

•(+) → D7

•(−) → 0

电源

•5V升压转换器输出 → Arduino 5V引脚

•锂聚合物电池 → → → 滑动开关 → 电源升压转换器输入

硬件组装

所有元件均焊接在一块双面PCB板上,该PCB板尺寸与Arduino R4 WiFi接口头的引脚布局相匹配,本质上是一个定制的HAT。OLED、按钮和蜂鸣器安装在顶部,电源组件(升压转换器、电池连接器、滑动开关)则沿底部边缘排列。

让我省去烦恼的组装小贴士:

•在HAT上使用女性化头条带,以便在不焊拆的情况下取下进行重编程。

•将I2C线路(SDA/SCL)远离按钮信号线,以避免显示噪声

•在连接到Arduino之前,使用万用表确认升压转换器的输出电压恰好为5V。

•在所有锂聚合物电池的引线上使用热缩管,以防止短路。

•尽量缩短线缆,对于紧凑的构建来说,这一点比你想象的更重要。

代码架构

固件完全模块化。每个游戏都独立存在于自己的头文件中,主文件 main.inoo 只负责库的初始化、按钮读取、菜单以及游戏调度。这使得在不修改核心逻辑的情况下,轻松添加或删除游戏变得非常简单。

如果你刚接触Arduino,并希望在深入制作此类项目之前先熟悉基本操作,浏览一系列优质的Arduino项目是一个很好的方法,可以帮助你了解如何处理不同的外设,例如显示屏、按钮和蜂鸣器,然后再将它们整合成一个完整的系统。

所用库

Arduino.h - - 核心函数(pinMode、digitalRead、millis、tone)

U8g2lib.h - - 支持全帧缓冲和字体的OLED图形

Wire.h - - 显示屏的I2C通信

为什么选择 U8g222 而不是 Adafruit GFX?在开发过程中,Adafruit GFX 与 UNO R44 存在初始化问题。而 U8g2 从一开始就运行稳定,并且渲染性能更优。

引脚定义

游戏标题包含

按钮去抖功能

机械按钮在按下时会弹起,快速在高电平和低电平之间闪烁数毫秒。如果没有去抖功能,单次按键可能会被识别为5个以上的输入信号,从而破坏游戏体验。该功能通过软件来处理这一问题:

每个按钮都有其独立的静态状态和时间戳。只有在最后一次状态变化后经过40毫秒,按压才会被记录为有效——具备清晰的边缘检测,避免误触发。

设置功能

按钮使用 INPUT_PULLUP 以获得稳定读数。通过 randomSeed(analogRead(A0)) 从模拟噪声中获取随机种子,因此每次开机时,像小行星生成这样的游戏行为都会真正实现随机。

主循环

menuSelect()() 显示可滚动的游戏列表。向上/向下导航,向左/向右确认。游戏结束后,控制权会自动返回此处,无需重置。

工作原理(用户流程)

1. 开机 → → 出现启动画面 → → → 按任意按钮继续

2. 游戏列表菜单加载中,上下滚动

3. 按左或右键启动游戏

4. 游戏结束 → 自动返回菜单

我遇到的挑战

库不兼容问题:Adafruit GFX 在 Arduino UNO R4 上初始化失败。改为使用 U8g22 后立即正常工作,并且提供了更好的渲染控制。

按钮弹跳:早期版本中,菜单会随机跳过某些项目。通过实现上述边缘检测去抖功能,并设置40毫秒的阈值,已解决该问题。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭