摇一摇骰子——Arduino Nano 驱动 8×8 LED 矩阵
零件与材料
| 零件 | 数量 | 备注 |
|---|---|---|
| Arduino Nano R3 | 1 | 体积小巧,适合内置 |
| 3mm 8×8 点阵模块(MAX7219) | 1 | 含驱动芯片,仅需 3 根信号线 |
| 倾斜/振动开关模块 | 2 | 正交安装,可靠检测摇晃 |
| 滑动开关 | 1 | 电源开关 |
| MT3608 升压模块 | 1 | 将 2×AAA 电池 3V 升至 5V |
所需工具
- 电烙铁
- 热熔胶枪
软件与服务
- Arduino IDE
- Autodesk Fusion 360(外壳建模)
项目背景
一年前父子俩用 Arduino 和几颗 LED 做了一个电子骰子,现在升级为 2.0 版:改用摇晃触发、8×8 LED 矩阵显示、3D 打印外壳、硬件中断检测摇晃、物理模拟骰子滚动效果。
关键技术点
倾斜传感器
玻璃管内钢珠滚动接通触点,两个传感器正交安装,无论哪个方向摇晃都能触发。连接到 Arduino Nano 的 D2、D3 引脚(硬件中断引脚)。
硬件中断
使用 attachInterrupt() 在钢珠触点闭合瞬间立即响应,避免主循环轮询遗漏信号。中断服务程序仅增加“摇晃计数”与速度变量。
8×8 LED 矩阵 (MAX7219)
仅需 DIN、CLK、CS 三线控制,库函数简单。注意插座方向:若显示上下颠倒,将矩阵取出旋转 180° 重插即可。
物理模拟动画
六个骰子点在矩阵上弹跳、逐渐减速;摇晃幅度决定初速度。显示结果时,点从随机位置滚动到标准骰子点阵位置。
供电方案
最初用两颗 CR2032 钮扣电池,续航极短。改为 2×AAA 电池 + MT3608 升压至 5V,接入 Arduino VIN 引脚,稳定可靠。
3D 打印外壳
三部分:上盖、下盖(含电池仓)、磨砂亚克力面板。配合公差 0.1 mm,无需螺丝即可卡合,方便换电池。
代码结构
DicePic[8][6][2]定义 6 面骰子点在 8×8 矩阵上的坐标(-1 表示熄灭)。- 每个点维护
X/Y 位置、方向、速度,通过DoStep()逐帧更新。 MoveDots()处理弹跳逻辑;ShowDicePic()处理结果滚动动画。- 主循环每 50 ms 执行一次,统计每秒摇晃次数,超过 5 次重新进入摇晃模式,静止 2 秒后随机生成结果并播放动画。
组装要点
- Arduino Nano 排针焊接成 Shield 形式,矩阵模块同理,居中布局节省空间。
- 倾斜传感器短导线连接 D2/D3 及 5V/GND。
- 亚克力面板与矩阵用热熔胶固定;开关、升压模块、电池弹片分别热熔胶固定。
- 上下盖卡合完成。
原理图

制造工艺
- 骰子的历史、设计与制造:从古代工具到现代游戏
- Arduino 飞行模拟器 2020 实体开关面板
- Arduino 数字骰子:LCD 显示随机点数的电子骰子
- DIY 蓝牙控制 Arduino 间谍小车
- FlickMote:基于手势的智能家居红外遥控器
- DIY Arduino TV-B-Gone:万能关机遥控器
- 自制大尺寸LED主时钟带闹钟功能 — 12米外清晰可见
- 自制 16×8 LED 矩阵俄罗斯方块游戏机:Arduino Nano + 74HC595 驱动
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- Arduino 项目优化供电方案:从按键开关到电池监测与数据记录
- 智能无线开关控制器:Arduino + 433MHz 远程操控墙壁开关
- Arduino 井字棋游戏:MAX7219 点阵屏 + 纸板外壳 DIY