Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
faecher:nwt:arduino:arbeitsauftraege:linienfolger:start [19.10.2022 21:08] – prh22fuchs | faecher:nwt:arduino:arbeitsauftraege:linienfolger:start [20.10.2022 11:12] (aktuell) – sbel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Linienfolger ====== | + | ====== |
- | ===== Arbeitsauftrag 1 ===== | + | |
- | Schreibe ein Programm, mit dem dein Fahrzeug | + | ===== Funktionsweise des Linienfolgers ===== |
+ | Mithilfe des Liniensensors (auch IR-Sensor genannt) kann unser Fahrzeug einer Linie (Fahrspur) folgen und beim Verlassen der Fahrspur gegenlenken, | ||
+ | |||
+ | ===== Montage des Liniensensors an das Fahrzeug ===== | ||
+ | Der Sensor wird vorne an das Fahrzeug angebracht. Die IR-LED und der Empfänger sollen dabei parallel zum Boden sein, also in Richtung Boden zeigen. | ||
+ | |||
+ | ===== Arbeitsauftrag 1 ===== | ||
+ | Schreibe ein Programm, mit dem dein Fahrzeug, wenn es auf eine schwarze | ||
Zeile 10: | Zeile 16: | ||
Für den Arbeitsauftrag 1 werden folgende Funktionen in deinem Code benötigt: | Für den Arbeitsauftrag 1 werden folgende Funktionen in deinem Code benötigt: | ||
- | - vorwärts fahren | + | * vorwärts fahren |
- | - nach links fahren | + | |
- | - nach rechts fahren | + | |
- | - Messwerte des IR-Sensors auslesen | + | |
++++ | ++++ | ||
+ | |||
+ | ++++ Hilfestellung 2 | | ||
+ | |||
+ | Hier findest du einen Beispielcode. Diesen kannst du als Vorlage nutzen und ihn weiter optimieren (z.B. die Dauer des nach links fahren), beachte aber dass du den Messwert des Liniensensors von deinem Sensor verwenden musst. Vergleiche auch unbedingt deine Hardware mit den Pins im Beispielcode. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | <code c lf.ino> | ||
+ | int empfaenger = A0; // Variablen deklarieren | ||
+ | int messwert = 0; | ||
+ | |||
+ | //Motor links | ||
+ | int M_l = 3; | ||
+ | |||
+ | //Motor rechts | ||
+ | int M_r = 5; | ||
+ | |||
+ | // Funktionen deklarieren | ||
+ | void vorwaerts(); | ||
+ | void links_fahren(); | ||
+ | void rechts_fahren(); | ||
+ | void messen(); | ||
+ | |||
+ | |||
+ | |||
+ | void setup() { | ||
+ | Serial.begin (9600); | ||
+ | pinMode(M_l, | ||
+ | pinMode(M_r, | ||
+ | |||
+ | } | ||
+ | void loop() { | ||
+ | vorwaerts(); | ||
+ | messen(); | ||
+ | | ||
+ | if (messwert> | ||
+ | links_fahren(); | ||
+ | } | ||
+ | else if (messwert< | ||
+ | rechts_fahren(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void vorwaerts(){ | ||
+ | analogWrite (M_l,250); | ||
+ | analogWrite (M_r,250); | ||
+ | } | ||
+ | |||
+ | void links_fahren (){ | ||
+ | analogWrite (M_l,250); | ||
+ | analogWrite (M_r,0); | ||
+ | delay (100); | ||
+ | } | ||
+ | |||
+ | void rechts_fahren (){ | ||
+ | analogWrite (M_l,0); | ||
+ | analogWrite (M_r,250); | ||
+ | delay (100); | ||
+ | } | ||
+ | |||
+ | void messen(){ | ||
+ | messwert = analogRead (empfaenger); | ||
+ | Serial.print (" | ||
+ | Serial.print (messwert); | ||
+ | Serial.println(); | ||
+ | delay(500); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ++++ | ||
+ | |||
+ | ===== Arbeitsauftrag 2 ===== | ||
+ | Schreibe ein Programm, mit dem dein Fahrzeug einer schwarzen Linie folgen kann. Wird die schwarzen Linie vom Fahrzeug verlassen, soll durch eine Links- bzw. Rechtskurve das Fahrzeug wieder auf Kurs gebracht werden. |