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 [18.10.2022 10:32] – prh22fuchs | faecher:nwt:arduino:arbeitsauftraege:linienfolger:start [20.10.2022 11:12] (aktuell) – sbel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Linienfolger ====== | + | ====== |
+ | ===== Funktionsweise des Linienfolgers ===== | ||
+ | Mithilfe des Liniensensors (auch IR-Sensor genannt) kann unser Fahrzeug einer Linie (Fahrspur) folgen und beim Verlassen der Fahrspur gegenlenken, | ||
- | ++++ Tipp 1 | | + | ===== 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. | ||
- | Hallo | + | ===== Arbeitsauftrag 1 ===== |
+ | Schreibe ein Programm, mit dem dein Fahrzeug, wenn es auf eine schwarze Linie trifft, nach links oder rechts ausweichen kann. Vor dem Aufeinandertreffen soll das Fahrzeug gerade auf die Linie zufahren. Nach dem Ausweichen soll das Fahrzeug wieder auf die schwarze Linie treffen und den Ausweichvorgang wiederholen. | ||
+ | |||
+ | ++++ Hilfestellung 1 | | ||
+ | |||
+ | Lass dir die Reflexionswerte der schwarzen Linie und des Hintergrunds, | ||
+ | |||
+ | Für den Arbeitsauftrag 1 werden folgende Funktionen in deinem Code benötigt: | ||
+ | * 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. |