0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

科技观察员 来源:NZDoug 作者:NZDoug 2022-06-27 17:37 次阅读

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

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

该项目包括一个 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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 闹钟
    +关注

    关注

    0

    文章

    75

    浏览量

    26788
  • 交互式
    +关注

    关注

    0

    文章

    25

    浏览量

    9642
  • DIY设计
    +关注

    关注

    2

    文章

    59

    浏览量

    19700
收藏 人收藏

    评论

    相关推荐

    基于GAC模型实现交互式图像分割的改进算法

    基于GAC模型实现交互式图像分割的改进算法提出了种改进的交互式图像分割算法。采用全变分去噪模型对图像进行预处理,在去除噪声的同时更好地保护了边缘;提出了种对梯度模值进行曲率加权的边
    发表于 09-19 09:19

    altium designer 10 怎么没智能交互式布线啊

    altium designer 10 怎么没智能交互式布线啊? 前两天看网上出altium designer 10 了,就下了装上了,但是用的时候发现没有智能交互式布线的菜单,由于刚学这个软件不久,想请问各位大虾是怎么回事啊?
    发表于 04-29 22:32

    cadence16.5中allegro与capture交互式布局问题

    Candence 16.5已经发布了段时间了,但总发现问题不断.其实很多问题都是可以解决的,只是我们习惯了以前的操作而已,比如很多人都发现在16.5中,交互式布居然不能使用了,其实只是我们默认没有
    发表于 04-19 22:11

    pcb交互式布线注意事项

    pcb交互式布线注意事项
    发表于 08-18 09:25

    交互式高速PCB设计

    交互式高速PCB设计
    发表于 08-16 16:00

    LabVIEW MathScript交互式窗口加载错误

    LabVIEW MathScript交互式窗口加载错误,重新安装还是出现同样的错误
    发表于 11-05 17:40

    labview TCP数据传输(点对点、交互式点对多点)

    labview TCP数据传输(点对点、交互式点对多点)
    发表于 03-29 21:04

    PCB布局及原理图交互式抓取

    ;合理的成本控制(Design For Cost, DFC) ;整体的美观度。二、依据Orcad原理图进行模块抓取()原理图交互式抓取打开原理图;选择Miscellaneous界面;勾选
    发表于 08-10 10:31

    WEBENCH设计面板交互式产品文件夹

    Explore Now按钮来打开产品文件夹内的交互式设计窗口。这将立即启动弹出窗口,并且用面板中输入的要求创建完整的WEBENCH设
    发表于 09-05 15:37

    怎么使用交互式IO命令打开/关闭电源输出

    我想使用交互式IO命令打开/关闭电源输出(N8738A和N5765A)。我可以使用Agilent Connection Expert查看我的电源......但我找不到任何交互式IO命令来打开/关闭
    发表于 11-19 10:48

    IDE的交互式文档Jupyter Notebook详解

    IDE之Jupyter:交互式文档Jupyter Notebook简介、安装、使用方法详细攻略
    发表于 12-26 10:38

    UVM交互式调试库介绍

    什么是UVM交互式调试库
    发表于 12-17 07:34

    【分享】在AD中生成交互式BOM的工具InteractiveHtmlBomForAD

    InteractiveHtmlBom是Kicad中非常漂亮的插件,可以生成交互式Bom,对手焊党来说非常实用,因为平常是在用AD画图,所以尝试将这个插件移植到AD中,当然这里只实现了基本的功能
    发表于 03-02 18:58

    介绍一个开源的制作交互式BOM的AD插件!

    介绍一个开源的制作交互式BOM的AD插件!
    的头像 发表于 01-10 14:15 4161次阅读
    介绍一个开源的<b class='flag-5'>制作</b><b class='flag-5'>交互式</b>BOM的AD插件!

    如何制作交互式BOM的AD插件

    介绍一个开源的制作交互式BOM的AD插件
    的头像 发表于 01-30 15:09 3710次阅读
    如何<b class='flag-5'>制作</b><b class='flag-5'>交互式</b>BOM的AD插件