Forum: Mikrocontroller und Digitale Elektronik Arduino und 11 Pixel hohes LCD oder 1,5 Zeilen


von Ronny L. (Firma: Pro-Stoff Textilhandel) (graythezebra)


Angehängte Dateien:

Lesenswert?

Hi,

ich habe ein Problem mit einem Display. Es hat eine Zeichenhöhe von 11 
Pixel und einen HD44780 Controller.

Wenn ich diese nun mit einem einfachen Sketch ansteuer wird es 1,5 
Zeilig dargestellt.

Gibt es eine einfache Möglichkeit die Zeichen auf diese 11 Pixel Höhe zu 
strecken?

Leider konnte ich mit Tante Google nichts brauchbares finden.

Sketch
---
#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup() {
lcd.begin(40,2);

lcd.setCursor(0, 0);
lcd.print("Zeile 1");

lcd.setCursor(0, 1);
lcd.print("Zeile 2");

}

void loop() {

}
---

von pegel (Gast)


Lesenswert?

Sind das wirklich 11 und nicht 12 Pixel?
Auf jeden Fall brauchst du einen anderen Zeichensatz.
8x12 sollte zu finden sein.

von Falk B. (falk)


Lesenswert?

@ Ronny Lindner (Firma: Pro-Stoff Textilhandel) (graythezebra)

>ich habe ein Problem mit einem Display. Es hat eine Zeichenhöhe von 11
>Pixel und einen HD44780 Controller.

Datenblatt? Ohne das wird es sehr schwierig.

>Gibt es eine einfache Möglichkeit die Zeichen auf diese 11 Pixel Höhe zu
>strecken?

Vielleicht. Wahrscheinlich muss man es zu Fuß initalisieren, ohne die 
fertige LiquidCrystal Klasse zu benutzen.

von Ronny L. (Firma: Pro-Stoff Textilhandel) (graythezebra)


Lesenswert?

pegel schrieb:
> Sind das wirklich 11 und nicht 12 Pixel?
> Auf jeden Fall brauchst du einen anderen Zeichensatz.
> 8x12 sollte zu finden sein.

Ich glaube du hast recht aber es sind wohl eher 10 Zeichen. Nachdem was 
ich gefunden habe gibt das der HD44780 auch her.

Für die Ansteuerung des Displays selbst sind noch 4 HD44100H verbaut, 
falls diese Infos was bringt.

von pegel (Gast)


Lesenswert?

In dieser pdf

https://cdn-shop.adafruit.com/datasheets/HD44780.pdf

ab Seite 23 ist die Initialisierung dargestellt.
Das Bit F schaltet zwischen 5x8 und 5x10 Dots um.
Vielleicht passt das ja zu deinem.

von bingo (Gast)


Lesenswert?

Normalerweise wird bei der Initialisierung der LCD-Displays auch der 
Zeichensatz gesetzt und zwar im Befehl "system set" bzw. function set" 
über das Bit d2, für 5x8 ist es 0, für 5x11 ist es 1

http://www.sprut.de/electronic/lcd/index.htm#befehle

von bingo (Gast)


Lesenswert?

pegel war schneller ...

von pegel (Gast)


Lesenswert?

Wie wird das bei Ardu* gemacht?
Gibt es ein lcd.setXXX oder so? Damit habe ich mich noch nie befasst.

von Ronny L. (Firma: Pro-Stoff Textilhandel) (graythezebra)


Lesenswert?

In der Library habe ich folgende Codezeilen gefunden:

---
  // for some 1 line displays you can select a 10 pixel high font
  if ((dotsize != LCD_5x8DOTS) && (lines == 1)) {
    _displayfunction |= LCD_5x10DOTS;
  }
---

und

---
  void begin(uint8_t cols, uint8_t rows, uint8_t charsize = 
LCD_5x8DOTS);
---

Daher habe ich einfach mal in meinem Sketch folgende Änderung 
vorgenommen:

---
lcd.begin(40,1, LCD_5x10DOTS);
---

Allerdings gibt es auf dem Display keinen Unterschied, der Text wird 
noch immer mit 7 Pixel Höhe angezeigt.

von pegel (Gast)


Lesenswert?

Habe das gefunden

https://forum.arduino.cc/index.php?topic=433358.0

Müsste nach der Logik bei deinem dann

lcd.begin(40, 1, 1);

von pegel (Gast)


Lesenswert?

Kannst ja nachsehen ob LCD_5x10DOTS = 1 ist.

von Ronny L. (Firma: Pro-Stoff Textilhandel) (graythezebra)


Lesenswert?

pegel schrieb:
> Habe das gefunden
>
> https://forum.arduino.cc/index.php?topic=433358.0
>
> Müsste nach der Logik bei deinem dann
>
> lcd.begin(40, 1, 1);

Vielen Dank, der Link hat geholfen.

Ich hatte zwar bereits "lcd.begin(40, 1, 1);" ausprobiert aber bin nicht 
auf die Idee gekommen das die Zeichen explizit per write gesendet werden 
müssen.

Vielen Dank an alle, es funktioniert nun einwandfrei.

von c-hater (Gast)


Lesenswert?

Ronny L. schrieb:

> ich habe ein Problem mit einem Display. Es hat eine Zeichenhöhe von 11
> Pixel und einen HD44780 Controller.
>
> Wenn ich diese nun mit einem einfachen Sketch ansteuer wird es 1,5
> Zeilig dargestellt.
>
> Gibt es eine einfache Möglichkeit die Zeichen auf diese 11 Pixel Höhe zu
> strecken?

Klar: man muss den Controller einfach nur korrekt initialisieren. Dazu 
muss man einfach nur wissen, wie der funktioniert...

Leider wissen C&P-Programmierer, die nur Code über Google suchen, sowas 
nicht...

Dumm gelaufen... No mercy...

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Es ist zwar teilweise eine ganz schöne Ochserei, eine Hardware 'zu Fuß' 
in Betrieb zu nehmen, aber es schadet nicht, Das 1x gemacht zu haben.
Gleiches auch für die MAX7219-7-Segment-Anzeigen, DS18B20, DHT22 und 
irgend ein I2C-Expander für ein 'Arduino'-LCD.
Da ist zwar ein Tag weg wie NIchts, aber der Einblick, Den man bekommt, 
wird Dir in Zukunft hilfreich sein!

Gerade bei LCDs ist SPRUT (Link weiter oben) meine Nummer 1 - im 
Endeffekt zeigte sich IMMER, daß der Fehler vor der Tastatur saß ... 
immerhin -> ich werde für was gebraucht gg

MfG

von spess53 (Gast)


Lesenswert?

Hi

>Gerade bei LCDs ist SPRUT (Link weiter oben) meine Nummer 1

Ich habe in den letzten 20 Jahren etliche LC-Displays in Betrieb 
genommen. Aber "SPRUT" habe ich dazu nie gebraucht. Im Normalfall reicht 
das Datenblatt vom LC-Controller.

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.