工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino UNOとLCDで作るデジタル『カタンの開拓者たち』ダイス

必要な部品と材料

部品数量
Arduino UNO1
Adafruit標準LCD - 16x2 白文字/青背景1
SparkFun プッシュボタンスイッチ 12mm1

このプロジェクトについて

『カタンの開拓者たち』が大好きなので、デジタルダイスを作ってみました。最初は赤色LED 7個で作ろうとしましたが、カタンには2個のダイスが必要だと気づき、LCDディスプレイを使うことにしました。

ディスプレイのセットアップ

いつも通りLCDディスプレイをセットアップします。やり方がわからない場合は、こちらの手順を参照してください。

Arduino UNOとLCDで作るデジタル『カタンの開拓者たち』ダイス

ボタンの追加

ダイスを振るたびに押すボタンを追加します。傾斜センサを使って、実際にダイスを振る動作を模倣することもできます。

コードと初期テキスト

コードを追加します。LiquidCrystalライブラリのインクルードを忘れずに。setup()では、ディスプレイの初期テキストを「Roll the dice!」に設定しています。お好みのテキストに変更可能です。

Arduino UNOとLCDで作るデジタル『カタンの開拓者たち』ダイス

緊張感を演出

ボタンが押されるたびに呼ばれるbuildUp関数を作り、ダイスの目が出るまでの緊張感を演出します。ディスプレイは16文字×2行です。両行に1〜6のランダムな数字をどんどん表示し、表示速度を徐々に速めていきます。forループでこれを実現しています。ディスプレイの行数や文字数が異なる場合はコードを調整してください。

初期遅延を220ミリ秒とし、16で割った値(約13.75→13)を毎ループ減算しています。表示速度を変えたい場合はこれらの数値を調整してください。

Arduino UNOとLCDで作るデジタル『カタンの開拓者たち』ダイス

ダイスの目を表示

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

Arduino UNOとLCDで作るデジタル『カタンの開拓者たち』ダイス

「盗賊」の処理

カタンでは「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");
    }
  }
}

製造プロセス

  1. サイコロの歴史・設計・製造:古代ツールから現代ゲームまで
  2. 液晶ディスプレイ(LCD):技術、製造、将来展望
  3. Primal Display:Raspberry Pi LCD温度モニターの構築
  4. Kuman 3.5インチTFTディスプレイをRetroPieにインストールするステップバイステップガイド
  5. Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
  6. 4511 7セグメントデコーダの活用:実践的BCD表示チュートリアル
  7. 表示管:CRTからキャットアイインジケータまで
  8. 高度スペクトル解析:波形と高調波の解釈
  9. C#メソッドオーバーロード完全ガイド:概念、例、ベストプラクティス
  10. Verilogタスクの理解:関数との違い、構文、使用法
  11. Verilog表示タスクのマスター:効率的なデバッグとログ出力