-
-
Moderator
Robotik Visionär
Hihi, so ähnlich geht's wohl jedem der fremden, natürlich gewachsenen Code begutachtet.
Grobe Funktionsbeschreibeung:
Die eigentliche "Hauptschleife" steht zwischen do ... while. Zuerst werden die Line-Data gelesen und die BackLEDs ausgemacht. Dann erfolgen per If-Abfrage die Ermittlung der Position auf der Linie und die erforderlichen Reaktionen für MotorSpeed und MotorDir werden ermittelt (dir_l/dir_r und pow_l/pow_r). Zusätzlich werden je nach Reaktion auch die BackLEDs wieder eingeschaltet. Am Ende der Schleife werden die ermittelten Werte an die Motoren übergeben und die Schleife startet erneut. Bei jedem Schleifendurchgang werden so die Reaktionen auf die Linienabweichung neu berechnet.
Wenn der asuro die Linie komplett verlassen sollte, merkt sich "suchen", wohin die Linie verschwunden ist und der asuro dreht zurück, bis er sie wieder findet.
In h_l/d_l bzw h_r/d_r speichere ich die max. bzw. min. Werte die gemessen werden. Es wird dabei ein Mittelwerte mit dem letzten gespeicherten min/max-Wert gebildet um Ausreiserwerte zu dämpfen. Auch diese Werte werden bei jedem Schleifendurchgang aktuallisiert.
In solch einen Programmablauf kann man nun überall noch was anhängen, sei es eine Tastenabfrage, eine IR-Abstandsmessung oder was einem noch so einfällt.
Natürlich gibt es für verschiedene Aufgabenstellungen genausoviele Lösungsprogramme wie es Programmierer gibt. Mein Beispielcode soll dir nur mal zeigen, wie man die while-Schleifen loswerden kann. Am meisten lernt man selbst, wenn man sich die Codes der anderen anschaut und sich das Beste daraus selbst aneignet...
@ehenkes:
nein, ist nicht ok. Die Summe aller Taster sollte 63 sein, dann ist es ok. Jeder Taster wird dann genau durch ein Bit im Ergebniss von PollSwitch() abgebildet. (Musterthread Tasterkalibrierung)
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen