Arduino 数字骰子:LCD 显示随机点数的电子骰子
组件与物料
- Arduino UNO ×1
- 1602 字符 LCD(16×2,白字蓝底)×1
- 旋转电位器 10 kΩ(调节 LCD 对比度)×1
- 轻触按键(带断路板)×1
- 面包板、杜邦线、USB 线
项目思路
按下按键 → LCD 显示“Rolling dice...” → 延时 4 秒 → 显示两个 1–6 的随机数,模拟投掷两颗骰子。释放按键回主界面。
接线表
| LCD 引脚 | Arduino |
|---|---|
| RS | D7 |
| E | D8 |
| D4 | D9 |
| D5 | D10 |
| D6 | D11 |
| D7 | D12 |
| VSS/RW/K | GND |
| VDD/A | 5V |
| VO | 电位器中间脚 |
| 按键信号脚 | D2 |
完整代码
#include
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
const int BTN_PIN = 2;
const int LED_PIN = 13;
byte diceChar[8] = {
B00000, B00000, B11111, B11001,
B10101, B10011, B11111, B00000
};
void setup() {
lcd.begin(16, 2);
lcd.createChar(0, diceChar);
pinMode(LED_PIN, OUTPUT);
pinMode(BTN_PIN, INPUT_PULLUP); // 内部上拉,按下为 LOW
randomSeed(analogRead(A0));
lcd.write(byte(0));
lcd.print(" Digital dice ");
lcd.write(byte(0));
delay(1000);
}
void loop() {
if (digitalRead(BTN_PIN) == LOW) { // 按下
lcd.clear();
lcd.print("Rolling dice...");
delay(4000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Dice 1 = "); lcd.print(random(1, 7));
lcd.setCursor(0, 1);
lcd.print("Dice 2 = "); lcd.print(random(1, 7));
}
delay(150);
}
改进建议
- 加入震动传感器(SW-420)替代按键,摇一摇投骰子。
- 用 8×8 点阵或 OLED 显示骰子点阵图案。
- 增加声音反馈(蜂鸣器模拟骰子碰撞声)。
制造工艺
- 基于 Edge Impulse 的 TinyML 语言检测器:Arduino Nano 33 BLE Sense 实战
- Arduino Nano 与 MPU-6050 构建实时陀螺仪游戏
- DIY 钢铁侠人偶:Arduino 控制超声波触发音效与灯光
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- DIY Arduino 加湿器控制器:继电器安全控制高压电路
- Arduino 声纳实时测距与 Processing 可视化
- 声控氛围灯:Arduino Nano + 麦克风模块 + WS2812B 灯珠
- Arduino Nano 驱动 NeoPixel 矩阵:自制霓虹乒乓游戏
- DIY Arduino 手柄方向盘 - 游戏竞速模拟器自制指南
- Arduino 101 计步器:集成 DHT11 温湿度 + LCD 显示步数/距离/卡路里
- Arduino RGB 颜色混合器 – 分步制作教程
- 智能插座:基于 Arduino 与 RTC 的 120V 定时开关插座