User manual

RP6 ROBOT SYSTEM - 4. Programmierung des RP6
Da diese Funktionen sehr schnell ausgeführt werden, werden die LEDs nicht dunkel
auch wenn die Funktion den Portpin auf Eingangsrichtung umschaltet. Man sollte aber
zwischen den einzelnen Aufrufen ein paar Millisekunden Pause einfügen.
Die Ports sollten nur über die vorgefertigten Funktionen angesteuert werden! Die Ports
an denen die Bumper angeschlossen sind, sind zwar durch Widerstände gesichert,
aber wenn sie auf Masse geschaltet werden und dann ein Bumper geschlossen wird,
fließt schon ein recht hoher Strom durch den Port. Das sollte also vermieden werden.
Beispiel:
if(getBumperLeft() && getBumperRight()) // Beide Bumper...
escape(); // Hier eigene Funktion definieren, z.B. zurücksetzen + drehen
else if(getBumperLeft()) // Links...
escapeLeft(); // hier ebenfalls zurücksetzen und nach rechts drehen.
else if(getBumperRight()) // Rechts...
escapeRight(); // und hier zurücksetzen und nach links drehen.
mSleep(50); // Die Bumper nur 20 mal pro Sekunde (20Hz) auswerten...
Die beiden LEDs 6 und 3 leuchten in jedem Fall wenn die Bumper gedrückt werden.
Das ist absichtlich so (geht nicht anders) und keineswegs eine Fehlfunktion. Normaler-
weise schalten die Bumper aber nur selten, deshalb stört das nicht weiter.
Sie können an die Ports der anderen vier LEDs auch weitere
Bumper/Sensoren mit digitalem Ausgang oder auch Transistoren
zum Schalten von Lasten, wie weiteren LEDs oder kleinen Motoren
anschließen. Dazu sind allerdings noch keine passenden Funktionen
implementiert...
Achtung: Fügen Sie auf jeden Fall mindestens 470 Ohm Widerstän-
de zwischen Sensoren/Aktoren und Ports ein, um eine Beschädigung
der Ports des Mikrocontrollers durch Überstrom zu vermeiden!
Mit dem RobotLoader kann man übrigens die LEDs während des
Bootvorgangs deaktivieren. Das ist nützlich, wenn man die Ports mit
irgend etwas anderem belegen will und nicht möchte, dass diese
Ports beim Booten an und ausgeschaltet werden. Das erste Byte im
internen EEPROM (also Adresse 0) ist für Einstellungen wie diese re-
serviert! Sie sollten dieses Byte also nicht in Ihren eigenen Program-
men verwenden! (das stört zwar sonst nichts wichtiges, aber man
könnte sich wundern warum die LEDs plötzlich nicht mehr leuchten
wenn man den RP6 anschaltet...)
Es gibt auf dem RP6 viele Dinge, die ständig ausgewertet und überwacht werden müs-
sen damit alles korrekt funktioniert. So z.B. das ACS. Hier müssen oft IR Impulse aus-
gesandt und Empfangen werden etc. pp.. Das kann man nicht alles automatisch in
Interrupt Routinen erledigen, weil diese immer möglichst schnell ausgeführt werden
müssen. Deshalb muss man aus dem Hauptprogramm ständig einige Funktionen
aufrufen, die Aufgaben wie diese erledigen. Wenn man das eigene Programm richtig
aufbaut, wirkt das aber so, als wenn das alles im Hintergrund laufen würde!
Diese Funktionen werden im Laufe dieses Kapitels alle noch vorgestellt. Um die Funk-
tionen für die Bumper zu verstehen, mussten wir das hier aber schon kurz vorweg-
nehmen!
Wo man nämlich ohnehin schon so einiges im Hintergrund ausführt, kann man auch
- 88 -