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
:
Verschoben durch User
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.