Hallo!!
Endlich hab ich mal wieder Zeit gefunden um mich mit dem asuro zu beschäftigen.
Ich hab mich mal an die Odometrie gewagt und eigentlich meiner Meinung nach ein nicht so schlechtes Programm geschriebenm welches nur leider nicht funktioniert.
könnt ihr da vielleicht wo nen Fehler entdecken, oder ist das ganze generell falsch was ich da mache? Bitte nicht wunder das ich im unteren Teil für die Berechnung der Differenz zwei verschieden Methoden angewandt habe, will damit nur zeige das es mit keiner der zwei funktioniert.Code:#include "asuro.h" int main (void) { unsigned int data[2]; unsigned int L_alt_l[1]; //Letzte Wert des linken Fototransistors unsigned int L_alt_r[1]; //Letzte Wert des rechten Fototransistors float n_l; float n_r; int a; //Hilfsvariable int b; //Hilfsvariable unsigned char c; //Wert für die Geschwindigkeit des linken Motors unsigned char d; //Wert für die Geschwindigkeit des rechten Motors int dh_l; a = 0; b = 0; c = 140; // Wert für linken Motor bestimmen d = 140; // Wert für rechten Motor bestimmen Init(); OdometrieData(data); MotorDir(FWD, FWD); while(1) { MotorSpeed(c, d); L_alt_l[0] = data[0]; L_alt_r[0] = data[1]; OdometrieData(data); dh_l = data[0] - L_alt_l[0]; if( dh_l > 200) { a++; n_l=a/8; //Umdrehungen in der Zeit t } if( data[1] - L_alt_r[0] > 200 || data[1] - L_alt_r[0] < -200) { b++; n_r=b/8; //Umdrehungen in der Zeit t } if( n_l < n_r) { d--; //Geschwindigkeit des rechten Motors verkleinern } if( n_l > n_r) { c--; //Geschwindigkeit des rechten Motors verkleinern } } }
mfg Chrise







Zitieren

Lesezeichen