Hallo Valen,
danke, deinen Code habe ich auch noch mit eingebaut, als kleine Sicherheit. Ab und an machen die Taster wirklich, was sie wollen .
Für interessierte Anfänger hier ist jetzt mein kleines Programm:
Code:
#include "asuro.h"
void MSleep(int dauer)
{
int z;
for(z=0; z<dauer;z++)
Sleep(72);
}
int main(void)
{
Init();
while(1)
{
int t1;
int t2;
t1 = PollSwitch();
t2 = PollSwitch();
if((t1==t2) &&(t1>0))
{StatusLED(RED);
BackLED(ON,ON);
MotorDir(BREAK,BREAK);
MotorDir(RWD,RWD);
MotorSpeed(120,70);
MSleep(2000);
}
else
{StatusLED(GREEN);
BackLED(OFF,OFF);
MotorDir(FWD,FWD);
MotorSpeed(120,140);}
}
return 0;
}
Der kleine Asuro fährt vorwärts, bis die Taster eine "Kollision" melden, dann wendet er für 2 Sekunden rückwärts und fährt bis zur Kollision wieder vorwärts. Die Differenz bei MotorSPeed(120,140) dient dem Ausgleich, der rechte Motor scheint etwas langsamer zu drehen, was evtl. an meinem Ritzeltausch liegt oder daran, dass die Achsen etwas weiterzusammengerückt sind. Mittlerweile läuft es aber. Im Normalfall sollten dort natürlich die gleichen Werte stehen.
Gruß,
Dirk
Lesezeichen