3. Beschleunigung

Zusätzlich zum digitalen Signal (HIGH/LOW) kann der Eingang des L9110-Moduls auch ein PWM-Signal empfangen, um die Geschwindigkeit des Ausgangs zu steuern.

Das bedeutet, dass wir AnalogWrite() verwenden können, um die Fahrgeschwindigkeit des Autos zu steuern.

In diesem Projekt lassen wir das Auto seine Vorwärtsgeschwindigkeit schrittweise ändern, zuerst beschleunigend und dann verlangsamend.

Verdrahtung

Die Verkabelung für dieses Projekt ist identisch mit 2. Steuerung durch Code.

Code

Bemerkung

  • Öffnen Sie die Datei 3.speed_up.ino im Pfad 3in1-kit\car_project\3.speed_up.

  • Oder kopieren Sie diesen Code in die Arduino IDE.

  • Oder laden Sie den Code über den Arduino Web Editor hoch.

Nachdem das Programm läuft, wird das Auto schrittweise beschleunigen und dann allmählich abbremsen.

Wie funktioniert das?

Ziel dieses Projekts ist es, unterschiedliche PWM-Werte an die Eingangspins des L9110-Moduls zu schreiben, um die Vorwärtsgeschwindigkeit des Autos zu steuern.

  1. Verwenden Sie die for()-Schleife, um speed in Schritten von 5 zu setzen, schreibend Werte von 0 bis 255, damit Sie die Veränderung der Vorwärtsgeschwindigkeit des Autos sehen können.

    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. Über die moveForward() Funktion.

    Im Gegensatz zu 2. Steuerung durch Code, das direkt hohe/niedrige Pegel an die Eingangspins des L9110-Moduls gibt, übergeben wir hier einen Parameter speed, dort, wo wir hohe Pegel geben müssen.

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

Die for-Anweisung wird verwendet, um einen Anweisungsblock in geschweiften Klammern zu wiederholen. Ein Inkrementzähler wird in der Regel verwendet, um die Schleife zu inkrementieren und zu beenden.

for (initialization; condition; increment) {
// statement(s);
}
  • initialization: findet zuerst und genau einmal statt.

  • condition: bei jedem Durchlauf der Schleife wird condition getestet; wenn es wahr ist, wird der Anweisungsblock und das Inkrement ausgeführt, dann wird die condition erneut getestet. Wenn die condition falsch wird, endet die Schleife.

  • increment: wird bei jedem Durchlauf der Schleife ausgeführt, wenn condition wahr ist.