制作一个交互式街机床头钟

科技观察员

描述

制作一个交互式街机床头钟

这是一个交互式街机床头钟,带有触摸屏和动画街机人物,并且您可以录制您选择的闹钟声音。

该项目包括一个 3D 打印案例和四个可供选择的独立程序

Arcade Clock - DK Mario、Space Invaders 和 Pac-Man 动画

Pacman Clock - 具有时钟功能的交互式动画吃豆人游戏

DK Clock - 具有时钟功能的交互式动画DK游戏

Tumble Ghost - 基于 Flappy Bird 的动画吃豆人幽灵游戏

对于喜欢重温 80 年代街机游戏角色的怀旧情怀的人来说,制作起来充满乐趣,也是一份很棒的礼物。

第 1 步:收集材料

pYYBAGK5eiOAZrvPAARZ_Y6K_qw318.png

Arduino 板 - Arduino Mega 2560

触摸屏 Arduino 扩展板 - 3.2“ Mega Touch LCD 扩展板扩展板

触摸屏 - 用于 Arduino Mega 2560 的 3.2” TFT LCD 显示屏 + 触摸屏

实时时钟模块 - DS3231 RTC

录音机模块-ISD1820录音机

3D打印机用PLA灯丝

用于将外壳粘合在一起的两部分环氧树脂

USB 电缆 2m 长 USB 充电器(用于时钟的电源)

热胶枪

束线带 X 3

仅在床头钟的情况下才需要可选的自动背光调光组件:

电阻 270k 欧姆

稳压二极管 3.3v

0.5 瓦电阻 47 欧姆

光敏电阻 (LDR)

第 2 步:打印 3D 外壳

你可以在此找到我的3D打印外壳文件。

第 3 步:构建电路

pYYBAGK5eh-ABKvIAAMbwYzr08Y209.png

整个电路包含实时时钟、Arduino Mega、声音模块、触摸屏和屏幕屏蔽。

实时时钟

poYBAGK5ehyAcKmHAAPGhoHsM9I734.png

如图所示,将实时时钟安装在 Arduino Mega 背面。我使用了热胶枪和包装泡沫以确保它们不会接触并且有一些缓冲来吸收运动。就我而言,我将 2 个 RTC 腿直接焊接到 Arduino 上,并使用连接线将 5v 和 GND 连接到 Arduino。

pYYBAGK5eheAJVcOAAOfJnkqnTs851.png

录音模块

这些真的很酷且易于使用。以与上述类似的方式,使用泡沫和热胶将模块和扬声器放置在 Arduino 的背面,注意确保它们与接触绝缘。声音模块是由 Arduino 上的 D8 触发的,所以这个和电源需要按照提供的电路图连接。

自动背光调光器(可选)

poYBAGK5ehSAJRZFAAK9T9bYEUY140.png

如果您打算用作床头钟,那么您可能希望在晚上自动调暗背光,以免影响您的睡眠。(如果没有,那么你可以跳过这一步!)不幸的是,TFT 屏幕中的背光是硬连线到 +3.3v 的,不能用 Arduino 调整。这意味着我们必须断开它并重新连接到 Arduino 上的 PWM 引脚来控制背光亮度。我想在对组件上的引脚或轨道造成最小损坏的情况下做到这一点,因此采取了以下方法。请仔细按照以下步骤操作:

(a) 为了实现这一点,光敏电阻 (LDR) 位于单元的背面以检测光。在外壳上钻两个 3 毫米的孔,然后将 LDR 支腿穿过孔。在机柜内部使用热胶将支腿固定到位。在外壳内部焊接两根电线并按照电路图连接它们。根据电路图在 Arduino 的 A7 上添加一个 270k 欧姆电阻。

poYBAGK5ehCADFA5AAJuyRLB0qU125.png

(b) 取下 TFT 显示器,并将其放在坚固的表面上。识别针脚 19 (LED_A) 并小心地去除针脚底部几毫米的塑料。如上图所示,将引脚弯曲并远离连接器。检查 TFT Sheild 是否可以紧密插入,并且弯曲的插针不会阻碍插头或插座。

(c) 将一个 47 欧姆的寄存器焊接到弯曲的引脚上,并将一根电线从电阻器连接到 Arduino Mega 的 D9。Arduino D9 引脚可吸收高达 40mA 的电流,因此电阻器将其限制为小于此值。将一个 3.3v 齐纳二极管连接到同一引脚 (LED_A) 并按照图表将其接地。这样做的目的是保护背光免受过压,因为它将电压调节到 3.3v。

TFT屏幕和Arduino Shield

小心地将 3.2‘ TFT 触摸屏连接器推入 TFT Arduino Shield。然后按照提供的图片小心地连接到 Arduino 的顶部。RTC 有一块电池,因此即使断电也能保持正确的时间。闹钟时间存储在 Arduino 上的 Eeprom 中,这意味着如果停电,它将保留。

第 4 步:加载代码

该项目将需要在编译和运行之前加载以下文件和库。代码是独一无二的,围绕着我借用的库、硬件、一些自定义图形和其他项目的功能构建。

请注意:此项目的代码开发使用了 IDE v1.06,并且一些所需的库已过时。这意味着有些人在加载代码时遇到了新的 IDE 版本 1.6 及更高版本的问题。因此,为了简单起见,我建议人们使用 IDE v1.06,并在教程第 4 步底部的 zip 文件中包含正确版本的库文件。

