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+ |
Sie können diese auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
- |
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 |
Code
Bemerkung
Öffnen Sie die Datei
2.move.ino
im Pfad3in1-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.
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); }
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); } ...
Rufen Sie diese Funktionen in
loop()
auf.void loop() { moveForward(); delay(2000); stopMove(); delay(500); moveBackward(); delay(2000); stopMove(); delay(500); ...
-
pin
: die Arduino-Pin-Nummer.value
: HIGH oder LOW.
Schreibt einen HIGH- oder LOW-Wert auf einen digitalen Pin. Wenn der Pin mit
pinMode()
alsOUTPUT
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. -
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.
-
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.)