当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]它最初只是一个相对简单的电子项目,但逐渐发展壮大。从一个显示屏、几个输入接口和一些基础传感器开始,最终演变成一个拥有独立菜单系统、游戏功能、持久性设置、高分记录、传感器应用、音乐、音效,甚至自身视觉标识的小型嵌入式系统。

它最初只是一个相对简单的电子项目,但逐渐发展壮大。从一个显示屏、几个输入接口和一些基础传感器开始,最终演变成一个拥有独立菜单系统、游戏功能、持久性设置、高分记录、传感器应用、音乐、音效,甚至自身视觉标识的小型嵌入式系统。

说实话,这个项目的很多灵感来自于我不断思考的问题:“好吧,那还能让这个设备做些什么呢?”正是这个问题,让 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

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