Arduino LCD Variable count

Gast #4551818
Lesenswert?
• ▲
▼
Guten Abend,
1
case 1: // maxScore Set
2
        lcd.clear();
3
        lcd.setCursor(0, 0);
4
        lcd.print("Maximale");
5
        lcd.setCursor(0, 1);
6
        lcd.print("Punktezahl : ");;
7
        while_OnOff = 1;
8
          while ( while_OnOff == 1 )
9
          {
10
            short int buttonVar = buttonPress();
11
            if( buttonVar == 2 && score < maxScore )
12
              {
13
                score++;
14
              }
15
            if( buttonVar == 3 && score > 0 )
16
              {
17
                score--;
18
              }
19
            if( buttonVar == 1 )
20
              {
21
                while_OnOff = 0;
22
                case_RunStatus = 2;
23
              }
24
            lcd.setCursor(13, 1);
25
            lcd.print(score);
26
          }
27
        break;

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
Gast #4551833
Lesenswert?
• ▲
▼
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
Gast #4551842
Lesenswert?
• ▲
▼
>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
Gast #4551846
Lesenswert?
• ▲
▼
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
#4551946
Lesenswert?
• ▲
▼
>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".
#4551968
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren