-
versuchs mal so:
Code:
#include "RP6RobotBaseLib.h"
void Bumper()
{
if(getBumperLeft())
{
writeString("Linker Bumper gedrueckt!! \n");
}
else if(getBumperRight())
{
writeString("Rechter Bumper gedrueckt!! \n");
}
else if(getBumperLeft() && getBumperRight())
{
writeString("Beide Bumper gedrueckt!! \n");
}
}
int main(void)
{ initRobotBase();
powerON();
writeString("Hallo! \n");
while(1)
{
Bumper();
}
return 0;
}
Bei mir funktioniert es so jedenfalls...
-
Hab eben noch einen Fehler bemerkt:
Die Abfrage, ob beide Bumper gedrückt sind, muss als erste kommen,
sonst ist zuerst die Bedingung "Linker Bumper ist gedrückt" erfüllt und der else-Zweig für die Abfrage beider Bumper wird nie erreicht.
Also so:
Code:
void Bumper()
{
if(getBumperLeft() && getBumperRight())
{
writeString("Beide Bumper gedrueckt!! \n");
}
else if(getBumperLeft())
{
writeString("Linker Bumper gedrueckt!! \n");
}
else if(getBumperRight())
{
writeString("Rechter Bumper gedrueckt!! \n");
}
}
-
So, wie orusa es geschrieben hat, geht es auch. Will man allerdings statt den Funktionen die Variablen nutzen, muss man eben in der Hauptschleife task_bumpers(); aufrufen.
-
Richtig! Das wäre dann die alternative Lösung:
Code:
#include "RP6RobotBaseLib.h"
void Bumper()
{
if(bumper_left && bumper_right)
{
writeString("Beide Bumper gedrueckt!! \n");
}
else if(bumper_left)
{
writeString("Linker Bumper gedrueckt!! \n");
}
else if(bumper_right)
{
writeString("Rechter Bumper gedrueckt!! \n");
}
}
int main(void)
{ initRobotBase();
powerON();
writeString("Hallo! \n");
while(1)
{
task_Bumpers();
Bumper();
}
return 0;
}
Noch etwas eleganter geht es über den Eventhandler:
Code:
#include "RP6RobotBaseLib.h"
void Bumper()
{
// wie oben
}
int main(void)
{ initRobotBase();
powerON();
writeString("Hallo! \n");
BUMPERS_setStateChangedHandler(Bumper); // hier wird Bumper() an den Event gekoppelt
while(1)
{
task_Bumpers();
}
return 0;
}
In diesem Fall wird die Funktion Bumper() nur noch dann aufgerufen, wenn das Ereignis auftritt, dass sich der Zustand der Bumpers geändert hat.
-
Danke, Leute, jetzt funkionierts, wie ich es mir vorgestellt habe. Ich werde nun versuchen, die LEDs mit einzubinden.
MfG
Michi