so
tut mir echt leid für die verspätete antwort hatte letzen tage bissl stress^^
das hier ist mein volles programm
ich gehe mal von aus das ihr das dann versteht was o auf sich hat
das einzigste problem ist einfach das speed mit start zwar verändert werden kann aber nicht weiter übernommen wirdCode:#include "stdlib.h" #include "asuro.h" #include "lcd.h" #include "i2c.h" int speed = 100; int o = 1; void start(int speed) { int keys; int i = 1; int zaehler = 0 ; while(i >0) { keys = PollSwitchLCD(); if (keys & LCD_KEY_YELLOW) //schwarzer Taster { while ( zaehler == 0) { if(speed < 350) //Geschwindigkeit erhöhen { speed = speed +10; ClearLCD(); PrintSetLCD(0,0,"Geschwindigkeit"); SetCursorLCD(0, 1); zaehler = zaehler +1; PrintIntLCD(speed); } zaehler = zaehler +1; } } else if (keys & LCD_KEY_RED ) //roter Taster { //wechseln von der Geschwindigkeiseinstellung i = 0; //in den Messbetrieb } else if (keys & LCD_KEY_BLUE ) //Blauer Taster { while ( zaehler == 0) { if(speed >0) { speed = speed -10; //Geschwindigkeit vermindern ClearLCD(); PrintSetLCD(0,0,"Geschwindigkeit"); SetCursorLCD(0, 1); PrintIntLCD(speed); zaehler = zaehler +1; } zaehler = zaehler +1; } } if(!keys) // für das einmalige hochzählen beim drücken eines knopfes { Msleep(100); zaehler = 0; } } o--; } void berechnung(int zeit) { int keys; int reifen = 120; //Reifenumfang in mm int wegaenderung = 0; int inszeit = 0; int geschwindigkeit = 0; int durchschnitt = 0; int zaehler = 1 ; while(1) { int odometrie = encoder[0]; wegaenderung = odometrie + reifen / 8 / 10; inszeit = Gettime() /1000; geschwindigkeit = wegaenderung / inszeit; durchschnitt = wegaenderung / inszeit; keys = PollSwitchLCD(); if(keys) // für das ständige aktuallisieren der Daten { zaehler = 0; } if ((keys & LCD_KEY_YELLOW) || (zaehler == 1) ) // Geschwindigkeit { ClearLCD(); PrintSetLCD(0,0,"CM pro S"); SetCursorLCD(0, 1); PrintIntLCD(geschwindigkeit); zaehler = 1; } else if ((keys & LCD_KEY_RED) || (zaehler == 2)) //Zurückgelegter Weg { ClearLCD(); PrintSetLCD(0,0,"Weg in CM"); SetCursorLCD(0, 1); PrintIntLCD(wegaenderung); zaehler = 2; } else if ((keys & LCD_KEY_BLUE) || (zaehler == 3)) // Durchschnittsgeschwindigkeit { ClearLCD(); PrintSetLCD(0,0,"CM pro S"); SetCursorLCD(0, 1); PrintIntLCD(durchschnitt); zaehler = 3; } Msleep(100); } } //Hauptprogramm int main(void) { //Geschwindigkeit //void int speed = 100; Init(); InitI2C(); InitLCD(); EncoderInit(); EncoderSet(780,790); EncoderStart(); GREEN_LED_ON; while(o > 0) { PrintSetLCD(0,0,"Geschwindigkeit"); SetCursorLCD(0, 1); PrintIntLCD(speed); start(speed); } MotorDir(FWD,FWD); MotorSpeed(speed,speed); int zeit = Gettime() / 1000; //zeit in Sekunden ClearLCD(); PrintIntLCD(zeit); berechnung(zeit); }







Zitieren


Lesezeichen