9. リモートコントロール

このキットには、IRレシーバーが含まれているので、IRリモートコントロールを使用して車の動きをコントロールすることができます。

必要な部品

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

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

名前

このキットのアイテム

リンク

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

以下のリンクからそれぞれのアイテムを購入することもできます。

コンポーネント紹介

購入リンク

SunFounder R3ボード

BUY

L298N モジュール

BUY

TTモーター

-

LED

BUY

IRレシーバー

-

配線図

以下の図に従って回路を組み立ててください。

IR レシーバー

R3 ボード

OUT

12

GND

GND

VCC

5V

LED

R3 ボード

アノード(長いピン)

13

カソード

GND

../_images/car_remote.png

コード

注釈

  • 3in1-kit\car_project\9.remote_control のパスにある 9.remote_control.ino ファイルを開きます。

  • または、このコードを Arduino IDE にコピーします。

  • ここでは IRremote ライブラリが使用されています。 Library Manager からインストールできます。

    ../_images/lib_irremote.png

コードのアップロードが成功したら、リモートコントロールのボタンを押すと、LEDが一回点滅して信号が受信されたことを示し、ボタンの指示に従って車が動きます。以下のキーを押して車を操作することができます。

  • +:加速

  • -:減速

  • 1:左前方へ進む

  • 2:前進

  • 3:右前方へ進む

  • 4:左折

  • 6:右折

  • 7:左後方へ後退

  • 8:後退

  • 9:右後方へ後退

どのように動作するのか?

このプロジェクトの効果は、IRリモートコントロールのキー値を読み取り、車を動かすことです。さらに、ピン13のLEDが点滅して、赤外線信号の受信が成功したことを示します。

  1. IRremote ライブラリをインポートします。 Library Manager からインストールできます。

    #include <IRremote.h>
    
    const int IR_RECEIVE_PIN = 12;  // IRセンサのピン番号を定義する
    
  2. ボーレート9600でシリアル通信を初期化します。指定されたピン(IR_RECEIVE_PIN)でIRレシーバを初期化し、LEDフィードバックを有効にします(該当する場合)。

    ...
    
    void setup() {
    
        ...
        //IR リモート
        IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);  // IRレシーバを開始する
        Serial.println("REMOTE CONTROL START");
    
    }
    
  3. リモートコントロールのキーを押すと、赤外線受信機はどのキーが押されたかを知り、車は対応するキー値に従って動きます。

    void loop() {
    
        if (IrReceiver.decode()) {
            //    Serial.println(results.value,HEX);
            String key = decodeKeyValue(IrReceiver.decodedIRData.command);
            if (key != "ERROR") {
                Serial.println(key);
    
                if (key == "+") {
                    speed += 50;
                } else if (key == "-") {
                    speed -= 50;
                } else if (key == "2") {
                    moveForward(speed);
                    delay(1000);
                ...
                }
                IrReceiver.resume();  // 次の値の受信を有効にする
        }
    }
    
    • IR信号が受信され、正常にデコードされたかどうかを確認する。

    • IRコマンドをデコードし、カスタム decodeKeyValue() 関数を使用して key に保存する。

    • デコードされた値がエラーでないかを確認します。

    • デコードされたIR値をシリアルモニタに表示する。

    • 次の信号のIR信号受信を再開する。