3. Beschleunigung

Neben dem digitalen Signal (HOCH/NIEDRIG) kann der Eingang des L9110-Moduls auch ein PWM-Signal empfangen, um die Geschwindigkeit des Ausgangs zu steuern.

Mit anderen Worten, wir können AnalogWrite() verwenden, um die Bewegungsgeschwindigkeit des Autos zu steuern.

In diesem Projekt lassen wir das Auto seine Vorwärtsgeschwindigkeit allmählich ändern, zuerst beschleunigen und dann abbremsen.

Verdrahtung

Dieses Projekt hat die gleiche Verdrahtung wie 2. Bewegung 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 allmählich beschleunigen und dann allmählich abbremsen.

Wie funktioniert das?

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

  1. Verwenden Sie die for() Anweisung, um speed in Schritten von 5 zu geben, wobei Werte von 0 bis 255 geschrieben werden, sodass Sie die Ä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 Funktion moveForward().

    Im Gegensatz zu 2. Bewegung durch Code, welcher direkt hohe/niedrige Pegel an die Eingangspins des L9110-Moduls gibt, übergeben wir hier einen Parameter speed an die Stellen, an denen 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 Block von Anweisungen, der von geschweiften Klammern eingeschlossen ist, zu wiederholen. Ein Inkrementzähler wird normalerweise verwendet, um die Schleife zu inkrementieren und zu beenden.

for (Initialisierung; Bedingung; Inkrement) {
// Anweisung(en);
}
  • Initialisierung: erfolgt zuerst und genau einmal.

  • Bedingung: Bei jedem Durchlauf der Schleife wird die Bedingung geprüft; wenn sie wahr ist, wird der Anweisungsblock und das Inkrement ausgeführt, dann wird die Bedingung erneut geprüft. Wenn die Bedingung falsch wird, endet die Schleife.

  • Inkrement: wird bei jedem Schleifendurchlauf ausgeführt, wenn die Bedingung wahr ist.