Arduino IDE

我一直在使用早期版本的 Arduino IDE,因此为了简单起见,我建议您在安装代码之前在台式机上下载 Arduino IDE 1.06 版。你可以从这里得到他的版本。

TFT 屏幕变化

TFT 屏幕和制造商的模糊性导致了这些注意事项。

(a) Sainsmart - 如果您购买了 TFT 设备背面标有 Sainsmart 品牌的 3.2 英寸 TFT 屏幕,您会发现他们必须修改库以解决显示问题。如果您已经购买了 Sainsmart TFT 显示器,下面有修复

编辑文件“initlcd.h”并修改以下行

LCD_Write_COM_DATA(0x01, 0x2B3F);

LCD_Write_COM_DATA(0x01, 0x3B3F);

您需要重新启动 IDE,然后将代码重新加载到 Arduino。

(b.) TFT 控制器芯片组 - 购买了 3.2 英寸 TFT 屏幕的人可能会发现他们也可能拥有两种不同的芯片组“SSD1289”或“ILI9341”中的一种,令人讨厌的是,在线区分差异并不容易。好消息是它很容易修复。如果加载代码后出现空白屏幕,那可能是因为它是 ILI9341 控制器。

要修复,您需要对代码进行以下更改。编辑代码,修改下面这行代码

UTFT myGLCD(SSD1289, 38, 39, 40, 41); //应根据您的 Display/Schield 模型调整参数

UTFT myGLCD(ILI9341_16, 38, 39, 40, 41); //应根据您的 Display/Schield 模型调整参数

现在尝试将代码重新加载到 Arduino。

(c.)倒置触摸屏控制

一些制造商报告说 Y 轴触摸屏按钮已被反转。确定了对此的修复,其中两行代码要更改以翻转触摸屏读数。

查找:“yT = myTouch.getY();” 将其更改为:“yT = 240 - myTouch.getY();”

不要忘记搜索两次,第一个实例是在时钟模式下控制 pacman,第二个是在设置菜单中。

图形文件

当您开始加载到 Arduino 中时,我在下面包含了一组位图文件,它们需要与 Arduino 代码位于同一子目录中。因此下载以下文件并使用 IDE 进行加载。

设置时钟

成功加载代码后,按屏幕中心,这应该会调出设置屏幕。使用菜单以 24 小时格式设置时间和闹钟。按 SAVE 按钮保存设置。RTC 有一块电池,因此即使断电也能保持正确的时间。闹钟时间存储在 EEPROM 中,这意味着如果断电,它会保留。

测试警报

Sound 模块用于提供警报。ISD1820 由 Arduino D8 引脚控制。通过向麦克风播放声音,同时按下 ISD1820 上的录制按钮,可以轻松添加声音。就我而言,我从另一个设备播放的音频文件中录制了原始的 Pac-Man 介绍音乐。录制声音后,可以通过按下 PLAY-E 按钮来测试录音,该按钮应通过扬声器播放声音。使用设置菜单将时钟时间和闹钟时间设置为相隔几分钟。请务必“设置”警报并按下“保存”菜单按钮。返回主屏幕后,警报应在时间到来时响起。可以通过按下触摸屏面板的中心来关闭警报,从而进入设置屏幕。

触摸屏校准

一些制造商发现设置屏幕上的按钮与 TFT 触摸控件不对齐。在这些情况下,触摸屏需要校准。这可以通过使用 URtouch 库中提供的触摸屏校准代码和说明轻松完成。如果您发现此问题,请按照这些说明进行操作。

四种不同的程序可供选择

1. 街机时钟 - DK 马里奥、太空侵略者和吃豆人动画 2。Pacman Clock - 具有时钟功能的交互式动画 Pacman/Ms Pacman 游戏

3. DK Clock - 具有时钟功能的交互式动画DK游戏

4. Tumble Ghost - 基于 Flappy Bird 的 Pacman Ghost 动画游戏

第5步:把它们放在一起

poYBAGK5egeAYoXVAAQJmoP4UEQ038.png

增加外部电源

最后一步是添加外部电源。使用钻头,在机柜背面添加一个孔。将 USB 电缆穿过后面板,然后按照电路图将 USB 电缆 VCC、GND、D+ 和 D- 线连接到 Arduino USB 连接器的底座。这有两个好处,首先Arduino Mega Boards的USB输入具有过流保护,其次,您可以使用USB电缆上传代码更改而无需拆卸盒子。将电源线绝缘层热粘合到 Arduino 背面,以在组装前后面板时防止电缆张力。在距离 Arduino 连接 6-8 厘米的电源线上,将电缆扎带紧紧地围绕在外壳内侧的电缆上,为电缆添加一个线夹。

在机箱中安装电子设备

将电路放置在前面板顶部,带有四个孔导向器,该导向器应将屏幕中心对准切口。打开电路电源,您可以看到前面板屏幕,检查屏幕图像是否处于正确位置,然后用热胶将其粘合到位。结果是与位于切口孔中心的方形屏幕紧密配合。

总装

将前面板轻轻推到后面板上,然后轻轻拉动 USB 电源线以收紧后面板的松弛部分。线夹在这里很有用,可以保护接线的任何损坏。插入 USB 充电器,您就可以开始使用了。

pYYBAGK5egSAZnrlAAbxic-pCIg481.png

打开APP阅读更多精彩内容

电子工程师必装软件(附AD封装库

值得收藏!用过都说好!

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分