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

このキットにはIR受信機が付属しており、IRリモートコントロールを使用して車の動きを制御できます。

必要な部品

このプロジェクトには、以下の部品が必要です。

キット全体を購入するのは確かに便利です。リンクは以下のとおりです:

名前

このキットに含まれるアイテム

リンク

3 in 1スターターキット

380+

3 in 1 Starter Kit

以下のリンクからも別々に購入できます。

部品の紹介

購入リンク

SunFounder R3ボード

BUY

L9110 モータードライバーモジュール

-

TTモーター

-

LED

BUY

IRレシーバー

-

配線

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

IR受信機

R3ボード

OUT

12

GND

GND

VCC

5V

LED

R3ボード

アノード(長いピン)

13

カソード

GND

../_images/car_9.png

コード

注釈

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

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

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

    ../_images/lib_irremote.png

コードが正常にアップロードされると、リモートコントロールのボタンを押すと、LEDが点滅し、IR受信機がどのキーが押されたかを知り、それに応じて車が移動します。以下のキーを押して車を制御できます。

  • +: 加速

  • -: 減速

  • 1: 左前方へ進む

  • 2: 前進

  • 3: 右前方へ進む

  • 4: 左折

  • 6: 右折

  • 7: 左後退

  • 8: 後退

  • 9: 右後退

動作の原理は?

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

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

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

    ...
    
    void setup() {
    
        ...
        //IRリモート
        IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);  // Start the IR receiver
        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コマンドをデコードし、 key に格納するカスタム decodeKeyValue() 関数を使用します。

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

    • シリアルモニターにデコードされたIR値を出力します。

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