Arduino UNO 自制“忍者美元”LCD 小游戏
游戏简介
致敬 Chrome 恐龙游戏,在 16×2 字符 LCD 上实现横版跑酷:美元符号“$”代表主角,自动向右奔跑,按键控制跳跃(避开障碍“#”)与射击(消除障碍“~”),拾取星号“*”得 5 分,跳过障碍得 1 分。分数每 10 分提速,50 分胜利,碰撞失败。内置蜂鸣器音效,双 LED 指示跳跃/射击状态。
硬件清单
- Arduino UNO ×1
- 1602 蓝底白字 LCD(HD44780 兼容)×1
- 面包板 ×2(或 1 块大面包板)
- 10kΩ 电位器 ×1 – LCD 对比度调节
- LED ×2(不同颜色) – 跳跃/射击指示
- 1kΩ 电阻 ×4 – LED 限流
- 12mm 轻触开关 ×2 – 跳跃键(D1)、射击键(D6)
- 无源蜂鸣器 ×1 – D7
- 跳线若干
接线指南
LCD 引脚映射(4 位模式)
| LCD 引脚 | 功能 | Arduino 引脚 |
|---|---|---|
| VSS | GND | GND |
| VDD | 5V | 5V |
| V0 | 对比度 | 电位器中间脚 |
| RS | 寄存器选择 | D12 |
| RW | 读/写 | GND(仅写) |
| E | 使能 | D11 |
| D4-D7 | 数据 | D5-D2 |
| A | 背光+ | 5V |
| K | 背光- | GND |
其它模块
- 跳跃按键:一脚接 D1,另脚接 5V;D1 内部上拉(代码中
INPUT_PULLUP),按下接地读低电平 - 射击按键:同理接 D6
- LED 阳极分别接 D13、D12(代码中复用 LCD 引脚,实测建议改用空闲引脚如 D8、D9),阴极串 1kΩ 接地
- 蜂鸣器:正极接 D7,负极接地
代码逻辑精要
- 主循环每帧清屏重绘,通过
myDelay控制速度(初始 500ms,逐级降至 200ms) - 随机生成障碍与星星位置数组,每帧滚动显示
- 按键检测在帧内完成:跳跃将光标移至第 0 行,射击在当前位置向右发射“~”覆盖障碍
- 碰撞检测:同列同行且未跳跃/未射击 → Game Over
- 胜利/失败播放不同蜂鸣器旋律,3 秒后自动重启
自定义扩展
- 修改
NUMBERTOWIN(代码中为 50)调整胜利分数 - 调整
myDelay阈值改变难度曲线 - 增加关卡、敌人类型、道具(如护盾、加速)
- 移植至 OLED 128×64 实现像素级画面
常见问题
- LCD 不显示/乱码:检查对比度电位器、数据线接触、共地
- 按键无响应:确认引脚号与代码一致,启用内部上拉
- 蜂鸣器无声:检查极性、PWM 引脚冲突
制造工艺
- 国际象棋:从古代起源到现代制造的专家概览
- 弹球机:经典街机游戏的历史、设计与制造
- 美式橄榄球的演变与工艺:从古老游戏到现代NFL标准
- Arduino Nano 与 MPU-6050 构建实时陀螺仪游戏
- 用 Arduino Nano 自制 37 灯珠轮盘赌游戏机
- 3D RGB Arduclock — 蓝牙控制全彩LED时钟带RTC与闹钟
- MyRiver:基于 Arduino MKR FOX 1200 的河流水质远程监测系统
- Arduino + 模拟摇杆互动游戏:五向 LED 反馈
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- DIY Arduino Nano 示波器:10 Hz–50 kHz / 128×64 LCD
- Arduino 驱动的迷你漫游车:自制避障机器人
- Arduino + ThingSpeak 实时气象监测站