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
Code:
#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);
}
das einzigste problem ist einfach das speed mit start zwar verändert werden kann aber nicht weiter übernommen wird
Lesezeichen