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:42] – prh22fuchs | faecher:nwt:arduino:arbeitsauftraege:linienfolger:start [20.10.2022 11:12] (aktuell) – sbel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | {{ : | + | ====== |
===== Funktionsweise des Linienfolgers ===== | ===== Funktionsweise des Linienfolgers ===== | ||
Zeile 27: | Zeile 27: | ||
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. | 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. | ||
- | 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, | ||
+ | analogWrite (M_r, | ||
+ | } | ||
+ | |||
+ | void links_fahren (){ | ||
+ | analogWrite (M_l, | ||
+ | analogWrite (M_r,0); | ||
+ | delay (100); | ||
+ | } | ||
+ | |||
+ | void rechts_fahren (){ | ||
+ | analogWrite (M_l,0); | ||
+ | analogWrite (M_r, | ||
+ | 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. |