-
-
Erfahrener Benutzer
Fleißiges Mitglied
Okay, dann hab ich die Einstellungen des AD-Wandlers ja doch richtig verstanden 
Solltest du mal Zeit finden, könntest du auch noch bei GoTurn() zuschlagen ... mir ist beim Testen meiner Software mehrmals aufgefallen, dass GoTurn() Probleme machen kann, weil es nie beendet. Meist passiert das zwar aus eigener Schuld, aber schöner wäre es, wenn es gar nicht dazu kommen kann.
Ein Beispiel ist, wenn GoTurn mit einem zu kleinen Wert für Speed aufgerufen wird, sodass der Roboter gar nicht losfährt und GoTurn auf ewig in der Schleife festhängt. Ein anderes Beispiel ist, falls vorher (bspw. durch EncoderStop()) die Variable autoencode auf false gesetzt wurde - auch dann kehrt GoTurn nie zum Aufrufer zurück.
Ich habe bei mir lokal in GoTurn dafür noch ein explizites EncoderStart() hinzugefügt und mit GetTime() ein Timeout von 15 Sekunden eingebaut. Das ist sicher keine perfekte Lösung, aber so wird jedenfalls sichergestellt, dass GoTurn zurückkehrt, falls man Mist gebaut hat ... 
Bei mir ist außerdem noch das Problem aufgetreten, dass ab und zu bei LineData() und OdometryData() für rechts und links exakt gleiche Werte zurückgeliefert werden, obwohl das in den jeweiligen Fällen eigentlich nicht sein konnte. Ich hab jetzt beim Aufruf von ReadADC() in der jeweiligen Funktion den Sleep-Parameter von 0 auf 10 geändert (wie bei Battery()) und seitdem diesen Effekt nicht mehr beobachten können. Ich bin mir allerdings nicht sicher, ob das wirklich zusammenhängt oder eher Zufall ist ...
Gruß,
Florian
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen