Hi!
Er fährt schonmal, reagiert auch auf buttons u.s.w... aber er hält sich nicht an seine zeit... er hört also nicht auf zu fahren... versteh nicht ganz warum... hab auch entsprechende änderungen am code vorgenommen, jedoch ohne erfolg.
Teilweise fängt auch die Gelbe StatusLED zum blinken an. Kann jedoch nicht erkennen woran das liegt.
Hier noch einmal der Code
Code:
#include "asuro.h"
void erwarten(unsigned int male); //Rufe Wartemodus ab
void collusion(unsigned int lang); //Rufe Collusion ab
int main(void)
{
Init();
//Ab hier beginnt Rolf zu "Leben"
//Morgenmassage senden
SerPrint("\r\nMuah... muss ich aufstehen?\r\n");
//Rolf wartet erstmal ab
erwarten(1);
//Rolf startet Kollusionsfahrt
collusion(10000);
return 0;
}
//Funktionen
//Rolf wartet auf etwas
void erwarten(unsigned int male) {
unsigned int i;
for (i = 0; i <= male; i++)
{
Msleep(500);
StatusLED(GREEN);
Msleep(10);
BackLED (OFF, ON);
Msleep(500);
StatusLED(OFF);
Msleep(10);
BackLED (ON, OFF);
Msleep(500);
BackLED (OFF, ON);
Msleep(500);
BackLED (ON, OFF);
if (i == male) BackLED (OFF, OFF); //Schalte Alles ab wenn am ende
}
}
//Rolf vorwaerts
void FWARD(void)
{
FrontLED(ON); //Kuendige Anfahren an
Msleep(300);
FrontLED(OFF);
Msleep(150);
FrontLED(ON);
Msleep(300);
FrontLED(OFF);
MotorDir(FWD,RWD); //Beide Motoren vorwaerts
MotorSpeed(150,150); //Los gehts
}
//Rolf rueckwaerts
void RWARD(void)
{
MotorDir(RWD,FWD); //Beide Motoren rueckwearts
MotorSpeed(120,120); //Los gehts
}
//Rolf rueckwaerts links
void RWDL(void)
{
MotorDir(RWD,FWD); //Beide Motoren rueckwearts
MotorSpeed(120,0); //Los gehts
}
//Rolf rueckwaerts rechts
void RWDR(void)
{
MotorDir(RWD,FWD); //Beide Motoren rueckwearts
MotorSpeed(0,120); //Los gehts
}
//Rolf stoppen
void STOP(void)
{
MotorSpeed(0,0);
FrontLED(OFF);
}
//Rolf kollusionsprogramm
void collusion(unsigned int lang)
{
unsigned long startzeit = Gettime();
unsigned char t1;
unsigned char t2;
unsigned long zeit;
zeit = startzeit + lang;
while ( startzeit < zeit ) //Fahre so lange wie zeit gegeben ist
{
t1 = PollSwitch();
t2 = PollSwitch();
if (t1 == 0 && t2 == 0 && startzeit < zeit) //Keine Taste gedrueckt, Rolf feahrt vorwaerts
{
FWARD(); //Auf gehts
}
else if (t1 && t2 && t1 == t2)
{
STOP(); //Stoppen
if (t1 & 0x07 && startzeit < zeit) //Linke tasten beruehrt
{
RWDL(); //LinksRueckwaerts ausweichen
}
if (t1 & 0x38 && startzeit < zeit) //Rechte tasten beruehrt
{
RWDR(); //RechtsRueckwearts ausweichen
}
Msleep(1000); //Eine Sekunde rueckwarts fahren
}
else STOP();
}
STOP();
}
Hat jemand einen gut gemeinten rat für mich? ^^
Lesezeichen