3. 速度の上昇

デジタル信号(HIGH/LOW)に加えて、L9110モジュールの入力はPWM信号も受け取ることができ、出力の速度を制御します。

言い換えれば、 AnalogWrite() を使用して車の移動速度を制御することができます。

このプロジェクトでは、車が前進速度を徐々に変えるようにしました。最初に加速し、その後減速します。

配線

このプロジェクトの配線は 2. コードによる移動 と同じです。

コード

注釈

  • 3in1-kit\car_project\3.speed_up のパスの下の 3.speed_up.ino ファイルを開く。

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

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

プログラムが実行されると、車は徐々に加速し、次に徐々に減速します。

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

このプロジェクトの目的は、L9110モジュールの入力ピンに異なるPWM値を書き込むことで、車の前進速度を制御することです。

  1. for() 文を使用して、0から255までの値を5のステップで speed に与えることで、車の前進速度の変化を確認できます。

    void loop() {
        for(int i=0;i<=255;i+=5){
            moveForward(i);
            delay(500);
        }
        for(int i=255;i>=0;i-=5){
            moveForward(i);
            delay(500);
        }
    }
    
  2. moveForward() 関数について。

    2. コードによる移動 ではL9110モジュールの入力ピンに直接高/低レベルを与えていますが、ここでは高レベルを与える必要がある場所に speed パラメータを渡します。

    void moveForward(int speed) {
        analogWrite(A_1B, 0);
        analogWrite(A_1A, speed);
        analogWrite(B_1B, speed);
        analogWrite(B_1A, 0);
    }
    

for 文は、波括弧で囲まれた文のブロックを繰り返し実行するために使用されます。インクリメントカウンタは通常、ループのインクリメントと終了のために使用されます。

for (initialization; condition; increment) {
// statement(s);
}
  • initialization: 最初に一度だけ実行されます。

  • condition: ループを通じて毎回、conditionがテストされる; それが真の場合、文のブロックとインクリメントが実行され、その後conditionが再びテストされる。conditionがfalseになると、ループは終了する。

  • increment: conditionがtrueのときにループを通じて実行されます。