2. Bewegung durch Code

Im vorherigen Projekt haben wir versucht, den Betrieb des Motors durch Verwendung verschiedener Pegelsignale für den Eingang des L9110-Moduls zu steuern.

Wenn wir die Pegelsignale über das Programm ändern, können wir die Bewegung des Autos flexibel steuern.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:

Name

TEILE IN DIESEM SET

LINK

3-in-1 Starter-Set

380+

3 in 1 Starter Kit

Sie können diese auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

L9110 Motortreibermodul

-

TT Motor

-

Verdrahtung

Verbinden Sie die Drähte zwischen dem L9110-Modul und dem R3-Board gemäß dem untenstehenden Diagramm.

L9110 Modul

R3 Board

Motor

A-1B

5

A-1A

6

B-1B(B-2A)

9

B-1A

10

OB(B)

Schwarzer Draht des rechten Motors

OA(B)

Roter Draht des rechten Motors

OB(A)

Schwarzer Draht des linken Motors

OA(A)

Roter Draht des linken Motors

../_images/car_2.png

Code

Bemerkung

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

  • Oder kopieren Sie diesen Code in die Arduino IDE.

Nach dem Hochladen des Codes auf das R3-Board richten Sie das Linienverfolgungsmodul unter dem Auto auf die schwarze Linie aus und Sie werden sehen, wie das Auto der Linie folgt.

Wie funktioniert das?

Dieses Projekt ist im Wesentlichen dasselbe wie das vorherige und beinhaltet, dass das Auto vorwärts, rückwärts, links und rechts fährt, sowie durch Bereitstellung verschiedener Signalpegel an den Eingabepins des L9110-Moduls anhält.

  1. Initialisieren Sie die Pins des L9110-Moduls.

    const int A_1B = 5;
    const int A_1A = 6;
    const int B_1B = 9;
    const int B_1A = 10;
    
    void setup() {
        pinMode(A_1B, OUTPUT);
        pinMode(A_1A, OUTPUT);
        pinMode(B_1B, OUTPUT);
        pinMode(B_1A, OUTPUT);
    }
    
  2. Legen Sie die Eingangspins auf verschiedene hohe oder niedrige Pegel, um die Drehung der linken und rechten Motoren zu steuern, und kapseln Sie sie in einzelne Funktionen.

    void moveForward() {
        digitalWrite(A_1B, LOW);
        digitalWrite(A_1A, HIGH);
        digitalWrite(B_1B, HIGH);
        digitalWrite(B_1A, LOW);
    }
    
    void moveBackward() {
        digitalWrite(A_1B, HIGH);
        digitalWrite(A_1A, LOW);
        digitalWrite(B_1B, LOW);
        digitalWrite(B_1A, HIGH);
    }
    ...
    
  3. Rufen Sie diese Funktionen in loop() auf.

    void loop() {
        moveForward();
        delay(2000);
        stopMove();
        delay(500);
    
        moveBackward();
        delay(2000);
        stopMove();
        delay(500);
    ...
    
  • digitalWrite(pin, value)

    • pin: die Arduino-Pin-Nummer.

    • value: HIGH oder LOW.

    Schreibt einen HIGH- oder LOW-Wert auf einen digitalen Pin. Wenn der Pin mit pinMode() als OUTPUT konfiguriert wurde, wird seine Spannung auf den entsprechenden Wert gesetzt: 5V (oder 3,3V auf 3,3V-Platinen) für HIGH, 0V (Masse) für LOW.

  • pinMode(pin, mode)

    • pin: die Arduino-Pin-Nummer, für die der Modus eingestellt werden soll.

    • mode: INPUT, OUTPUT oder INPUT_PULLUP.

    Konfiguriert den angegebenen Pin, um sich entweder als Eingang oder als Ausgang zu verhalten.

  • delay(ms)

    • ms: die Anzahl der Millisekunden zum Pausieren. Zulässige Datentypen: unsigned long.

    Pausiert das Programm für die angegebene Zeit (in Millisekunden). (Es gibt 1000 Millisekunden in einer Sekunde.)