ETchris
27.12.2011, 14:08
Schönen guten Tag,
ich habe zu Weihnachten einen Rp6 bekommen und habe sogleich mit der Programmierung begonnen.
Der Roboter soll sobald der Infrarotsensor ein Hindernis erkennt erstmal nur anhalten!
Die Bumper sind als Notaus gedacht, und funktionieren auch einwandfrei.
Wo ist der Fehler in der Software? :-(
Es gibt keine Reaktion auf ein Hindernis.
Selbsttest 100% i.O.
Das Beispielprogramm für ACS funktioniert ebenfalls, ich möchte aber noch keinen Event Handler nutzen.
Programm:
#include "RP6RobotBaseLib.h"
int main(void)
{
initRobotBase();
while(true){
powerON();
moveAtSpeed(50,50);
setLEDs(0b001001); // green LEDS on 1/4
if(getBumperLeft()||getBumperRight()){
stop();
setLEDs(0b010010);
}
mSleep(50);
task_motionControl();
task_ADC();
task_ACS(); // Infrarot aktiv
setACSPwrHigh(); // größte Reichweite der Sensoren
if(obstacle_left || obstacle_right){
moveAtSpeed(0,0); } // Anhalten wenn Hindernis erkannt!
}
return 0;
}
ich habe zu Weihnachten einen Rp6 bekommen und habe sogleich mit der Programmierung begonnen.
Der Roboter soll sobald der Infrarotsensor ein Hindernis erkennt erstmal nur anhalten!
Die Bumper sind als Notaus gedacht, und funktionieren auch einwandfrei.
Wo ist der Fehler in der Software? :-(
Es gibt keine Reaktion auf ein Hindernis.
Selbsttest 100% i.O.
Das Beispielprogramm für ACS funktioniert ebenfalls, ich möchte aber noch keinen Event Handler nutzen.
Programm:
#include "RP6RobotBaseLib.h"
int main(void)
{
initRobotBase();
while(true){
powerON();
moveAtSpeed(50,50);
setLEDs(0b001001); // green LEDS on 1/4
if(getBumperLeft()||getBumperRight()){
stop();
setLEDs(0b010010);
}
mSleep(50);
task_motionControl();
task_ADC();
task_ACS(); // Infrarot aktiv
setACSPwrHigh(); // größte Reichweite der Sensoren
if(obstacle_left || obstacle_right){
moveAtSpeed(0,0); } // Anhalten wenn Hindernis erkannt!
}
return 0;
}