So...
Habs nun schon mal so hinbekommen, dass es ohne probleme funktioniert... nur teilweise hat er seinen spinnenden momente wo er einfach neustartet, oder einfach einen gedrückten button simuliert und dementsprechend reagiert. Oder manchmal blingt die Statusled gelb grün (abwechselnd) und er sendet unlesbare zeichen ^^
Teilweise aber funktioniert es wieder tadelos... müsste ein hardwarefehler sein oder? Vll mischen sich auch alte programmteile ein?
Vll ist es aber doch mein Code... wer ihn mal anguggen will
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); //miau RWARD(); Msleep(1000); STOP(); 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 zeit = 0; unsigned long startzeit = Gettime(); unsigned char t1; unsigned char t2; while (zeit < (startzeit+lang)) //Fahre so lange wie zeit gegeben ist { zeit = Gettime(); t1 = PollSwitch(); t2 = PollSwitch(); if (t1 == 0 && t2 == 0 && zeit < (startzeit+lang)) //Keine Taste gedrueckt, Rolf feahrt vorwaerts { FWARD(); //Auf gehts } else if (t1 && t2 && t1 == t2 && zeit < (startzeit+lang)) { STOP(); //Stoppen if (t1 & 0x07 && zeit < (startzeit+lang)) //Linke tasten beruehrt { RWDL(); //LinksRueckwaerts ausweichen SerPrint("\r\n Hab links was beruehrt, weiche aus...\r\n"); } if (t1 & 0x38 && zeit < (startzeit+lang)) //Rechte tasten beruehrt { RWDR(); //RechtsRueckwearts ausweichen SerPrint("\r\n Hab rechts was beruehrt, weiche aus...\r\n"); } Msleep(1000); //Eine Sekunde rueckwarts fahren } SerPrint("\r\nWiederhohle Schleife fuer Collisionsfahrt\r\n"); PrintLong(zeit); } STOP(); SerPrint("\r\nVerlasse Collisionsschleife.\r\n"); }






Zitieren

Lesezeichen