User manual
RP6 ROBOT SYSTEM - 4. Programmierung des RP6
Zimmerdecke und anderen Gegenständen oder bei direkter Sichtverbindung nach
vorn, kann man so mit anderen Robotern oder z.B. einer Basisstation kommunizieren.
Das geht zwar nur relativ langsam (ein Datenpaket braucht ca. 20ms und danach eine
kleine Pause), aber einfache Kommandos und einzelne Messwerte lassen sich schon
damit übertragen. Die Reichweite ist natürlich etwas eingeschränkt und es funktioniert
nur im selben Raum wenn die Roboter maximal etwa 2 bis 4 Meter voneinander ent-
fernt sind (je nach Lichtverhältnissen, Hindernissen, Beschaffenheit der Zimmerdecke
und den Aufbauten/Erweiterungen auf den Robotern). Die Reichweite lässt sich aber
steigern, wenn man z.B. noch ein paar weitere IR LEDs hinzuschaltet (z.B. mit einem
weiteren MOSFET, einem großen Kondensator und kleinem Vorwiderstand).
Aufgrund der notwendigen Synchronisation mit dem ACS ist auch für diese Aufgaben
die task_ACS() Funktion zuständig. Diese muss also auch deshalb ständig in der
Hauptschleife aufgerufen werden, damit auf empfangene IR Daten reagiert werden
kann - und außerdem um die Übertragungen mit dem IRCOMM auszuführen!
RC5 Datenpakete enthalten immer eine Geräteadresse, den „Keycode“ und ein „Togg-
lebit“. Die 5 Bit Geräteadresse gibt an, welches Gerät angesteuert werden soll. Bei
normaler Verwendung kann man so die Fernbedienungen für TV, Videorecorder, HiFi
Anlage etc. unterscheiden. Bei unserer Anwendung kann man anstattdessen z.B. ver-
schiedene Roboter adressieren. Der 6 Bit Keycode ist bei normalen Fernbedienungen
der Tastencode, aber wir können damit natürlich auch Daten übertragen. Zwar nur 6
Bit, aber 8 Bit Daten könnte man auf zwei Übertragungen aufteilen, oder noch 2 der 5
Bit Geräteadresse oder das Togglebit zweckentfremden.
Das Togglebit wird normalerweise dazu verwendet, um zu unterscheiden ob eine Taste
auf der Fernbedienug dauerhaft gedrückt wird oder mehrmals hintereinander. Das
Togglebit kann bei Datenübertragungen von Roboter zu Roboter aber beliebig verwen-
det werden.
RC5 Daten kann man mit dieser Funktion senden:
void IRCOMM_sendRC5(uint8_t adr, uint8_t data)
Wobei adr die Geräteadresse und data Keycode bzw. Daten sind. In adr kann man
zusätzlich das Toggle Bit setzen, indem man das höchstwertige Bit dieses Bytes setzt.
Dazu kann man die Konstante TOGGLEBIT wie folgt verwenden:
IRCOMM_sendRC5(12 | TOGGLEBIT, 40);
Dieser Befehl sendet ein RC5 Datenpaket an Adresse 12, bei gesetztem Togglebit und
mit 40 als Daten.
IRCOMM_sendRC5(12, 40);
So sieht es dann aus, wenn man das Togglebit NICHT setzen will.
Der Empfang von RC5 Daten funktioniert über einen Event Handler, ähnlich wie bei
den Bumpern und beim ACS. Der Event Handler wird automatisch aus der task_ACS()
Funktion aufgerufen sobald neue RC5 Daten vorliegen. Beispielweise könnte man
dann, wenn Tastencode 4 empfangen wurde, nach links drehen und bei Code 6 nach
rechts o.ä....
In einem der Beispielprogramme wird genau das gemacht: man kann die Bewegung
des Roboters komplett über eine IR Fernbedienung steuern.
- 97 -