赤外線レシーバー¶
概要¶
赤外線レシーバーは、赤外線信号を受信し、独立して赤外線を受信し、TTLレベルと互換性のある信号を出力する部品です。通常のプラスチックパッケージのトランジスタとサイズが似ており、様々な種類の赤外線リモコンや赤外線伝送に適しています。
必要なコンポーネント¶
このプロジェクトには、以下のコンポーネントが必要です。
全セットを購入するのが便利です。こちらがリンクです:
名称 |
このキットのアイテム数 |
リンク |
---|---|---|
Elite Explorer Kit |
300+ |
以下のリンクから個別に購入することもできます。
コンポーネント紹介 |
購入リンク |
---|---|
- |
|
配線図¶
回路図¶
コード¶
注釈
ファイル
22-ir_receiver.ino
をelite-explorer-kit-main\basic_project\22-ir_receiver
のパスで直接開くことができます。または、このコードをArduino IDEにコピーする。
ここでは
IRremote
ライブラリを使用しています。 Library Manager からインストールできます。
注釈
リモコンの背面には、電源を遮断する透明なプラスチック片があり、リモコンを使用する前にそれを取り出してください。
コード解析¶
このコードは、 IRremote
ライブラリを使用して赤外線(IR)リモコンを操作するように設計されています。以下がその詳細です:
ライブラリを含めて定数を定義します。まず、IRremoteライブラリを含め、IRレシーバー用のピン番号を2として定義します。
#include <IRremote.h> const int IR_RECEIVE_PIN = 2;
9600のボーレートでシリアル通信を初期化し、指定されたピン(
IR_RECEIVE_PIN
)でIRレシーバーを初期化し、LEDフィードバックを有効にします(該当する場合)。void setup() { Serial.begin(9600); // Start serial communication at 9600 baud rate IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Start the IR receiver }
ループは継続的に実行され、受信したIRリモコン信号を処理します。
void loop() { // Check if there is any incoming IR signal if (IrReceiver.decode()) { // IrReceiver.printIRResultShort(&Serial); // Print the received data in one line // Serial.println(IrReceiver.decodedIRData.command, HEX); // Print the command in hexadecimal format Serial.println(decodeKeyValue(IrReceiver.decodedIRData.command)); // Map and print the decoded IR signal to corresponding key value IrReceiver.resume(); // Enable receiving of the next value } }
IR信号が受信され、正常にデコードされたかをチェックします。
IRコマンドをデコードし、カスタム関数
decodeKeyValue()
を使用してdecodedValue
に格納します。デコードされたIR値をシリアルモニターに表示します。
次の信号のIR信号受信を再開します。
受信したIR信号を対応するキーにマッピングするヘルパー関数
// Function to map received IR signals to corresponding keys String decodeKeyValue(long result) { // Each case corresponds to a specific IR command switch (result) { case 0x16: return "0"; case 0xC: return "1"; case 0x18: return "2"; case 0x5E: return "3"; case 0x8: return "4"; case 0x1C: return "5"; case 0x5A: return "6"; case 0x42: return "7"; case 0x52: return "8"; case 0x4A: return "9"; case 0x9: return "+"; case 0x15: return "-"; case 0x7: return "EQ"; case 0xD: return "U/SD"; case 0x19: return "CYCLE"; case 0x44: return "PLAY/PAUSE"; case 0x43: return "FORWARD"; case 0x40: return "BACKWARD"; case 0x45: return "POWER"; case 0x47: return "MUTE"; case 0x46: return "MODE"; case 0x0: return "ERROR"; default: return "ERROR"; } }