Zurück auf die Linie lenken
Arduino C++Der Startcode liest die Linie, treibt aber beide Räder mit 150, egal was er sieht. Bring ihn zum Lenken: error = position - 3500, dann left = 150 + error / 20 und right = 150 - error / 20. Liegt die Linie unter Sensor 2, muss das linke Rad langsamer und das rechte schneller werden; unter Sensor 7 andersherum; mittig beide bei 150.
Prüfungen
- Noch nicht ausgeführtLäuft 4,5 s lang
- Noch nicht ausgeführtLiest die Linie mit readLineBlack()
- Noch nicht ausgeführtSTBY (D9) ist HIGH: Der Treiber ist wach
- Noch nicht ausgeführtMittig: das linke Rad (D5) bei etwa 150/255
- Noch nicht ausgeführtMittig: das rechte Rad (D6) bei etwa 150/255
- Noch nicht ausgeführtLinie unter Sensor 2: Das linke Rad wird langsamer
- Noch nicht ausgeführtLinie unter Sensor 2: Das rechte Rad wird schneller
- Noch nicht ausgeführtLinie unter Sensor 7: Das linke Rad wird schneller
- Noch nicht ausgeführtLinie unter Sensor 7: Das rechte Rad wird langsamer
- Noch nicht ausgeführtWieder mittig: zurück auf 150
Tipps
- readLineBlack() gibt eine vorzeichenlose Zahl zurück; wandle sie vor dem Abziehen um: int error = (int)pos - 3500;
- error / 20 ist dasselbe wie error x 0.05, nur ohne Gleitkomma: Das ist Kp.
- motors() begrenzt jedes Rad schon mit constrain() auf 0-255.