私たちは皆、サイコロに精通しており、サイコロを使ってLUDOまたはSANP SIDI(Snake&Ladders)ゲームをプレイすることがよくあります。サイコロは、四方に6つの異なる数字が入ったスクワイアタイプのソリッドボックスです。ゲームをプレイしながら、表面にサイコロを投げて乱数を取得します。このプロジェクトでは、arduinounoボードを使用してデジタルダイスでそれを複製しようとしました。サイコロを投げる代わりに、ここではボタンを押して0から6までの乱数を取得する必要があります。
必要なコンポーネント
- Arduino UNO
- 7セグメントディスプレイ(共通アノード)
- ボタンを押す
- 接続線
- ブレッドボード
- 1k抵抗
- 電源
回路図と説明
上記のデジタルダイス回路に示されているように、arduinoはプロセス全体を制御するために使用されます。回路では2つの押しボタンが使用されます。1つはサイコロを開始するためのもので、もう1つはサイコロをリセットするためのものです。Arduinoはこれら2つのボタンを読み取り、操作を実行します。サイコロの結果を表示するために7セグメントディスプレイが使用されます。
Arduinoはrand()関数を継続的に実行し、その値を一時変数に格納しています。サイコロボタンが押されると、保存された値が計算され、適切な方法を使用して7セグメントに表示されます(記事のプログラミング部分を参照)。
このダイス回路では、共通のアノード7セグメントディスプレイを使用してダイス番号を表示します。これは、arduinoデジタルピン番号6、5、4、3、2、1、0に直接接続されています。7セグメントの共通アノードピンは+5ボルト220オームの抵抗で接続されています。2つの押しボタン、つまりダイスボタンとリセットボタンも接続されており、これらはグランドに対してデジタルピン14(A0)と15(A1)に接続されています。
コードの説明
このプロジェクトのプログラミング部分は、7セグメントディスプレイにランダムなデジタルサイコロ番号を表示するために非常に重要な役割を果たします。Arduinoには、7セグメントディスプレイ用のライブラリは含まれていません。そのため、ライブラリを使用せずにコード全体を作成しました。
まず、7セグメントディスプレイ用のデジタルピンを選択します。
int pin = {6,5,4,3,2,1,0};
その後、6桁のサイコロ、つまり1、2、3、4、5、6の配列を作成します。
char Digit = {0x02、0x79、0x24、0x30、0x19、0x12};
ここで、arduinoピンを出力として使用するように指示しました。
void setup(){for(int i = 0; i <7; i ++)pinMode(pin、OUTPUT); pinMode(dice、INPUT); pinMode(resett、INPUT); digitalWrite(dice、HIGH); digitalWrite(リセット、HIGH);
デフォルトで7セグメントディスプレイにゼロを表示するためのコードを送信します。
int temp = 0x40; for(int i = 0; i <7; i ++){int temp1 = temp&0x01; digitalWrite(pin、temp1); temp = temp >> 1; }
次に、rand()関数を実行して乱数を取得します。
int temp = rand();
そして、サイコロボタンプログラムを押すと、最初にこの乱数をマップし、次にビット単位の演算子を使用して7セグメントディスプレイに数値を送信します。
if(digitalRead(dice)== 0){int k = temp%6; temp =数字; 待つ(); for(int i = 0; i <7; i ++){int temp1 = temp&0x01; digitalWrite(pin、temp1); temp = temp >> 1; } delay(200); }
リセットボタンも同様です。
このプログラムでは、一度に1ビットを送信します。ここでは、7回実行されるforループを適用して、各セグメントに1つずつデータを送信します。