Moin, wer kann mir erklären, was diese Ausschnitte aus der normalen Go() Funktion machen
1.) uint32_t enc_count; //was das?
int tot_count = 0;
2.) enc_count=abs(distance)*10000L; //was wird hier denn
enc_count/=19363L; //genau berechnet ?
3.) Encoder_Set(0,0); //warum immer reset ? wozou ?
Hier nochmal die Go() Funktion:
Code:void Go(int distance,int power) { uint32_t enc_count; int tot_count = 0; int diff = 0; int l_speed = power, r_speed = power; // calculation tics/mm enc_count=abs(distance)*10000L; enc_count/=19363L; Encoder_Set(0,0); // reset encoder MotorSpeed(l_speed,r_speed); if(distance<0) MotorDir(RWD,RWD); else MotorDir(FWD,FWD); while(tot_count<enc_count) { tot_count += encoder[LEFT]; diff = encoder[LEFT] - encoder[RIGHT]; //Programmanfang für geradeausfahren if (diff > 0) { //Links schneller als rechts if ((l_speed > power) || (r_speed > 244)) l_speed -= 10; else r_speed += 10; } if (diff < 0) { //Rechts schneller als links if ((r_speed > power) || (l_speed > 244)) r_speed -= 10; else l_speed += 10; } //Programmanende für geradeausfahren Encoder_Set(0,0); // reset encoder MotorSpeed(l_speed,r_speed); Msleep(1); } MotorDir(BREAK,BREAK); Msleep(200); }







Zitieren


Lesezeichen