4. ライン追従

この車はライントラックモジュールを搭載しており、車が黒い線を追従するようにすることができます。

ライン追従モジュールが黒い線を検出すると、右のモーターが回転し、左のモーターは回転しないため、車は左前方に一歩進みます。 車が動くと、ラインモジュールは線から外れ、次に左のモーターが回転し、右のモーターは回転しないため、車は右に一歩進んで線に戻ります。 上記の2つのステップを繰り返すことで、車は黒い線に沿って動くことができます。

プロジェクトを開始する前に、黒い線テープで曲線マップを作成する必要があります。推奨される線の幅は0.8-1.5cmで、曲がる角度は90度未満であってはなりません。

必要な部品

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

キット全体を購入すると非常に便利です。以下がリンクです:

名前

このキットのアイテム

リンク

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

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

コンポーネントの紹介

購入リンク

Arduino Uno R4 Minima

BUY

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

-

TTモーター

-

ライントラッキングモジュール

BUY

配線図

これはデジタルライン追従モジュールです。黒い線が検出されると、出力は1となり、白い線が検出されると、出力は0となります。さらに、モジュール上のポテンショメータを調整することで、感知距離を調整することができます。

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

ライントラッキングモジュール

R4ボード

S

2

V+

5V

G

GND

../_images/car_4.png

モジュールの調整

プロジェクトを開始する前に、モジュールの感度を調整する必要があります。

上記の図に従って配線し、R4ボードに電源を供給します(USBケーブルを直接挿入するか、9Vの電池ボタンケーブルを使用)。コードをアップロードすることなく。

黒い電気テープをテーブルに貼り、カートをその上に置きます。

モジュール上の信号LEDを観察して、白いテーブルの上で点灯し、黒いテープの上で消灯することを確認してください。

そうでない場合は、モジュール上のポテンショメータを調整して、上記の効果を実現できるようにします。

../_images/line_track_cali.JPG

コード

注釈

  • 3in1-kit\car_project\4.follow_the_line のパスの下で 4.follow_the_line.ino ファイルを開きます。

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

  • あるいは、 Arduino Web Editor を通じてコードをアップロードします。

R4ボードにコードをアップロードした後、車の下のライン追跡モジュールを黒線に合わせると、車が線に沿って動くのを見ることができます。

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

このコードでは、ライントラックモジュールの値に従って2つのモータを微調整することで、車が黒線に沿って動くのを見ることができます。

  1. ライントラッキングモジュールのピン定義を追加します。ここでは INPUT に設定されています。また、シリアルモニターを初期化し、ボーレートを9600bpsに設定します。

    ...
    const int lineTrack = 2;
    Serial.begin(9600);
    void setup() {
        ...
        pinMode(lineTrack, INPUT);
    }
    
  2. ライントラッキングモジュールの値を読み取ります。それが1の場合、車を左に進めます。そうでなければ、右に進めます。また、USBケーブルを抜く前に、右上隅の虫眼鏡アイコンをクリックしてシリアルモニターを開き、黒と白の線上でのライントラッキングモジュール値の変化を見ることができます。

    void loop() {
    
        int speed = 150;
    
        int lineColor = digitalRead(lineTrack); // 0:white    1:black
        Serial.println(lineColor);
        if (lineColor) {
            moveLeft(speed);
        } else {
            moveRight(speed);
        }
    }
    
  3. moveLeft() および moveRight() 関数について。

    プロジェクト 2. コードによる移動 の左右回転機能とは異なり、ここでは小さな左右の回転のみが必要です。したがって、毎回 A_1A または B_1B の値を調整するだけで十分です。例えば、左前方に移動する場合(moveLeft())、 A_1A の速度を設定し、他のすべてを0に設定するだけで、右のモータが時計回りに回転し、左のモータは動かないようになります。

    void moveLeft(int speed) {
        analogWrite(A_1B, 0);
        analogWrite(A_1A, speed);
        analogWrite(B_1B, 0);
        analogWrite(B_1A, 0);
    }
    
    void moveRight(int speed) {
        analogWrite(A_1B, 0);
        analogWrite(A_1A, 0);
        analogWrite(B_1B, speed);
        analogWrite(B_1A, 0);
    }
    
  • Serial

    Arduinoボードとコンピュータや他のデバイスとの通信に使用されます。

    • Serial.begin(): シリアルデータの送信のためのビットレート(baud)を設定します。

    • Serial.println(): データを人間が読めるASCIIテキストとしてシリアルポートに出力し、キャリッジリターン文字(ASCII 13または'r')と改行文字(ASCII 10または'n')に続きます。

  • if else

    if else は基本的なif文よりもコードの流れをより細かく制御することができるように、複数のテストをグループ化することを可能にします。