Nun ist es mal wieder so weit, ich brauche euro hilfe. Vornweg die Hilfe sollte schnell sein da ich an diesem Donnerstag meine GFS halten muss.
Ich habe jezt alle meine Codes verucht in eine Datei zu bekommen da man ja schlecht beim vortrag immer flashen kann. Nun habe ich aber das proplem damit dies nicht funktioniert. Ich hoffe ihr könnt mir helfen. Ich habe den code von der Kolision genommen um das "Menü" zu machen. Hier der Code:
Naja wenn ihr mir nicht helfen könnt auch nicht so schlimm dan muss ich eben doch nebenher flashen.Code:#include "asuro.h" #define TRIGGERLEVEL 655 #define HYSTERESIS 10 #define LOW 0 #define HIGH 1 #define GESCHW 65 int main(void) { unsigned int z ,ll ,rr; unsigned char taste1, taste2 ,taste3, taste4; unsigned int data[2]; signed int status[2]={0,0}; signed int difference=0; MotorDir(FWD, FWD); int lData[2]; int i, donl, doffl, donr, doffr, l, r; Init(); while(1) { taste4=PollSwitch(); taste2=PollSwitch(); taste1=PollSwitch(); taste3=PollSwitch(); if (taste1 && (taste1==taste2) && (taste3==taste4) && (taste1==taste3) && (taste1==taste4)) { ll=0; rr=0; if (taste1==1) { ////////////////////////////////////////////// ///// Kolision ////////////////////////////////////////////// while(1) { taste4=PollSwitch(); taste2=PollSwitch(); taste1=PollSwitch(); taste3=PollSwitch(); if (taste1 && (taste1==taste2) && (taste3==taste4) && (taste1==taste3) && (taste1==taste4)) { l=0; r=0; if (taste1==1) {l=120;r=0;} if (taste1==2) {l=0;r=160;} if (taste1==4) {l=0;r=120;} if (taste1==8) {l=120;r=0;} if (taste1==16) {l=160;r=0;} if (taste1==32) {l=0;r=120;} StatusLED(RED); MotorDir(RWD,RWD); MotorSpeed(l,r); for(z=0;z<250;z++) { Sleep(255); } } else { StatusLED(GREEN); MotorDir(FWD,FWD); MotorSpeed(120,120); } taste2=0; taste1=0; } return 0; ////////////////////////////////////////////// ///// Kolision ////////////////////////////////////////////// } if (taste1==2) { ////////////////////////////////////////////// ///// Odometer ////////////////////////////////////////////// while(1) { // Helligkeitswerte der Lichtschranken auslesen OdometrieData(data); // Wechsel linker Sensor von niedrig auf hoch? if ((status[0]==LOW) && (data[0]>TRIGGERLEVEL+HYSTERESIS)) { status[0]=HIGH; difference++; } // Wechsel linker Sensor von hoch auf niedrig? if ((status[0]==HIGH) && (data[0]<TRIGGERLEVEL-HYSTERESIS)) { status[0]=LOW; difference++; } // Wechsel rechter Sensor von niedrig auf hoch? if ((status[1]==LOW) && (data[1]>TRIGGERLEVEL+HYSTERESIS)) { status[1]=HIGH; difference--; } // Wechsel rechter Sensor von hoch auf niedrig? if ((status[1]==HIGH) && (data[1]<TRIGGERLEVEL-HYSTERESIS)) { status[1]=LOW; difference--; } // zur Sicherheit: verhindern, dass der Differenzz?ler // den erlaubten Wertebereich verl?st if (difference<-255) difference=-255; if (difference>255) difference=255; // Status-LED noch entsprechend der erkannten Segmente // aufleuchten lassen, grn fr links, rot fr rechts StatusLED(status[0]+status[1]*2); // Z?ldifferenz passend auf die Motoren verteilen if (difference>0) MotorSpeed(255-difference-50,255-50); else MotorSpeed(255-50,255+difference-50); } return 0; ////////////////////////////////////////////// ///// Odometer ////////////////////////////////////////////// } if (taste1==4) { ////////////////////////////////////////////// ///// Linien ////////////////////////////////////////////// while(1) { FrontLED(OFF); // Umgebungslicht filtern Sleep(10); // kurz warten bis LED aus LineData(lData); // LineData(lData); // doffl = (lData[0]); // doffr = (lData[1]); // FrontLED(ON); // Sleep(10); // kurz warten bis LED an LineData(lData); // LineData(lData); // donl = (lData[0]); // donr = (lData[1]); // l = donl - doffl; // r = donr - doffr; // r und l sind nun die werte von T9 und T10 mit gefiltertem Umgebungslicht i = (l+r)/2; if (l<r) // gegenlenken { MotorSpeed(GESCHW -i+68, GESCHW +i); } else { MotorSpeed(GESCHW +i+68, GESCHW -i); } } return 0; ////////////////////////////////////////////// ///// linien ////////////////////////////////////////////// } if (taste1==8) {l=120;r=0;} if (taste1==16) {l=160;r=0;} if (taste1==32) {l=0;r=120;} StatusLED(RED); taste2=0; taste1=0; } return 0; } }
Vielen Dank im Voraus!







Zitieren

Lesezeichen