Hallo Radbuch,
ich hab's heute endlich geschaft, dass der ASURO z.B. 4 Umdrehungen vorfährt!!! Hier das Programm:
Und was sagst du dazu.Code:/*Asuro fährt geradeaus und misst die Helligkeit der Readsensoren*/ #include <asuro.h> #include <string.h> int main(void) { unsigned int umdrehung=0; //Ist wichtig zu zaehlen der Umdrehungen unsigned int zaehler=0; //Ist wichtig zu zaehlen der verschiedenen Felder unsigned int zeit; //Ist wichtig fuer die Pausen unsigned int data[2],data_min[2],data_max[2],data_mit[2]; char AusgabeTxt[80], Text[80], Textaa[80]; //Ist wichtig für die SerWrite ausgaben Init(); data_max[0] = 0; data_max[1] = 0; data_min[0] = 65000; data_min[1] = 65000; MotorDir(FWD,FWD); //Asuro fäht sehr langsam fuer genaue Messungen MotorSpeed(150,160); OdometrieData(data); //Das aktuelle Feld wird erfasst if (data[0] < data_min[0]) //Hier werden die Daten vom OdometrieData ausgewertet und der höchste { data_min[0] = data[0]; //und niedrigste Wert beider Seiten wird gespeichert } if (data[1] < data_min[1]) { data_min[1] = data[1]; } if (data[0] > data_max[0]) { data_max[0] = data[0]; } if (data[1] > data_max[1]) { data_max[1] = data[1]; } sprintf (AusgabeTxt, "Min 1: %d Min 2: %d Max 1: %d Max 2: %d \n\r", data_min[0],data_min[1],data_max[0],data_max[1]); //Die gespeicherten Werte werden hier über einen Striing ausgegeben SerWrite(AusgabeTxt,80); data_mit[0]=((data_max[0]-data_min[0])/2)+data_min[0]; //Hier wird der Mittelwert vom linkenm Rad berechnet sprintf (Text,"Mittelwert links: %d \n\r",data_mit[0]); //Dieser wird dann ausgegeben SerWrite(Text,80); data_mit[1]=((data_max[1]-data_min[1])/2)+data_min[1]; //Das ganze mit der anderen Seite sprintf (Textaa,"Mittelwert rechts: %d \n\r",data_mit[1]); SerWrite(Textaa,80); //Bishierhin wurde nur kaliebriert und erfasst while(1) //Folgendes wird immer wiederholt und ist das eigendliche Programm { OdometrieData(data); //Das aktuelle Feld wird erfasst if(data[1]>data_mit[1]) //und mit dem Mittelwert verglichen { //wenn es dunkeler war wird das zu der Anzahl der dunkelen Felder addiert zaehler++; SerWrite("zeahler++\n\r",11); //Dieses TOPEREIGNISS wird natürlich weitererzählt } if(zaehler>=6) //Wenn 6 dunkle Felder erfasst wurden { umdrehung++; //Haben sich die Räder einmal gedreht SerWrite("Umdrehung++\n\r",14); //Auch dieses TOPEREIGNISS wird natürlich weitererzählt zaehler = 0; } if(umdrehung>=4) //wenn sie sich denn 4 mal gedreht haben { MotorSpeed(0,0); for(zeit=0;zeit<4000;zeit++) //Vier Sekunden stillstand { Sleep(36); } umdrehung = 0; SerWrite ("Das waren 4 Umdrehungen!\n\r",26); } } while(1) return 0; }
Natürlich will ich besteh ich nicht darauf, dass du was dazu schreibst. Programmieren und CO soll ja Spaß machen. Aber ich würde mich schon mal über ne kurze Stellungsnahme von dir freuen.Allerdings ist es jetzt kein MEGAerfolg. Aber dennoch ein Erfolg.
Gruß Roboaktiv







Zitieren

Lesezeichen