Arexx RP6 V2 Build your own robot kit RP6 V2 User Manual
Product codes
RP6 V2
RP6 ROBOT SYSTEM - 4. Programmierung des RP6
4.6.6. ACS – Anti Collision System
Das Anti Collision System wird nicht mehr wie beim RP5, von einem kleineren Co-Pro-
zessor gesteuert, sondern direkt vom MEGA32. Das erfordert nun zwar etwas mehr
Das Anti Collision System wird nicht mehr wie beim RP5, von einem kleineren Co-Pro-
zessor gesteuert, sondern direkt vom MEGA32. Das erfordert nun zwar etwas mehr
Programmieraufwand auf dem Hauptcontroller, hat aber auch den Vorteil, dass man
es beliebig verändern und verbessern kann. Beim RP5 war das Programm im Co-Pro-
es beliebig verändern und verbessern kann. Beim RP5 war das Programm im Co-Pro-
zessor nicht veränderbar...
Die Reichweite bzw. die Sendeleistung der beiden IR LEDs des ACS, kann man mit fol-
Die Reichweite bzw. die Sendeleistung der beiden IR LEDs des ACS, kann man mit fol-
genden Funktionen einstellen:
void setACSPwrOff(void) --> ACS IR LEDs aus
void setACSPwrLow(void) --> Geringe Reichweite
void setACSPwrMed(void) --> Mittlere Reichweite
void setACSPwrHigh(void) --> Maximale Reichweite
Wenn man das ACS auswerten möchte, muss man ständig aus der Hauptschleife her-
aus die Funktion:
aus die Funktion:
void task_ACS(void)
aufrufen, die das ACS komplett steuert. Der Rest sieht dann ganz ähnlich wie bei den
Bumpern aus.
Es gibt zwei Variablen:
Es gibt zwei Variablen:
obstacle_left und obstacle_right
welche jeweils den Wert true haben, sobald ein Hindernis detektiert wurde. Sind beide
true, befindet sich das Hindernis mittig vor dem Roboter.
Wenn man möchte, kann man auch hier einen Event Handler erstellen, muss man
aber nicht – also genau wie bei den Bumpern.
aber nicht – also genau wie bei den Bumpern.
void ACS_setStateChangedHandler(void (*acsHandler)(void))
Mit dieser Funktion registriert man den Event Handler, der folgende Signatur haben
muss:
void acsStateChanged(void)
Wie die Funktion genau heisst, ist dabei übrigens fast egal.
Das folgende Beispielprogramm zeigt die Anwendung. Zuerst wird der Event Handler
registriert (Zeile 44), dann die Stromversorgung zum IR Empfänger eingeschaltet
(Zeile 46 – ohne das funktioniert es nicht!) und die Sendestärke der ACS IR LEDs ein-
(Zeile 46 – ohne das funktioniert es nicht!) und die Sendestärke der ACS IR LEDs ein-
gestellt (Zeile 47). Unten in der Hauptschleife wird dann die Funktion task_ACS()
ständig aufgerufen.
Der Rest erfolgt automatisch – die acsStateChanged Funktion wird immer aufgerufen,
wenn sich der Zustand des ACS verändert hat – also wenn z.B. ein Objekt von den
ständig aufgerufen.
Der Rest erfolgt automatisch – die acsStateChanged Funktion wird immer aufgerufen,
wenn sich der Zustand des ACS verändert hat – also wenn z.B. ein Objekt von den
Sensoren entdeckt wird und wieder verschwindet. Das Programm stellt den aktuellen
Zustand des ACS als Text im Terminal und mit den LEDs dar.
Zustand des ACS als Text im Terminal und mit den LEDs dar.
- 94 -