当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]这是一个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 )。
换一批
延伸阅读

创建一个安全且自动化的门锁与解锁机制,通常通过密码等输入方式来控制。

关键字: 伺服电机 LCD Arduino

风力涡轮机的安全高效运行至关重要,但其人工监控并不实用。本项目开发了一套智能风力涡轮机监控系统,可根据风况自动控制涡轮机的伺服位置,并实时感知风暴、野生动物、振动等环境风险,通过手机向您发送电子邮件,及时通知您。

关键字: 风力涡轮机 Arduino 传感器

凭借全栈产品设计与制造专长,拓展全球 Wi-Fi HaLow 生态系统

关键字: Wi-Fi 物联网 芯片

过去几个月里,我一直在设计自己的开发板,以充分发挥其性能。如今,我正在使用WCH的CH32V003F4P6芯片,对这款微控制器所提供的功能和性能感到非常惊叹。我之所以从Arduino转而选择它,是因为这是一款32位RIS...

关键字: 开发板 Arduino CH32V003F4P6

在这个项目中,我使用Seeed Studio XIAO ESP32S3 Sense和Xiaozhi固件,制作了一个可穿戴的AI吊坠。该设备将语音交互、摄像头支持、音频播放、RGB灯光以及Wi-Fi连接功能集成于紧凑的可穿...

关键字: RGB Wi-Fi AI ESP32S3

空气污染是全球日益严峻的问题,细颗粒物(PM2.5)因其能够深入肺部并进入血液,成为最危险的污染物之一。无论您担心的是室内空气质量、野火烟雾还是城市污染,掌握实时数据都能让您采取有效行动。

关键字: PM2.5 传感器 Arduino

该项目提供了一套高效、远程遥测记录系统,用于跟踪离网太阳能系统的发电与耗电情况。通过利用Arduino Pro Mini 3.3V的超低静止电流特性,该记录器最大限度地降低了系统开销,确保监控硬件本身不会耗尽电池储备。

关键字: 太阳能 Arduino INA219

在搭建显示屏(使用Arduino和硬件)时,我常常感到沮丧:需要刷写程序、线缆可能损坏、导线松脱,或者板子突然烧坏。最终我可能只能花10到20秒(如果运气好)来测试一下,把字体向左移动三个像素是否“感觉正确”。

关键字: 显示屏 Arduino Python

我从事电能计量IC的研发已有段时间。在尝试了接口较为简单的BL0937之后,今天终于拿到了BL0940。两者在结构上相似,都是单相电能计量IC,但最让我感到意外的是其功能特性。与BL系列中较为简单的BL0937不同,BL...

关键字: Arduino 交流电能 BL0937

DS18B20 是一种数字温度传感器,有两种版本:小型 TO-922 包装版和防水型,后者通常被金属管封装,并配有长电缆。两者均能提供数字温度读数,适用于多种室内外项目。DS18B20 采用了一种称为“单线通信”(1-W...

关键字: Arduino DS18B200 温度传感器
关闭