ATmega328P 双芯片外星人主题老虎机:完整概率数学与 I²C 从机显示
所需组件与材料
| ATmega328P-PU (DIP-28) | ×2(主控 + 显示从机) |
| 8 位共阴七段数码管模块 (MAX7219) | ×1(显示积分) |
| 4×8×8 LED 点阵模块 (MAX7219,仅用 3 块) | ×1(模拟 3 轴滚轮) |
| I²C 2004 字符 LCD (蓝底白字) | ×1(菜单系统) |
| 16MHz 晶振、22pF 电容、100nF/0.1µF/10µF 电容 | 若干 |
| 7805 稳压器、按钮×6、RGB LED、蜂鸣器×2、拨码开关、5V 电源 | 各×1 |
| 万用面包板/焊接板、FTDI/USBasp 烧录器、透明项目盒 | 各×1 |
所需库
LedControl(驱动 MAX7219)TimerFreeTone(无定时器蜂鸣器驱动)LiquidCrystal_I2C+Wire(I²C LCD)
项目简介
基于两颗裸片 ATmega328P-PU(16MHz)构建的外星人主题老虎机:
- 主控芯片:驱动 3×8×8 点阵滚轮、按钮、RGB LED、蜂鸣器、I²C LCD 菜单、I²C 主机向从机发送积分。
- 从机芯片:仅驱动 8 位七段数码管显示积分,接收 I²C 数据。
- 每轴 25 种符号(含飞船、外星人、骰子点数等),三轴独立随机停止。
- 五种中奖方式:三飞船(大奖)、二飞船、一飞船、三同符、二同符,互斥仅按最高赔率派彩。
- 菜单系统:投注额调整、自动模式(百万次压测)、音效开关、统计指标查看、重置、庄家抽成(hold%)设定。
核心数学模型
总组合数 = 25³ = 15,625。各中奖概率精确计算:
| 中奖类型 | 组合数 | 概率 | 赔率(1:x) |
|---|---|---|---|
| 三飞船 | 1 | 0.000064 | 15,624 |
| 三同符(非飞船) | 24 | 0.001536 | 650 |
| 二飞船 | 72 | 0.004608 | 216 |
| 一飞船 | 1,728 | 0.110592 | 8.04 |
| 二同符 | 1,656 | 0.105984 | 8.44 |
| 庄家胜 | 12,154 | 0.777216 | — |
赔付表经电子表格迭代优化,使波动指数 VI < 20(行业可接受),并可在菜单中设定抽成 0-15%(默认 0% 用于压测)。压测百万次验证实测收益落在 90% 置信区间内。
固件架构亮点
- 寄存器级+Arduino 混合编程:按钮用外部中断(PCINT)去抖,定时器空闲留给蜂鸣器。
- 状态机:
machineState位域同时标记 IDLE/SPINNING/AUTO/SHOW_MENU。 - 事件驱动:
ProcessEvents()分发 SPIN/NAV/SELECT/BET/SETTINGS 等事件。 - EEPROM 断电保存:积分、押注、局数、各中奖计数、抽成、写入计数器(~10 万寿命),每 1 万局写入一次。
- I²C 从机协议:主机发送 10 字节(起始积分 4B、增量 2B、目标积分 4B),从机按增量动画滚动数码管。
已知问题与 TODO
- 偶尔有滚轮不动(随机数恰好等于当前符号),非缺陷。
- 滚轮非左→右顺序停止,可排序随机数修复。
- 全局变量已占 80% SRAM,再增功能需优化(如菜单字符串放 Flash)。
- 计划加入掉电检测(BOD)与看门狗(WDT)。
接线速查
主控 ATmega328P
- D0/D1:FTDI TX/RX;D2:旋转按钮(PCINT18)
- D3/D5/D6:RGB LED R/G/B (PWM)
- D7/D8/D9:点阵 DIN/CLK/CS (LedControl)
- D10/D11:蜂鸣器/备用
- D12/D13:未用/触控备用
- A4/A5 (PC4/PC5):I²C SDA/SCL → 从机 & LCD
- A0/A1/A2:导航上/下/选中按钮 (PCINT9/10/11)
- PC6:复位;XTAL1/2:16MHz 晶振
从机 ATmega328P
- D0/D1:FTDI TX/RX
- D9:蜂鸣器
- D10/D11/D12:七段 DIN/CLK/CS
- A4/A5:I²C SDA/SCL ← 主控
- 其余同主控晶振/电源/复位
代码与资源
- GitHub 仓库含
SlotMachine.ino、SlotMachine.h(符号位图)、slotCreditsDisplaySlave.ino、Fritzing 原理图、赔付计算表(Excel, 密码 password)。 - 符号位图以二进制字面量定义,可直接在 .h 中修改外观。
总结
这是一个集硬件焊接、嵌入式 C、概率数学、赌博机合规逻辑于一体的综合练习项目。代码大量注释,适合进阶学习者阅读移植。作者邮箱 dan-murphy@comcast.net 欢迎反馈缺陷。后续将推出焊接版封装教程(Part II)。
制造工艺