====== Arbeitsauftrag: Linienfolger ====== ===== Funktionsweise des Linienfolgers ===== Mithilfe des Liniensensors (auch IR-Sensor genannt) kann unser Fahrzeug einer Linie (Fahrspur) folgen und beim Verlassen der Fahrspur gegenlenken, um wieder der Linie folgen zu können. ===== 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 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, auf der die Linie klebt, ausgeben. Der Wert für dir schwarze Linie ist der Schwellenwert, sobald dieser Wert gemessen wird, soll das Fahrzeug nach links oder rechts ausweichen. 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. {{ :faecher:nwt:arduino:arbeitsauftraege:linienfolger:ausweichen_liniensensor.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, OUTPUT); pinMode(M_r, OUTPUT); } void loop() { vorwaerts(); messen(); if (messwert>520){ //Wenn der Liniensensor höhere Werte als 250 misst, befindet sich das Fahrzeug über der Linie links_fahren(); } else if (messwert<520){ //Außerhalb der Linie werden Messwerte unterhalb 250 gemessen 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); //Der gemessene Reflexionswert wird in der Variable messwert zwischengespeichert Serial.print ("Reflexionswert = "); 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.