Ich möchte auf dem LCD eine Variable Ausgeben (score). Diese kann mit
der Taste Up/Down erhöt und verringert werden. Dies ist auch kein
Problem.
Mein Problem ist das Richtige anzeigen dieser Variable auf dem LCD.
Sobald ich eine zehner,hunderter stelle erreiche mit der Taste Up ist
noch alles in Ordnung:
1,2...10....100...1000
Sobald ich aber herunterzähle z.b von 100 auf 99 wird mir die Letzte
NULL(0) nicht gelöscht und es liest sich : 990 auf dem LCD. Wie kann ich
dies beheben ?
Am liebsten währe mir eine Lösung bei der sich die Zahl von Links nach
Rechts abbaut:
1000
x100
xx10
xxx0
(x dient nur als Platzhalter, diese stellen sollten leer sein beim LCD).
Mfg Koe
holger schrieb:> lcd.setCursor(13, 1);> lcd.print(" ");> lcd.setCursor(13, 1);> lcd.print(score);
Danke holger
Warum ist es nötig den setCursor zwei mal zu setzten habe dies getestet
und es geht nur wenn er zwei mal gesetzt wird. Bleibt der cursor nicht
an der zuletzt aufgerufener Position ?
Ist es noch möglich das "Wachsen" der Variable zu steuern ?
Von Rechts nach Links bein hochzählen:
xx0
x10
100
Von Links nach rechts beim Herunterzählen:
100
x10
xx0
Mfg Koe
>Ist es noch möglich das "Wachsen" der Variable zu steuern ?
Natürlich ist das möglich. Denk doch mal nach.
Wenn du rechtsbündig möchtest:
Anzeige ist kleiner 10, 3 Leerzeichen schreiben dann Wert
Anzeige ist kleiner 100, 2 Leerzeichen schreiben dann Wert
Anzeige ist kleiner 1000, 1 Leerzeichen schreiben dann Wert
Anzeige ist größer gleich 1000, kein Leerzeichen schreiben dann Wert
holger schrieb:>>Ist es noch möglich das "Wachsen" der Variable zu steuern ?>> Natürlich ist das möglich. Denk doch mal nach.> Wenn du rechtsbündig möchtest:>> Anzeige ist kleiner 10, 3 Leerzeichen schreiben dann Wert> Anzeige ist kleiner 100, 2 Leerzeichen schreiben dann Wert> Anzeige ist kleiner 1000, 1 Leerzeichen schreiben dann Wert> Anzeige ist größer gleich 1000, kein Leerzeichen schreiben dann Wert
Ok Danke
>Warum ist es nötig den setCursor zwei mal zu setzten habe dies getestet>und es geht nur wenn er zwei mal gesetzt wird. Bleibt der cursor nicht>an der zuletzt aufgerufener Position ?
Nein der Cursor wird "mitgeschleift". Ist ja auch sinnvoll!
Wie beim Schreiben z.B. mit Deinem Editor, wird die Schreibmarke, mit
jeder Ausgabe mitgeführt.
Wie beim Schreiben mit Deinem Editor muss Du explizit zurückgehen, um
eine vorherige Ausgabe zu korrigieren/überschreiben.
Für einen Test brauchst Du nur die zweite Positionierung herausnehmen.
Schon läuft die Ausgabe "durch".
Sebastian S. schrieb:> Willst Du die 6 in "char strtmp[6];" nicht ein wenig aufrunden?
Ja wär besser. Anfangs wollte ich nur das int darstellen,
dann hätte es gereicht.
Ach so, ich vergaß:
Werden die Komfortfunktionen wie z.B. sprintf nicht sowieso an anderer
Stelle verwendet, so würde ich mir die Einbindung der zugehörigen
Bibliothek aus Platzgründen noch mal überlegen...
Geht es aber um Geschwindigkeit, so ist eine zweifache Ausgabe via
lcd.print() auch nicht das Gelbe vom Ei.
holger schrieb:> Also wenn schon sprintf dann richtig:>> sprintf (strtmp, "Punktezahl % 4d", score);
Wenn "richtig", dann aber ohne Leerzeichen nach dem Prozentzeichen. Da
gehört keines hin.