注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ここ]をクリックして今すぐ参加しましょう!
6.2 デジタルサイコロ¶
このプロジェクトでは、ボタン、7セグメント表示、および74hc595を使用して電子サイコロを作成します。 ボタンを押すたびに、1から6までのランダムな数字が生成され、7セグメント表示に表示されます。
必要な部品
このプロジェクトで必要な部品は以下のとおりです。
一式を購入するのは確かに便利です。リンクはこちら:
名前 |
このキットのアイテム |
リンク |
|---|---|---|
3 in 1 Starter Kit |
380+ |
以下のリンクから個別に購入することもできます。
コンポーネントの紹介 |
購入リンク |
|---|---|
- |
|
回路図
配線図
コード
注釈
3in1-kit\learning_project\6.2.electronic_diceのパスの下の6.2.electronic_dice.inoファイルを開きます。または、このコードを Arduino IDE にコピーしてください。
コードが正常にアップロードされると、7セグメント表示は0-7を高速でスクロールして表示しますが、ボタンを押すとランダムな数字を表示し、スクロールが停止します。再びボタンを押すと、スクロール表示が再開されます。
どのように動作するのか?
このプロジェクトは、 5.10 シフトアウト(セグメントディスプレイ) をベースに、ボタンを使用して7セグメント表示のスクロール表示を開始/一時停止します。
各ピンを初期化し、ボタンの値を読み取ります。
void setup () { ... attachInterrupt(digitalPinToInterrupt(buttonPin), rollDice, FALLING); }
ここでは割り込みを使用してボタンの状態を読み取ります。
buttonPinのデフォルト値は低いですが、ボタンを押すと低から高に変わります。rollDiceは割り込みがトリガーされたときに呼び出される関数を表し、変数stateの値を切り替えるために使用されます。FALLINGは、buttonPinが低から高になったときに割り込みがトリガーされることを意味します。
変数
stateが0の場合、関数showNumber()が呼び出されて、7セグメント表示が1から7の間でランダムに数字を表示するようになります。void loop() { if (state == 0) { showNumber((int)random(1, 7)); delay(50); } }
rollDice()関数について。void rollDice() { state = !state; }
この関数が呼び出されると、stateの値が切り替わります。前回が1で、今回が0の場合など。
showNumber()関数について。void showNumber(int num) { digitalWrite(STcp, LOW); //ST_CPをGNDに接続し、送信中は常に低く保持 shiftOut(DS, SHcp, MSBFIRST, datArray[num]); // ラッチ ピンを High に戻してチップに信号を送ります // 情報を聞く必要がなくなりました digitalWrite(STcp, HIGH); //ST_CPST_CPを上げてデータを保存 }
これは、プロジェクト 5.10 シフトアウト(セグメントディスプレイ) の
loop()内のコードを関数showNumber()に入れたものです。