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

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

必要な部品

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

一式を購入するのが確実に便利です。リンクは以下の通りです。

名前

このキットのアイテム

リンク

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

以下のリンクから個別に購入することもできます。

コンポーネントの紹介

購入リンク

Arduino Uno R4 Minima

BUY

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

-

TTモーター

-

LED

BUY

IR受信機

-

配線図

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

IR 受信機

R4 ボード

OUT

12

GND

GND

VCC

5V

LED

R4 ボード

アノード(長いピン)

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が一度点滅して信号を受信したことを示し、あなたが押したボタンに応じて車が動きます。車をコントロールするための以下のキーを押すことができます。

  • +: 加速

  • -: 減速

  • 1: 左へ前進

  • 2: 前進

  • 3: 右へ前進

  • 4: 左折

  • 6: 右折

  • 7: 左へ後退

  • 8: 後退

  • 9: 右へ後退

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

このプロジェクトの効果は、IRリモートコントロールのキー値を読み取ることで車を動かすことです。さらに、IR信号が正常に受信されたことを示すために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();  // Enable receiving of the next value
    
        }
    }
    
    • IR信号が受信され、正常にデコードされたかどうかを確認します。

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

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

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

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