also toleranzmäßig funkitoniert mehr oder weniger ist noch ne einstellungssache. Aber er braucht so lange, um die Sensoren für die linienverfolgung abzufragen. Kann man den Code "beschleunigen"?
Code:#include "asuro.h" #include <stdlib.h> #define toleranz 20 void delay(int zlr); void gerade(); void zuruck(int timezuruck); void links(int timelinks); void rechts(int timerechts); void vor(int timevor); void lk(int timelk); void rt(int timert); void taster(); void porsche(); unsigned char taste; unsigned char PollSwitch(void); unsigned int data[2]; unsigned int j=1; /*Lenkung ist linker Motor Rechts ist FWD Links ist RWD Antrieb ist rechter Motor Vorfährts ist FWD Rückfährts ist RWD */ int main(void) { Init(); DDRD |= (1 << DDD1); // Port D1 als Ausgang PORTD &= ~(1 << PD1); // PD1 auf LOW while (1) { FrontLED(ON); BackLED(ON,OFF); delay(500); BackLED(ON,ON); delay(500); gerade(); delay(1000); MotorDir(BREAK,BREAK); while (1) { if (PIND & (1 << PD0)) { MotorSpeed(255,255); LineData(data); taste = PollSwitch(); porsche(); } else { MotorSpeed(255,150); LineData(data); taste = PollSwitch(); porsche(); } } } return 0; } void delay (int zlr) { unsigned int i; i = 1; while (i < zlr) { Sleep (72); i++; } return; } void gerade() { MotorDir(FWD,BREAK); delay(1000); MotorDir(RWD,BREAK); delay(500); } void zuruck(int timezuruck) { MotorDir(BREAK,RWD); delay(timezuruck); } void links(int timelinks) { MotorDir(RWD,FWD); delay(timelinks); } void rechts(int timerechts) { MotorDir(FWD,FWD); delay(timerechts); } void vor(int timevor) { MotorDir(BREAK,FWD); delay(timevor); } void lk(int timelk) { MotorDir(RWD,BREAK); delay(timelk); } void rt(int timert) { MotorDir(FWD,BREAK); delay(timert); } void taster() { if (taste == 1) //Rechts vorne { gerade(); zuruck(1000); links(500); vor(700); rechts(600); vor(500); rechts(400); links(1000); rechts(500); } if (taste == 2) //2te von Rechts vorne { gerade(); zuruck(1000); links(500); vor(700); rechts(600); vor(500); rechts(400); links(1000); rechts(500); } if (taste == 4) //Mitte vorne { gerade(); zuruck(1500); MotorDir(BREAK,BREAK); delay(200); lk(500); vor(1500); rt(1000); zuruck(2500); lk(1000); vor(2500); rt(500); } if (taste == 7) //2te von Links vorne { gerade(); zuruck(1000); rechts(500); vor(700); links(600); vor(500); links(400); rechts(1000); links(500); } if (taste == 16) //Links Vorne { gerade(); zuruck(1000); rechts(500); vor(700); links(600); vor(500); links(400); rechts(1000); links(500); } if (taste == 31) //hinten { gerade(); links(500); rechts(1000); links(1000); rechts(500); } } void porsche() { if (taste > 0) { taster(); } else if(data[0]>(data[1]+toleranz)) { links(500); BackLED(ON,OFF); } else if(data[0]<(data[1]-toleranz)) { rechts(400); BackLED(OFF,ON); } else { vor(200); BackLED(ON,ON); } }







Zitieren

Lesezeichen