Motoren - Vorwärts fahren
Erstellt von Viktor Reichert
Benötigtes Material
- Arduino Uno
- USB-Kabel für den Arduino
- 2x Motor (N20 DC 6V 100RPM/80RPM)
- 2x Motorhalterung
- 4x Schraube
- Holzbrett
Als PDF
Beschreibung
Der Arduino ist ein Mikrocontroller, mit dem man verschiedene technische
Geräte bauen kann. Wir wollen zunächst gemeinsam einen fahrenden Roboter
bauen.
Befestige dazu zwei Motoren mithilfe der Motorhalterungen und Schrauben
an ein Holzbrett (siehe Foto). Bringe dann die Reifen an den Achsen
an.
Es gibt hierzu auch eine genaue Fotoanleitung
(Arbeitsschritte_Roboterfahrzeug_Fotoanleitung.pdf). # Verkabelung
GND | Kabel 1 des linken Motors |
GND | Kabel 1 des rechten Motors |
12 | Kabel 2 des linken Motors |
13 | Kabel 2 des rechten Motors |
Code
// Wir geben den Pins mit Motoren Namen.
int motor_links = 13;
int motor_rechts = 12;
// Dieser Code wird einmal beim Start des Arduinos ausgeführt.
void setup() {
// Wir teilen dem Arduino mit, dass aus den Motorpins Strom kommen soll.
pinMode(motor_links, OUTPUT);
pinMode(motor_rechts, OUTPUT);
}
// Dieser Code wird immer wieder hintereinander ausgeführt.
void loop() {
// Gib beiden Motoren Strom.
digitalWrite(motor_links, HIGH);
digitalWrite(motor_rechts, HIGH);
// Warte 3 Sekunden bis zur Ausführung der nächsten Befehle.
// ACHTUNG: Die Motoren haben weiterhin Strom,
// bis dem Arduino ein gegenteiliger Befehl gegeben wird.
delay(3000);
// Gib beiden Motoren KEINEN Strom.
digitalWrite(motor_links, LOW);
digitalWrite(motor_rechts, LOW);
// Warte.
delay(1000);
}
Aufgaben
Beschreibe, wie die Motoren sich verhalten, wenn du den obigen Code
ausführst?
Der Roboter fährt drei Sekunden gerade aus und bleibt dann eine Sekunde
lang stehen.
Was musst du am Code ändern, damit der Roboter länger stoppt?
Beim zweiten delay
muss eine größere Zahl in die Klammern eingetragen
werden.
Was passiert, wenn du bei einem Motor den GND und Zahlen-Pin vertauscht?
Der Motor wechselt die Fahrtrichtung.
Wie kannst du das Fahrzeug zuerst geradeaus und dann eine Kurve fahren
lassen? Probiere deine Idee aus!
Es gibt verschiedene Möglichkeiten das zu lösen
- Ändere die Zeile
digitalWrite(motor\_right, LOW);
zu
digitalWrite(motor\_right, HIGH);
- Oder ändere die Zeile
digitalWrite(motor\_right, LOW);
zu
digitalWrite(motor\_left, HIGH);
Kannst du Dein Fahrzeug so programmieren, dass es 2m vorwärtsfährt, eine
Kurve fährt und dann genau am Startpunkt wieder ankommt?
Ändere den Code, damit er eine Kurve fährt (s. o.) und passe die Zeit
vom letzten delay
an, sodass eine 180° Kurve gefahren wird. Passe die
Zeit vom ersten ‘delay’ an, sodass 2 Meter gefahren werden.
Denke dir einen interessanten Parcours aus und programmiere diesen!