Цифровые кубики для «Поселенцев Катана» на Arduino UNO и LCD
Компоненты и материалы
- Arduino UNO — 1 шт.
- LCD-дисплей 16×2 (синий с белой подсветкой) — 1 шт.
- Тактическая кнопка 12 мм — 1 шт.
- Перемыжки, макетная плата
О проекте
Устройство заменяет два игральных кубика в настольной игре «Поселенцы Катана». Нажатие кнопки запускает анимацию «броска» — быстро сменяющиеся случайные числа на двух строках дисплея, замедляющиеся к финишу. Результат — два числа от 1 до 6. Если сумма равна 7, появляется надпись «The Robber» (Разбойник), напоминая игрокам сбросить лишние карты.
Сборка
- Подключите LCD по стандартной схеме (RS=12, E=11, D4=5, D5=4, D6=3, D7=2).
- Кнопку подключите к пину D10 (один контакт на GND, используется INPUT_PULLUP).
- Установите библиотеку
LiquidCrystal(входит в Arduino IDE).
Программный код
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int diceButton = 10;
int reply; int count = 0;
long diceOne; long diceTwo;
void setup() {
lcd.begin(16, 2);
pinMode(diceButton, INPUT_PULLUP);
randomSeed(analogRead(0));
lcd.setCursor(1, 0);
lcd.print("Roll the dice!");
}
void buildUp() {
lcd.clear();
int countDelay = 220;
int setColumn = 0;
for (count = 0; count <= 16; count++) {
lcd.setCursor(setColumn, 0);
lcd.print(random(1, 7));
lcd.setCursor(setColumn, 1);
lcd.print(random(1, 7));
delay(countDelay);
countDelay -= 13;
setColumn += 1;
}
}
void loop() {
if (digitalRead(diceButton) == LOW) { // нажатие (LOW из-за pull-up)
buildUp();
lcd.clear();
diceOne = random(1, 7);
diceTwo = random(1, 7);
lcd.setCursor(7, 0);
lcd.print(diceOne);
lcd.setCursor(7, 1);
lcd.print(diceTwo);
if (diceOne + diceTwo == 7) {
lcd.clear();
lcd.setCursor(7, 0);
lcd.print("7");
lcd.setCursor(3, 1);
lcd.print("The Robber");
}
delay(500); // защита от дребезга
}
}
Использование
Включите питание. На экране «Roll the dice!». Нажмите кнопку — начнется анимация, затем выпадет результат. При сумме 7 — сообщение о Разбойнике. Нажмите снова для следующего броска.
Производственный процесс
- Использование декодера 4511 для 7-сегментного индикатора: практическое руководство по BCD-дисплею
- Индикаторные лампы: от КИП к «Кошачьему глазу»
- Продвинутый спектральный анализ: интерпретация форм волн и гармоник
- История, дизайн и производство кубиков: от древних инструментов к современным играм
- Жидкокристаллические дисплеи (LCD): технология, производство и перспективы
- Освоение перегрузки методов в C#: концепции, примеры и лучшие практики
- Primal Display: создайте монитор температуры на Raspberry Pi с LCD
- Установка дисплея Kuman 3.5″ TFT на RetroPie — Пошаговое руководство
- Понимание задач (Tasks) в Verilog: отличия от функций, синтаксис и применение
- Мастерство задач отображения в Verilog: эффективная отладка и логирование