デジタルダイス

このコードは、74HC595 シフトレジスタと7セグメントデジタルディスプレイを使用して、サイコロを振るシミュレーションを行います。サイコロを振るシミュレーションは、直接チルトスイッチを振ることで起動します。このアクションにより、デジタルディスプレイは1から6の間のランダムな数をサイクルし、サイコロの振る動作をシミュレートします。短い間隔の後、ディスプレイは停止し、サイコロの振りの結果を意味するランダムな数を表示します。

必要なコンポーネント

このプロジェクトには以下のコンポーネントが必要です。

全体のキットを購入すると便利です。こちらがリンクです:

名称

このキットのアイテム数

リンク

Elite Explorer Kit

300+

Elite Explorer Kit

以下のリンクから別々に購入することもできます。

コンポーネント紹介

購入リンク

Arduino Uno R4 WiFi

-

ブレッドボード

BUY

ジャンパーワイヤー

BUY

抵抗器

BUY

チルトスイッチ

-

74HC595

BUY

7セグメントディスプレイ

BUY

配線図

../_images/05_dice_bb.png

回路図

../_images/05_digital_dice_schematic.png

コード

注釈

  • ファイル 05_digital_dice.inoelite-explorer-kit-main\fun_project\05_digital_dice のパスから直接開くことができます。

  • または、このコードをArduino IDEにコピーしてください。

どのように動作しますか?

以下はコードの詳細な説明です:

  1. 変数の初期化:

    dataPin, clockPin, latchPin:74HC595用のピン。 buttonPin:ボタンが接続されているデジタルピン。 numbers[]:共通アノードデジタルチューブで1から6までの数を表すエンコーディングを格納する配列。

  2. 揮発性変数:

    rolling:ダイスが現在ローリング中であるかどうかを示す揮発性変数。 割り込みサービスルーチンとメインプログラムの両方でアクセスされるため、揮発性として宣言されます。

  3. setup()

    関連するピンのモードを設定します。 内部プルアップ抵抗を使用してボタンの入力モードを設定します。 ボタンに割り込みを割り当て、ボタンの状態が変わったときにrollDice関数を呼び出します。

  4. loop()

    rollingがtrueであるかどうかをチェックします。trueの場合、1から6の間のランダムな数を表示し続けます。ボタンが500ミリ秒以上押されている場合、ローリングは停止します。

  5. rollDice()

    これはボタンの割り込みサービスルーチンです。ボタンが押されている(低レベル)かどうかをチェックします。もしそうなら、現在の時間を記録し、ローリングを開始します。

  6. displayNumber()

    この関数はデジタルチューブに数を表示します。74HC595シフトレジスタを通じてデジタルチューブに数を送信します。