亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

自制 16×8 LED 矩阵俄罗斯方块游戏机:Arduino Nano + 74HC595 驱动

项目概述

本项目使用 Arduino Nano、两片 74HC595 串并转换芯片驱动自制 16 列 × 8 行 (128 个) 黄色 LED 矩阵,实现完整俄罗斯方块游戏。4 个按键控制左移、右移、下落、旋转,内置蜂鸣器按键音效,定时器中断刷新屏幕,行消除计分,Game Over 显示分数滚动动画。硬件采用纯手工焊接矩阵,展示移位寄存器行列扫描驱动原理,适合电子爱好者进阶练习。

所需组件与物料

硬件架构与驱动原理

列驱动:双 74HC595 级联

行驱动:Arduino 直接扫描

按键接口

4 个按键分别接 A4~A7 模拟口作数字输入,内部上拉,按下接地读取低电平。代码中通过模拟读取 >500 判定按下 (兼容干扰)。

核心游戏逻辑

方块定义

10 种方块 (含 7 标准 + 3 变体) 以 5×7 布尔数组 `lib[10][5][7]` 存储,每种方块 4 个旋转态预计算。

关键函数

定时器中断刷屏

Timer1 配置 2kHz 中断 (OCR1A=259, 1024 分频),ISR 中调用 `LEDRefresh()` 执行逐行扫描。主循环仅处理按键、下落计时、游戏逻辑,显示与逻辑解耦。

代码亮点与技巧

  • 软件修正引脚排序错误:作者焊接行引脚顺序为 12345670 (对应 D5~D12),`LEDRefresh()` 中通过数组映射修正,避免重新焊接。
  • 随机种子熵源:组合 4 路模拟口浮空读值乘积 + `random()` 多次迭代,增强随机性。
  • 按键防抖与延时分级:旋转/左右 150ms/80ms,下落 30ms,手感优化。
  • 无阻塞延时:主循环用 `millis()` 控制自动下落间隔 (`delay_` 随分数递减加速)。

制作难点与避坑指南

  • 128 颗 LED 焊接:建议先做 8×8 小矩阵测试,再拼接。排针间距 2.54mm,LED 引脚需修整成型,耗时 4~6 小时。
  • 74HC595 级联时序:先移入低 8 列数据 (后级),再移入高 8 列数据 (前级),最后锁存。
  • 行扫描电流:单行 16 颗 LED 同时亮,每颗 5mA 共 80mA,超出 GPIO 40mA 上限,**必须**加 NPN 三极管 (如 2N2222) 或 ULN2803 达灵顿阵列驱动行阴极,原作者直接驱动有烧毁风险。
  • 供电容量:全亮约 640mA,USB 500mA 不足,需外接 5V 2A 电源。

扩展建议

  • 改用 WS2812B 单线驱动,省去移位寄存器与行扫描,支持彩色特效。
  • 增加 MAX7219 驱动 8×8 模块级联,简化硬件。
  • 加入下一块预览、暂存、幽灵块、T-Spin 判定等现代规则。
  • 移植至 ESP32 增加 WiFi 对战、网络排行榜。

项目文件

  • Arduino 代码:`Tetris_16x8.ino` (文末完整代码)
  • 原理图:`schematic.png` (含 74HC595 级联、行驱动、按键接线)

制造工艺

  1. Arduino Nano 与 MPU-6050 构建实时陀螺仪游戏
  2. Arduino 数字骰子:LCD 显示随机点数的电子骰子
  3. DIY Arduino TV-B-Gone:万能关机遥控器
  4. DIY Arduino USB 游戏手柄 — 自制高性能游戏手柄
  5. 用 Arduino Nano 与 MAX7219 制作 24×16 LED Pong 游戏机
  6. Pixel Chaser:Arduino Nano 单键 NeoPixel 追逐小游戏
  7. Arduino 8×8 LED 矩阵翻页时钟 - DIY 实时时钟项目
  8. Arduino Nano 驱动 NeoPixel 矩阵:自制霓虹乒乓游戏
  9. Arduino Nano 手持盖革计数器:DIY 核辐射检测仪
  10. Arduino Nano 与 WS2812 灯带打造 1D 乒乓球游戏——分步 DIY 教程
  11. DIY LED 轮盘赌游戏机 —— Arduino Nano 打造单人桌面街机
  12. Never Ride Alone:骑行安全守护神——基于 Sigfox 的智能自行车报警器