ESP32チュートリアル 36/55 - 数当てゲーム | SunFounderのESP32 IoT学習キット
このチュートリアルでは、ESP32マイクロコントローラーを使用して、赤外線リモコンとLCDディスプレイを組み合わせた楽しい数字当てゲームを作成します。プレイヤーは0から99の間でランダムに生成された数字を推測し、その推測が高すぎるか低すぎるかについてゲームがヒントを提供します。このプロジェクトを通じて、赤外線受信機の使い方、LCDに値を表示する方法、リモコンからのユーザー入力の管理方法を学ぶことができます。追加の明確さについては、ビデオを参照してください(ビデオは00:00にあります)。
ESP32_36_guessing_numbe-1
ESP32_36_数字を当てる-2
ハードウェアの解説
このプロジェクトで使用される主なコンポーネントには、ESP32マイクロコントローラー、赤外線リモコン、赤外線受信機、およびLCDディスプレイが含まれます。ESP32は主な処理ユニットとして機能し、ワイヤレス通信を処理する能力があり、IoTプロジェクトにとって多用途な選択肢となります。赤外線リモコンは、ユーザーがボードと物理的にやり取りすることなく推測を入力できるようにし、LCDはゲームの状態やプロンプトを表示します。
赤外線受信機はリモコンからの信号を検出し、それをゲームで使用するためにデコードします。リモコンの各ボタンの押下は、ESP32が解釈できる特定の値に対応しています。LCDディスプレイはユーザーのための視覚インターフェースを提供し、現在の推測範囲と推測が正しかったかどうかを表示します。
データシートの詳細
| 製造者 |
サンファウンダー |
| 部品番号 |
ESP32 |
| ロジック/IO電圧 |
3.3 V |
| 供給電圧 |
5 V (USB経由) |
| 出力電流(チャンネルごと) |
12 mA (最大) |
| PWM周波数ガイダンス |
1 kHz |
| 入力ロジック閾値 |
0.3 * Vcc から 0.7 * Vcc |
| 電圧降下 / RDS(on)/ 飽和 |
0.2 V |
| 熱的限界 |
動作温度:-40 から 85 °C |
| パッケージ |
WROOM-32モジュール |
| ノート / バリアント |
Wi-FiおよびBluetoothをサポートしています。 |
- すべてのコンポーネントが、該当する場合は3.3 Vおよび5 Vに適合していることを確認してください。
- IR受信機には適切なプルアップ抵抗を使用して、浮遊入力を避けてください。
- 最大出力電流で長時間運転する場合は、ヒート sink を使用することを検討してください。
- PWMを使用する際は、最適なパフォーマンスのために約1 kHzの周波数を維持してください。
- 配線には注意してください。接続が確実であることを確認し、断続的な故障を避けてください。
配線指示
ESP32_36_guessing_number_wiring推測数ゲームの配線を設定するには、赤外線受信機を接続することから始めます。受信機の右側のピンから赤いワイヤーをESP32の3.3 V電源に接続します。黒いワイヤーは接地に接続し、赤外線受信機の左側のピンをピンに接続します。14ESP32上で。
ESP32_36_数字推測回路図
次に、LCDディスプレイを配線します。LCDのVCCピンをESP32の5V電源に接続し、グランドピンをグランドに接続します。LCDのSDAおよびSCLピンはピンに接続する必要があります。21と22それぞれ。ピンの衝突を避けるために、SDAとSCL接続の間に2つの空白を確保してください。最後に、ボードに電源を入れる前にバッテリーからプラスチックカバーを取り外すようにしてください。
コード例とウォークスルー
次のコードスニペットは、数字を当てるゲームに使用されるプログラムの重要な部分を示しています。必要なライブラリを含め、主要な識別子を定義することから始めます。
#include
#include
#include
#include
const uint16_t IR_RECEIVE_PIN = 14;
IRrecv irrecv(IR_RECEIVE_PIN);
decode_results results;
この抜粋では、LCDおよび赤外線受信機機能を処理するためのライブラリを含めています。赤外線受信機のピンは次のように定義されています。14必要なオブジェクトのインスタンスを作成して、入力と出力を管理します。
void setup() {
lcd.init();
lcd.backlight();
Serial.begin(9600);
irrecv.enableIRIn();
initNewValue();
}
このスニペットは、LCDの初期化、シリアル通信の開始、およびIR受信機の有効化を行うセットアップ関数を示しています。関数initNewValue()プレイヤーが推測するために新しいランダムな数字を生成するよう呼び出されます。
bool detectPoint() {
if (count > pointValue) {
if (count < upper) upper = count;
} else if (count < pointValue) {
if (count > lower) lower = count;
} else if (count == pointValue) {
count = 0;
return 1;
}
count = 0;
return 0;
}
この機能は、プレイヤーの推測をランダムに生成された数と照らし合わせて、上限と下限を適宜調整します。推測が正しい場合、カウントをリセットし、真を返します。
記事の下に完全なコードが利用可能ですので、ご参照ください。
デモンストレーション / 期待すること
すべてが接続されてコードがアップロードされると、ゲームはリモートコントロールの任意の数字を押すように促します。ゲームはその後、あなたの推測に対してフィードバックを提供し、ターゲットナンバーを正しく推測するまで可能な数字の範囲を更新します。POWERボタンを押すと、ゲームはリセットされて再スタートします(ビデオの02:30に)。
一般的な落とし穴には、赤外線受信機が正しく向いているか、すべての接続が確実であることを確認することが含まれます。ゲームが反応しない場合は、電源を確認し、Arduino IDEで正しいボードとポートが選択されていることを確認してください。
ビデオのタイムスタンプ
- 00:00 開始
- 2:17 ゲームプロジェクトの紹介
- 4:37 配線
- 6:15 Arduinoコードの説明
- 12:32 Arduino IDEでESP32ボードとCOMポートを選択する
- 16:16 数当てゲームをプレイ中
画像
ESP32_36_guessing_number_schematic
ESP32_36_guessing_number_wiring
ESP32_36_guessing_numbe-1
ESP32_36_guessing_numbe-2
ESP32_36_guessing_number_schematic
ESP32_36_guessing_number_wiring
ESP32_36_guessing_numbe-1
ESP32_36_guessing_numbe-2
837-ESP32 Tutorial 36/55- Arduino code for guessing number
言語: C++