ESP32チュートリアル 33/55 - SunFounderのESP32 IoT学習キットを使用したデジタルサイコロ

ESP32チュートリアル 33/55 - SunFounderのESP32 IoT学習キットを使用したデジタルサイコロ

このチュートリアルでは、SunFounderのIoT学習キットのESP32と7セグメントディスプレイを使用してデジタルサイコロを作成します。このプロジェクトでは、ボタンを押すことで1から6までの数字を生成し、仮想サイコロを振ることができます。これは、ディスプレイやボタンとのインターフェースについて学びながら、ESP32の機能を探る素晴らしい方法です。追加の明瞭性のために、(0:00の動画で)ビデオを確認してください。

ESP32-33_デジタルサイコロ_メイン

ハードウェアの解説

このプロジェクトの主要なコンポーネントには、ESP32マイクロコントローラ、74HC595シフトレジスタ、7セグメントディスプレイ、および押しボタンが含まれます。ESP32は、Wi-FiとBluetoothを統合した強力なマイクロコントローラで、IoTアプリケーションに適しています。74HC595シフトレジスタを使用することで、各セグメントを直接接続するよりも少ないピンで7セグメントディスプレイを制御できます。

七セグメントディスプレイは数字を表示し、シフトレジスタからデータを送信することで制御されます。プッシュボタンはサイコロを振るトリガーとして使用され、表示されるランダムな数を生成します。押されると、ボタンはESP32のピン13に接続され、押されていないときは内部プルアップ抵抗によって高状態に保たれます。

データシートの詳細

メーカー テキサス・インスツルメンツ
部品番号 74HC595
論理/IO電圧 2 Vから6 Vまで
供給電圧 4.5 Vから5.5 V
出力電流(チャンネルごと) 最大6 mA
ピーク電流(チャンネルごと) 35 mA 最大
PWM周波数ガイダンス 該当しません
入力ロジック閾値 VIH≥ 2 V, VIL≤ 0.8 V
電圧降下 / RDS(on)/ 飽和度 0.5 V 最大
熱的制限 150 °C
パッケージ DIP-16
ノート / バリアント デジタルディスプレイで一般的に使用される

  • 信頼性のある動作のために適切な電圧レベル(4.5 Vから5.5 V)を確保してください。
  • シフトレジスタが損傷しないように出力電流を制限してください。
  • 電源ピンの近くにデカップリングコンデンサを使用して、電圧を安定させてください。
  • 数値の誤表示を避けるために、七セグメントディスプレイを正しく接続してください。
  • 接続が緩んでいる可能性がある配線をチェックして、予期しない動作を引き起こさないようにしてください。

配線手順

ESP32-33_digital-dice-wiring

デジタルサイコロの配線をするには、まず電源接続を設定します。ブレッドボードのグラウンド(青線)をESP32のグラウンドピンに接続し、すべてのグラウンドポイントが相互接続されていることを確認します。次に、ESP32の3.3Vピンをブレッドボードの電源レール(赤線)に接続します。

ESP32-33 デジタルサイコロ 回路図

74HC595 シフトレジスタの場合、ピン1を 3.3V レールに接続し、ピン8をグラウンドに接続することを確認してください。データ出力ピン (DS) を ESP32 のピン25 に接続し、シフトクロックピン (SHCP) をピン26 に、ストレージクロックピン (STCP) をピン27 に接続します。プッシュボタンは、ESP32 のピン13 とグラウンドの間に接続し、押すとピンを低く引き下げることができるようにします。

コード例とウォークスルー

コードでは、まずシフトレジスタとボタンに使用されるピンを定義します。ボタンピンは次のように定義されています。buttonPinESP32のピン13に接続されています。データ配列datArray7セグメントディスプレイ用の数字0-9のバイナリ表現が含まれています。


const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP 
const int DS = 25; //DS 
const int buttonPin = 13;
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

の中でsetup()関数では、ボタンピンを入力モードに設定し、シフトレジスタピンを出力モードに設定します。これにより、ボタンからの入力を読み取るためとディスプレイへのデータ送信のためにピンが準備されます。


void setup ()
{
  pinMode(buttonPin,INPUT); 
  pinMode(STcp,OUTPUT);
  pinMode(SHcp,OUTPUT);
  pinMode(DS,OUTPUT);
}

プログラムの主要なロジックは、次のように見つかります。loop()機能。ボタンが押されているかを確認し、ランダムな番号を生成し、呼び出します。show_number()数字をセグメント表示に表示するための関数。


void loop()
{
  if(digitalRead(buttonPin) == LOW)
  {
    int diceNumber = random(1, 7);
    show_number(diceNumber);
    delay(50);
  }
}

そのshow_number()関数はデータ配列から適切な値をシフトレジスタに送り、シフトレジスタは生成された数字を表示するためにディスプレイのセグメントを制御します。この関数はボタンが押されたときの視覚的フィードバックにとって重要です。

74HC595 LEDディスプレイ:7セグメントの説明
74HC595 LEDディスプレイ: セブンセグメントの説明

デモンストレーション / 期待されること

セットアップが完了し、コードがアップロードされると、ボタンを押すことで1から6の間のランダムな番号が生成され、7セグメントディスプレイに表示されます。すべてが正しく接続されていれば、ボタンが押されるたびにディスプレイに番号が表示されるはずです。浮遊する入力には注意が必要です。ボタンが正しくグラウンドに接続されていることを確認し、異常な動作を避けてください(動画の1:30で)。

ビデオのタイムスタンプ

  • 00:00 開始
  • 1:48 プロジェクト紹介
  • デジタルサイコロの配線について説明します 3:40
  • 13:16 デジタルサイコロのためのArduinoコードの説明
  • 19:19 Arduino IDEでESP32ボードとCOMポートを選択する
  • 21:00 デジタルサイコロのデモンストレーション
  • 22:15 Arduinoコードの修正

画像

74HC595 LEDディスプレイ:七セグメントの解説
74HC595 LEDディスプレイ:七セグメントの解説
ESP32-33_digital-dice-wiring
ESP32-33_digital-dice-wiring
ESP32-33_digital-dice-main
ESP32-33_digital-dice-main
ESP32-33_digital-dice-schematic
ESP32-33_digital-dice-schematic
834-ESP32 Tutorial 33/55- Arduino code for digital dice
言語: C++
コピーしました!

リソースと参考文献

ファイル📁

ファイルは利用できません。