デジタルダイス¶
このコードは、74HC595 シフトレジスタと7セグメントデジタルディスプレイを使用して、サイコロを振るシミュレーションを行います。サイコロを振るシミュレーションは、直接チルトスイッチを振ることで起動します。このアクションにより、デジタルディスプレイは1から6の間のランダムな数をサイクルし、サイコロの振る動作をシミュレートします。短い間隔の後、ディスプレイは停止し、サイコロの振りの結果を意味するランダムな数を表示します。
必要なコンポーネント
このプロジェクトには以下のコンポーネントが必要です。
全体のキットを購入すると便利です。こちらがリンクです:
名称 |
このキットのアイテム数 |
リンク |
---|---|---|
Elite Explorer Kit |
300+ |
以下のリンクから別々に購入することもできます。
コンポーネント紹介 |
購入リンク |
---|---|
- |
|
- |
|
配線図
回路図
コード
注釈
ファイル
05_digital_dice.ino
をelite-explorer-kit-main\fun_project\05_digital_dice
のパスから直接開くことができます。または、このコードをArduino IDEにコピーしてください。
どのように動作しますか?
以下はコードの詳細な説明です:
変数の初期化:
dataPin
,clockPin
,latchPin
:74HC595用のピン。buttonPin
:ボタンが接続されているデジタルピン。numbers[]
:共通アノードデジタルチューブで1から6までの数を表すエンコーディングを格納する配列。揮発性変数:
rolling:ダイスが現在ローリング中であるかどうかを示す揮発性変数。 割り込みサービスルーチンとメインプログラムの両方でアクセスされるため、揮発性として宣言されます。
setup()
:関連するピンのモードを設定します。 内部プルアップ抵抗を使用してボタンの入力モードを設定します。 ボタンに割り込みを割り当て、ボタンの状態が変わったときにrollDice関数を呼び出します。
loop()
:rollingがtrueであるかどうかをチェックします。trueの場合、1から6の間のランダムな数を表示し続けます。ボタンが500ミリ秒以上押されている場合、ローリングは停止します。
rollDice()
:これはボタンの割り込みサービスルーチンです。ボタンが押されている(低レベル)かどうかをチェックします。もしそうなら、現在の時間を記録し、ローリングを開始します。
displayNumber()
:この関数はデジタルチューブに数を表示します。74HC595シフトレジスタを通じてデジタルチューブに数を送信します。