Hi,
dass Problem bei dem PollSwitch ist meistens das auch mal ein paar Bytes einfach so kommen obwohl keine Taste gedrückt worden ist und deswegen er unkontrollierte Bewegungen macht. Also einfach ein Sleep reingebaut damit er warten muss^^
Habs mal überarbeit:
Code:
#include "asuro.h"
int main()
{
Init();
int i;
while(1)
{
if (PollSwitch()==0) /* Keine Kollision */
{
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(155,155);
for (i=0; i<50;i++)
{
Sleep (72);
}
}
else if (PollSwitch()==1) /* Taster rechts-außen wird gedrückt */
{
StatusLED(RED);
MotorDir(RWD,RWD); /* Rückwärtskurve rechts*/
MotorSpeed(100,20);
for (i=0; i<1000;i++) /*1sekunde rückwärts fahren (1000mls)*/
{
Sleep(72);
}
MotorDir(FWD,FWD); /* Vorwärtskurve links*/
MotorSpeed(20,100);
for (i=0; i<500;i++)
{
Sleep(72);
}
}
else if (PollSwitch()>31) /* Taster Links-außen wird gedrückt */
{
StatusLED(YELLOW);
MotorDir(RWD,RWD); /* Rückwärtskurve links */
MotorSpeed(20,100);
for (i=0; i<1000;i++)
{
Sleep(72);
}
MotorDir(FWD,FWD); /* Vorwärtskurve rechts */
MotorSpeed(100,20);
for (i=0; i<500;i++)
{
Sleep(72);
}
}
else /* Andere Taster werden gedrückt */
{
BackLED(ON,ON);
MotorDir(RWD,RWD); /* Rückwärts fahren */
MotorSpeed(100,100);
for (i=0; i<1000;i++)
{
Sleep(72);
}
MotorDir(RWD,FWD); /* Drehung gegen UZS */
MotorSpeed(100,100);
for (i=0; i<500;i++)
{
Sleep(72);
}
}
}
return 0;
}
Die Sleeps hab ich auf 72 gestellt das entspricht einer Millisekunde, so kann man nämlich ganz leicht eine Sekunde einstellen
(Schleife mit 1000 durchläufen). Auch war ich mal so frech und hab es bissi übersichtlicher gestaltet 
beste Grüße
the.speciali
Lesezeichen