构建一个微型独立计算机系统
它最初只是一个相对简单的电子项目,但逐渐发展壮大。从一个显示屏、几个输入接口和一些基础传感器开始,最终演变成一个拥有独立菜单系统、游戏功能、持久性设置、高分记录、传感器应用、音乐、音效,甚至自身视觉标识的小型嵌入式系统。
说实话,这个项目的很多灵感来自于我不断思考的问题:“好吧,那还能让这个设备做些什么呢?”正是这个问题,让 ECLIPSE CORE 成为了今天的样子。
这个想法
我不想让ECLIPSE CORE仅仅成为一个普通的Arduino项目,比如LED闪烁或传感器向串口监视器打印数字。我希望它能像一个真正的设备一样使用。
Arduino是底层硬件,但目标是让用户能够与系统交互,而不是去思考Arduino本身。
系统包含主菜单、应用程序、游戏、设置、持久数据、声音、图形和传感器等功能。UNO R4 WiFi内置的12×8 LED矩阵在其中起到了尤为重要的作用。我用它来显示ECLIPSE标志、游戏画面、数字、动画以及游戏内容本身。16×2 LCD负责文本界面,而旋转编码器则作为主要控制方式。
因此,你无需电脑就能直接启动并开始使用这个项目。
硬件
该项目的核心是Arduino UNO R4 WiFi。
当前的硬件包括:
- Arduino UNO R4 WiFi
- 16×2并行LCD
- KY-040旋转编码器
- DHT11温湿度传感器
- HC-SR04超声波测距传感器
- 光敏电阻
- RGB LED
- 被动式压电蜂鸣器
- 按钮
- 用于LCD对比度的10K电位器
- 电阻
- 布莱德板
- 连线跳线
UNO R4 WiFi内置的LED矩阵也被广泛使用,因此我无需额外显示屏来显示图形内容。
接口设计
主界面围绕以下三个部分构建:
- LCD
- 旋转编码器
- LED矩阵
旋转编码器用于导航菜单和控制应用程序。按下它可选择不同选项,而独立的返回按钮则可用于在系统中向后移动。
LCD负责文本显示,LED矩阵负责视觉显示。
RGB LED 还能为系统提供一些状态反馈。ECLIPSE CORE 的不同部分可以使用不同的颜色来传达当前状态。
例如,游戏可以使用不同颜色表示正常运行、成功、失败以及其他状态。
此外,许多功能也配有声音提示。
软件方面
ECLIPSE CORE 采用 C++ 编写,适用于 Arduino UNO R4 WiFi。
我最终将项目拆分为多个独立模块,而不是将所有内容都集中在一个庞大的 .ino 文件中。
目前项目包含多个独立组件,例如:
•输入
•显示
•声音
•存储
•菜单
•游戏
•传感器
•设置
•歌曲
•核心信息
这在项目发展过程中起到了巨大作用。
我还使用EEPROM来存储一些需要在重启后依然保留的信息,例如高分和设置。
游戏
ECLIPSE CORE 最让我喜欢的部分之一,就是它不仅仅是一个传感器仪表盘。它还包含各种游戏。
■ECLIPSE CODE
一款四位数密码破解游戏。
你通过旋转编码器输入一个四位数字组合,系统会告诉你有多少位数字位置正确,以及有多少位数字虽然正确但位置错误。
游戏会记录你的尝试次数,并在你成功破解后给出得分。
■ECLIPSE REACT
一款反应时间游戏。
系统会等待一段随机时间,然后提示你按下按钮。
如果按键过早,就会失败。
如果你能准确等待信号并迅速反应,就能获得更高的分数。
■反应时间游戏。
系统会等待一段随机的时间,然后提示你按下按钮。如果过早按下,就会失败。如果你能准确等待信号并迅速反应,就能获得更高的分数。
■ECLIPSE 记忆
这款游戏专为视觉和听觉记忆而设计。LED 矩阵会按顺序依次显示一个象限,每个象限都有对应的音效。
第一关有一个闪烁。
第二关有两个。
第三关有三个。
等等......
观看完这一系列操作后,你将使用旋转编码器按相同顺序选择象限。声音是游戏的一部分,而非单纯的装饰。
SNAKE
然后还有蛇。
它完全依靠UNO R4 WiFi内置的LED矩阵运行。旋转编码器控制转动,苹果闪烁,LCD显示分数,游戏还能检测到撞墙和撞身体的情况。最高分被保存在EEPROM中,因此重启设备不会清空数据。
将一个真正可玩的“蛇”游戏成功移植到12×8 LED矩阵上,可能是这个项目中最有趣的部分之一。
传感器
ECLIPSE CORE 还设有专门的“传感器”部分,而不是将所有传感器都直接放在主菜单中。
目前包含以下传感器:
•光线 — 读取光敏电阻
•距离 — 使用 HC-SR04
•温度/湿度 — 使用 DHT11
DHT11 连接到 D4 引脚,而其他传感器则使用各自的独立输入接口。
我还添加了一个全局传感器设置功能,用户可通过“设置”应用来禁用某些传感器。
音乐
最终我决定,蜂鸣器不应只发出菜单提示音。它应该能够播放音乐。因此,ECLIPSE CORE 现在拥有一个“歌曲”应用程序。
目前包含以下曲目:
•SOLUNE
•Haven
•Cannon in D
•Für Elise
原始的 SOLUNE 和 HAVEN 曲目来自 MIDI 文件,并已改编为单音序列,可实际通过被动式蜂鸣器播放。这两首歌均出自我的电子游戏《SOLUNE》。显然,这些音乐听起来不会像真正的钢琴演奏。这正是其独特之处。
这是一个微型 Arduino,通过小型压电蜂鸣器播放可辨识的音乐,我觉得这相当酷。
设置与持久化数据
我也希望 ECLIPSE CORE 能更像一个真实设备运行。
因此,它配备了“设置”应用程序。
目前你可以控制:
•声音
•传感器
这些设置已保存到EEPROM中,意味着设备关机后仍会保留。
游戏中的高分记录也具有持久性。
因此,ECLIPSE CORE 不再只是从头到尾运行一个程序,而是真正具备了跨会话持续保存信息的功能。
其中一个最棘手的问题:LED矩阵
UNO R4 WiFi内置的LED矩阵本应让项目更简单,但最终却成了其中最令人头疼的部分之一。
官方的Arduino_LED_Matrix库使用定时器刷新系统,但我遇到了一个问题:即使编译正常,该矩阵在本项目中仍然显示为空。
经过大量调试后,我最终实现了自己手动扫描矩阵的方法。
不再依赖库的自动刷新,ECLIPSE CORE 通过维护一个12×8的帧缓冲区,并持续扫描每个独立的LED来实现显示。
终于成功了。
当我长时间调试后,看到ECLIPSE标志真的出现在电路板上时,那一刻正是那种“终于!”的瞬间,让电子项目变得值得完成。
本文编译自hackster.io





