Hallo zusammen. In meiner Funktion "auswahl" besteht folgendes Problem: int x = 0; void auswahl(void){ SetFont(FONT_8_norm); LCDSoftText("Relais 0",7,0,BLACK); LCDSoftText("Relais 1",7,9,BLACK); LCDSoftText("Relais 2",7,18,BLACK); LCDSoftText("-",0,x,BLACK); switch(x){ //der - nur auf den 3 zeilen case -9: x = 18; break; case 27: x = 0; LCDSoftText(" ",0,27,BLACK); break; } if (get_key_short (1<<S0)){ LCDSoftText(" ",0,x,BLACK); //lösche den - auf der zeile x = x+9; //zeichne den - auf nächster zeile } else if (get_key_short (1<<S1)){ LCDSoftText(" ",0,x,BLACK); //lösche den - auf der zeile x = x-9; //zeichne den - auf vorheriger zeile } else if(x==0){ //wenn - auf erster zeile if (get_key_short(1<<S2)){ //und S2 betätigt wird //ClearScreen(); //lösche lcd LCDSoftText("AN",0,0,BLACK); //schreibe LCDSoftText("AUS",0,9,BLACK); //schreibe } } LCD_refresh();//sende an lcd } Mein Problem ist jetzt, wenn: else if(x==0){ if (get_key_short(1<<S2)) die beiden erfüllt sind, wird mir das AN und AUS zwar angezeigt, aber der Rest bleibt auch noch stehen. Was kann ich da machen.? danke MfG
Wie wäre es, wenn du die Zeile
> //ClearScreen(); //lösche lcd
entkommentierst ?
Wenn du nicht das ganze LCD löschen willst, sondern nur Teile davon,
dann musst du das halt entsprechend hinschreiben.
Oliver
Oliver schrieb: > Wie wäre es, wenn du die Zeile >> //ClearScreen(); //lösche lcd auch wenn es da steht. Das selbe Problem. habe aber gerade eine lösung gefunden: int x = 0; int z = 0; void auswahl(void){ SetFont(FONT_8_norm); switch(z){ case 0: LCDSoftText(" ",0,0,BLACK); LCDSoftText(" ",0,9,BLACK); LCDSoftText(" ",0,18,BLACK); LCDSoftText("Relais 0",7,0,BLACK); LCDSoftText("Relais 1",7,9,BLACK); LCDSoftText("Relais 2",7,18,BLACK); LCDSoftText("-",0,x,BLACK); switch(x){ case -9: x = 18; break; case 27: x = 0; LCDSoftText(" ",0,27,BLACK); break; } if (get_key_short (1<<S0)){ LCDSoftText(" ",0,x,BLACK); x = x+9; } else if (get_key_short (1<<S1)){ LCDSoftText(" ",0,x,BLACK); x = x-9; } break; case 1: LCDSoftText(" ",0,0,BLACK); LCDSoftText(" ",0,9,BLACK); LCDSoftText(" ",0,18,BLACK); LCDSoftText("AN",0,0,BLACK); LCDSoftText("AUS",0,9,BLACK); break; } if(x==0){ if (get_key_short(1<<S2)){ z = 1; } if (get_key_short(1<<S3)){ z = 0; } } LCD_refresh(); } jetzt ist nur noch das problem, wenn AN und AUS dasteht, flakkert es ein wenig. wie kann man das beheben.?
agast schrieb: > LCDSoftText(" ",0,0,BLACK); > LCDSoftText("AN",0,0,BLACK); Was denn nun? agast schrieb: > flakkert es ein > wenig. wie kann man das beheben.? Einfach nicht verschiedene Sachen an die gleiche Stelle schreiben.
das war das problem....danke case 1: //LCDSoftText(" ",0,0,BLACK); //LCDSoftText(" ",0,9,BLACK); LCDSoftText(" ",0,18,BLACK); LCDSoftText("AN ",0,0,BLACK); LCDSoftText("AUS ",0,9,BLACK); break; so geht es. aber wie bekomm ich das flakkern bei -Re weg.? - Relais 1 Relais 2 Relais 3 geht das auch so einfach:?
Genau so... LCDSoftText(" Relais 0",0,0,BLACK); LCDSoftText(" Relais 1",0,9,BLACK); LCDSoftText(" Relais 2",0,18,BLACK); LCDSoftText("-",0,x,BLACK); sorry für die doofe frage... :)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.