Arduino UNOとLCDで作るデジタル『カタンの開拓者たち』ダイス
必要な部品と材料
| 部品 | 数量 |
|---|---|
| Arduino UNO | 1 |
| Adafruit標準LCD - 16x2 白文字/青背景 | 1 |
| SparkFun プッシュボタンスイッチ 12mm | 1 |
このプロジェクトについて
『カタンの開拓者たち』が大好きなので、デジタルダイスを作ってみました。最初は赤色LED 7個で作ろうとしましたが、カタンには2個のダイスが必要だと気づき、LCDディスプレイを使うことにしました。
ディスプレイのセットアップ
いつも通りLCDディスプレイをセットアップします。やり方がわからない場合は、こちらの手順を参照してください。

ボタンの追加
ダイスを振るたびに押すボタンを追加します。傾斜センサを使って、実際にダイスを振る動作を模倣することもできます。
コードと初期テキスト
コードを追加します。LiquidCrystalライブラリのインクルードを忘れずに。setup()では、ディスプレイの初期テキストを「Roll the dice!」に設定しています。お好みのテキストに変更可能です。

緊張感を演出
ボタンが押されるたびに呼ばれるbuildUp関数を作り、ダイスの目が出るまでの緊張感を演出します。ディスプレイは16文字×2行です。両行に1〜6のランダムな数字をどんどん表示し、表示速度を徐々に速めていきます。forループでこれを実現しています。ディスプレイの行数や文字数が異なる場合はコードを調整してください。
初期遅延を220ミリ秒とし、16で割った値(約13.75→13)を毎ループ減算しています。表示速度を変えたい場合はこれらの数値を調整してください。

ダイスの目を表示
いよいよ実際のダイスです。2個のダイスを模して、各行の中央に数字を表示します。setCursorで位置を指定しています。お好みの位置に変更可能です。

「盗賊」の処理
カタンでは「7」が特別な目です。7が出たときに「The Robber(盗賊)」というメッセージを表示するようにしました。これで全員が手札枚数を確認できます。他のゲームで使う場合はこの部分を削除または修正してください。
楽しもう!
友人を招いて『カタンの開拓者たち』をプレイしましょう!
スケッチ
#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);
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() {
diceButton = digitalRead(10);
diceOne = random(1, 7);
diceTwo = random(1, 7);
if (diceButton == HIGH) {
buildUp();
lcd.clear();
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");
}
}
}
製造プロセス
- サイコロの歴史・設計・製造:古代ツールから現代ゲームまで
- 液晶ディスプレイ(LCD):技術、製造、将来展望
- Primal Display:Raspberry Pi LCD温度モニターの構築
- Kuman 3.5インチTFTディスプレイをRetroPieにインストールするステップバイステップガイド
- Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
- 4511 7セグメントデコーダの活用:実践的BCD表示チュートリアル
- 表示管:CRTからキャットアイインジケータまで
- 高度スペクトル解析:波形と高調波の解釈
- C#メソッドオーバーロード完全ガイド:概念、例、ベストプラクティス
- Verilogタスクの理解:関数との違い、構文、使用法
- Verilog表示タスクのマスター:効率的なデバッグとログ出力