Arduino Mini Pro Atmega328P 8x2 LCD HD47780 Ausgabe Problem

OP #3893418
Lesenswert?
• ▲
▼
Hej Leute.
Ich versuche gerade eine LCD 8x2 mit dem HD47780 Controller anzusteuern.
Ich nutze einen Arduino mini Pro Atmega328P. Die Ausgabe funktioniert 
auch soweit. Ich hab nur das Problem das die Ausgabe über das ganze 
Display geht.

Z.B. möchte ich nur die ersten 4 Zeichen des Displays nutzen um max 
einei 4 stellige Zahl auszugeben. Aber irgendwie wird die 4 stellige 
Zahl mehrfach über das gesamte display ausgegeben.

Im folgenden Code lese ich A0 Analog aus und gebe den Wert aufm Display 
aus.
1
#include <LiquidCrystal.h>
2

3
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
4

5
void setup() {
6
  lcd.begin(8, 2);
7
}
8

9
void loop() {
10
  int sensorValue = analogRead(A0);
11
  lcd.display();
12
  lcd.print(sensorValue);
13
  delay(10);
14
}



Hat einer einen Rat oder sieht den Fehler?


LG
Shabi
Gast #3893428
Lesenswert?
• ▲
▼
Hi

>Aber irgendwie wird die 4 stellige
>Zahl mehrfach über das gesamte display ausgegeben.

Dann mach dich mal schlau, wie der Cursor an einer bestimmten Stelle 
positioniert wird. Da gibt es bestimmt einen Befehl der vor deinem

>'lcd.print(sensorValue);

eingefügt werden kann.

MfG Spess
OP #3893462
Lesenswert?
• ▲
▼
HEhe

Kurz und Knapp. Ich bedanke mich vielmals.

Hier die Lösung:

1
#include <LiquidCrystal.h>
2

3
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
4

5
void setup() {
6
  lcd.begin(8, 2);
7
}
8

9
void loop() {
10
  int sensorValue = analogRead(A0);
11
  lcd.display();
12
  lcd.setCursor(0, 0);
13
  lcd.print(sensorValue);
14
  delay(10);
15
}



LG
Shabi
Gast #3893470
Lesenswert?
• ▲
▼
Hi

>Hier die Lösung:

Ich kenne die Arduinos nicht, aber du solltest sicher sein, dein

>lcd.print(sensorValue);

auch immer die gleiche Stringlänge ausgibt. Sonst hast du wieder 
Artefakte vorheriger Werte.

MfG Spess
#3893481
Lesenswert?
• ▲
▼
Shabi N. schrieb:
> Im folgenden Code lese ich A0 Analog aus und gebe den Wert aufm Display
> aus.

Streiche die Zeile "lcd.display();" und ersetze sie beispielsweise durch 
"lcd.clear();". Die Ausgabe wird dann durch das Löschen bei Änderungen 
immer kurz flackern.

Wenn die Zahl immer dieselbe Stellenzahl hat, kannst Du auch einfach den 
Cursor immer auf Anfang positionieren mit:
http://arduino.cc/en/Reference/LiquidCrystalSetCursor

Aber wenn sich die Stellenzahl ändert und z.B. mal 4, 3, 2, oder 1 
Stelle hat, dann mußt Du die Zahl vor der Ausgabe entweder als Text 
immer auf die maximale Breite formatieren und ausgeben. Oder die 
fehlenden Stellen durch eine Ausgabe von Leerzeichen ersetzen.
Gast #3893494
Lesenswert?
• ▲
▼
Hi

>Streiche die Zeile "lcd.display();" und ersetze sie beispielsweise durch
>"lcd.clear();". Die Ausgabe wird dann durch das Löschen bei Änderungen
>immer kurz flackern.

Unsinn. Warum soll man das gesamte Display löschen, wenn sich nur ein 
kleiner Teil ändert.

MfG Spess
#3894115
Lesenswert?
• ▲
▼
spess53 schrieb:
> Unsinn. Warum soll man das gesamte Display löschen, wenn sich nur ein
> kleiner Teil ändert.

Angenommen es wird die Zahl "123" angezeigt, danach dann die Zahl "55", 
dann hast du immer noch die "3" von "123" hinten dran: "553".

Jürgen's Info ist korrekt sofern nichts anderes angezeigt werden soll 
und die anzuzeigende Zahl ihre Stelle öfters ändert.
Ist die Anzahl der Stellen immer gleich dann braucht man den clear 
Befehl natürlich nicht.
Natürlich kann man das auch mit zusätzlichem space (" ") entfernen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.