Arduino LCD Variable count

Gast #4551818
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
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
>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
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
>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
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

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.