-
        

Ergebnis 1 bis 7 von 7

Thema: LCD Display Richtige vAnzeige von Variablen

  1. #1

    LCD Display Richtige vAnzeige von Variablen

    Anzeige

    Hallo Leute,

    ich hab ein kleines Problem mit der Anzeige von Variablen auf meinem LCD Display.

    Follgende Komponenten sind im Einsatz:
    Arduino Uno V3
    LCD Display 4x20 Zeichen.

    Ich nutze mehrere Analoge Eingänge und möchte nun die Ergebnise als byte Wert an das Display senden.
    Das byte Wort reicht von 0-100... hier ein kleiner auszug:
    ...
    verwendet wird LiquidCristal.h... (alles ist richtig angeschlossen und Parametriert)
    ...
    lcd.setCursor(0,0);
    lcd.print(value1);
    ...

    Die Display Ausgabe sieht so aus:
    Ist das byte auf 0 steht da
    "0"
    geht das byte auf 100
    zeigt das Display:
    "100"
    geht das byte wieder auf 50 runter
    steht da:
    "500"
    er macht die 50 plötzlich 3 Stellig mit einer Null.

    Warum ist das so? ich bin echt Ratlos?!
    Würde mich freuen, wenn mich einer von euch helfen könnte.

    Guß Dani

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.401
    Zitat Zitat von MacGyver83 Beitrag anzeigen
    er macht die 50 plötzlich 3 Stellig mit einer Null.
    Klassisches Problem: die letzte 0 ist vom vorigen 100 schreiben übrig geblieben.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    Hi Dani,

    willkommen im Forum.

    ... er macht die 50 plötzlich 3 Stellig mit einer Null ...
    Nein, "er" macht das nicht, das machst schon Du. Die Ausgabe ans LCD fängt an einer bestimmbaren Stelle an, bei Dir vermutlich am Beginn der Zeile. Und die Ausgabe erfolgt ohne führende Nullen - - - und nu kommt DEIN Problem.

    Von der letzten Ausgabe bleibt die Null stehen, denn wenn nun die 100 mit ner 50 überschrieben werden soll, dann steht die neue Fünf da, wo vorher die Eins stand, die Null kommt auf die alte Null (ABER das ist nun ne Null von ner Einerstelle die auf die Null von einer Zehnerstelle kommt) und die alte Null bleibt. Du kannst das quick´n´dirty ändern indem Du vor jeder Ausgabe die Zeile löscht. Oder indem Du ne Leerstelle ausgibst immer dann, wenn Du mehrstellige Zahlen ausgeben willst und rechtsbündig bleiben willst . . . (letzteres mache ich, aber nicht auf arduino, sprich in C).

    Klar?

    Viel Erfolg
    Ciao sagt der JoeamBerg

  4. #4
    wow, das ging aber schnell...
    he he, klar, da problem bin schon ich... quick'n dity mit lcd.clear() aber dann löscht er alles (nicht so schön) ... gibts da nichts eleganteres in der ArduinoIDE?
    Wie müsste das in C aussehen? Vielleicht kann ich da was abschauen?

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    49
    Beiträge
    1.245
    Klar gehts besser-zumal das Display dir irgendwann flackern wird, wenn du zu vielers dauernd neu schreibst.
    Z.B so:
    if(wert<100 && wert>10)
    {
    lcd.setCursor(zeile, spalte+2);
    lcd.print(" ");
    }
    if(wert<10)
    {
    lcd.setCursor(zeile, spalte+1);
    lcd.print(" ");
    }

    Natürlich geht das auch rechtsbündig, indem je nach Beadrf führende Nullen davorgesetzt werden.
    Verfeinert wird das Ganze dann noch, indem vor dem schreiben geprüft wird, ob die Ausgabe überhaupt neu geschrieben werden muss, also:
    if(alterWert!=neuerWert)
    {schreibeIhnNeu;}

    Das musst du dir beizeiten angewöhnen da speziell die billigeren Displays viel zu lahmarschig sind, um sie dauernd komplett neu schreiben zu können.
    Nur wenn man das effektiv erledigt, gehts flackerfei noch.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  6. #6
    Genau dieser Denkanstoß hat mir gefehlt... danke an die Experten.
    ...
    if (value1store != value1)// überschreiben nur wenn nötig
    {lcd.setCursor(valueplace,1); lcd.print(value1);//variable schreiben
    if (value1 < 100 && rssivalue2 > 10)
    {lcd.setCursor(valueplace+2,1); lcd.print(" ");}// alte Stellen mit " " 1 Leerzeichen löchen
    if (rssivalue2 < 10){lcd.setCursor(valueplace+1,1);lcd.print(" ");}}//alte Stellen mit " " 2 Leerzeichen löschen

    value1store = value1; //aktuelle variable an variablestore übergeben für Vergleich in erster Zeile

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    13.01.2014
    Beiträge
    398
    Blog-Einträge
    3
    Mir sind noch was aufgefallen:
    Code:
    if (value1store != value1)// überschreiben nur wenn nötig 
    {
        lcd.setCursor(valueplace,1); lcd.print(value1); // Variable ausgeben
        if (value1 < 100 && value1 >= 10) 
        {
            lcd.setCursor(valueplace+2,1); lcd.print(" "); // alte Stellen mit " " 1 Leerzeichen löchen
        }
        if (value1 < 10) 
        {
            lcd.setCursor(valueplace+1,1);lcd.print(" "); //alte Stellen mit " " 2 Leerzeichen löschen
        }
    }
    value1store = value1; //aktuelle variable an variablestore übergeben für Vergleich in erster Zeile
    oder so:

    Code:
    if (value1store != value1) {
        lcd.setCursor(valueplace,1); lcd.print(value1); // Variable ausgeben
        if (value1 < 10) lcd.print("  ");      // 2 Leerzeichen
        else if (value1 < 100) lcd.print(" "); // 1 Leerzeichen
    }
    value1store = value1;
    Geändert von Sisor (01.07.2014 um 12:10 Uhr)

Ähnliche Themen

  1. Lcd Display H3246H-FE von HP oder CITIZEN
    Von madlock_michl im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 0
    Letzter Beitrag: 18.03.2011, 19:24
  2. LCD Display von Conrad
    Von Alpenmerlin im Forum Robby RP6
    Antworten: 27
    Letzter Beitrag: 02.09.2010, 20:47
  3. Lcd Display EA-Dogm von Reichelt defekt?
    Von Horstmann im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 15.02.2006, 17:31
  4. LCD Display von Nanox
    Von DeltaEx im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 31.12.2005, 03:23
  5. LCD-Display ist das das richtige???
    Von DanielSan im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 31.10.2004, 13:43

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •