复古街机时钟:Arduino 驱动的互动床头闹钟,带街机动画
元器件与物料
| Arduino Mega 2560 | ×1 |
| 3.2" TFT LCD 触摸屏 + Mega 扩展板 | ×1 |
| DS3231 RTC 实时时钟模块 | ×1 |
| ISD1820 语音录放模块 + 扬声器 | ×1 |
| PLA 耗材(3D 打印外壳) | 若干 |
| 双组分环氧树脂胶 / 热熔胶枪 | ×1 |
| USB 电源线 2m + 充电头 | ×1 |
| 扎带 ×3 | ×1 |
可选:自动背光调节元件(仅床头钟需求)
| 270 kΩ 电阻 | ×1 |
| 3.3 V 稳压二极管 | ×1 |
| 0.5 W 47 Ω 电阻 | ×1 |
| 光敏电阻 (LDR) | ×1 |
所需工具
- 3D 打印机(Creality Ender 3 等)
- 电烙铁、基础电子工具
应用与在线服务
- Arduino IDE(建议 v1.0.6,因库兼容性)
项目简介
制作一款带触摸屏的复古街机风格床头闹钟,内置四款可切换程序:
- 街机时钟:DK Mario、Space Invaders、Pac-Man 动画轮播
- 吃豆人时钟:可交互的吃豆人游戏+时钟功能
- DK 时钟:可交互的大金刚游戏+时钟功能
- 翻滚幽灵:基于 Flappy Bird 的吃豆人幽灵游戏
支持自定义闹铃录音(如吃豆人开场音乐),3D 打印外壳,自动背光调节,适合怀旧玩家或作为创意礼物。
步骤 1:准备材料
详见上表,屏幕/扩展板/主板常可作为套件一次性购买。
步骤 2:3D 打印外壳
模型文件见 Thingiverse,按说明打印前后盖及支撑结构。
步骤 3:电路组装
1. RTC 模块
将 DS3231 粘贴于 Mega 背面,用泡沫垫隔离防止短接。可直接焊接 SDA/SCL 至 Mega 对应引脚,VCC/GND 飞线连接。
2. 语音模块
ISD1820 同样粘贴于背面,控制引脚接 Mega D8,电源并联 5V/GND。录音时按住模块 REC 键对着麦克风播放音频,播放由 Arduino 拉低 D8 触发。
3. 自动背光调节(可选)
- 外壳钻两 3 mm 孔引出 LDR 引脚,内侧热熔胶固定,引线接 A7 并串联 270 kΩ 下拉。
- 拆下 TFT 屏,刮开 PIN 19 (LED_A) 根部塑料,将引脚折平外弯,焊接 47 Ω 电阻接 Mega D9(PWM),同引脚并联 3.3 V 稳压二极管接地(防过压)。
- 代码中根据 A7 读值(>120 全亮 255,≤120 暗屏 45)自动调节 PWM 占空比。
4. 屏幕与扩展板
将 TFT 插入扩展板,再插至 Mega 顶部。RTC 带纽扣电池掉电走时,闹钟时间存 EEPROM 掉电不丢失。
步骤 4:加载代码与库
必备库(随教程提供压缩包)
UTFT.h、URTouch.h(Rinky-Dink Electronics)Time.h、DS1307RTC.hWire.h、EEPROM.h(IDE 自带)
屏幕芯片兼容性修正
- Sainsmart 屏:修改
initlcd.h中LCD_Write_COM_DATA(0x01, 0x2B3F)→0x3B3F - 控制器芯片:若上电白屏,多为 ILI9341,将构造函数
UTFT myGLCD(SSD1289,...)改为UTFT myGLCD(ILI9341_16,...) - 触摸 Y 轴反转:搜索
yT = myTouch.getY();改为yT = 240 - myTouch.getY();(两处)
图形文件
所有 .c 位图文件需与 .ino 同目录,IDE 会自动编译链接。
时钟设置
上传成功后点击屏幕中心进入设置菜单,24 小时制设置时间/闹钟,按 SAVE 保存。
闹铃测试
录音:按住 ISD1820 REC 键播放音频;测试:按 PLAY-E 键。设置闹钟时间临近,到时触发 D8 低脉冲播放。触摸屏幕中心关闭闹铃并回主界面。
步骤 5:整机组装
- 外壳后盖钻孔穿 USB 线,剥皮焊接至 Mega USB 接口焊盘(VCC/GND/D+/D-),利用板载过流保护,且免拆机升级固件。热熔胶加固线缆根部,扎带做线夹防拉脱。
- 将电路板对齐前面板四个导向柱,通电确认画面居中后热熔胶固定。
- 合盖,理顺 USB 线,插上充电头即用。
代码示例(主程序片段)
/* Retro Arcade Clock - TechKiwigadgets V1 */
#include <UTFT.h> #include <URTouch.h> #include <EEPROM.h>
#include <Time.h> #include <Wire.h> #include <DS1307RTC.h>
UTFT myGLCD(SSD1289,38,39,40,41);
URTouch myTouch(6,5,4,3,2);
// ... 完整代码见项目附件(四款程序分别打包)
// 1.RetroArcadeClockTechKiwigadgetsV1.zip
// 2.Retro_Pacman_Clock_V10.zip
// 3.Retro_DK_Clock_V3.zip
// 4.Tumble_Ghost_V10.zip
原理图

3D 打印模型
制造工艺
- 布谷鸟钟:历史、工艺与现代演变
- Arduino POV 时钟:自制视觉暂留 LED 显示器
- DIY Arduino单词时钟 – 极简优雅的实时文字显示
- TeleBall:自制 Arduino 掌上复古游戏机(打砖块 + 双人网球)
- 自制大尺寸LED主时钟带闹钟功能 — 12米外清晰可见
- Ingegno 复古游戏机:Arduino Nano 重现 8 位经典
- 意大利语单词时钟:Arduino Nano + NeoPixel 144 灯珠 + LCD + RTC 打造
- 用 Arduino UNO 制作柏林时钟 – DIY LED 矩阵时钟
- 模拟指针风格 POV 时钟:Arduino Nano + 17 LED + 霍尔传感器
- 无限镜面时钟:极致优雅与精准计时的融合
- 构建LED定序器:555定时器与4017计数器——分频与去抖动
- Verilog 时钟发生器设计与实现指南