Arduino Leonardo und LCD

Hi,

ich bin langsam am verzweifeln.

Ich versuche schon seit längeren die das "Hello World" Beispiel für ein LCD 1602 zum laufen zu bekommen.

Aufbau ist wie in diesem Link https://www.arduino.cc/en/Tutorial/HelloWorld. Einziger unterschied ist, dass ich einen 200 ohm Widerstand habe anstatt 220 ohm.

Was habe ich nun schon alles gemacht:

Aufbau mehrere mals überprüft.
Kabelausgetauscht.
Verbindungen mit dem Messgerät überprüft.
Nach Hilfe im Internet gesucht.

Anbei schicke sind 2 Bilder auf denen mein Problem zusehen ist. Ich sehe kein Hello World sondern nur Zeichen.

Ich würde mich über Hilfe sehr freuen.

Ich vermute mal, da du alles überprüft hast und keinen Verdrahtungsfehler hast, ist es ein Kontaktfehler im Steckbrett.
Diese Dinger haben manches mal sehr schlechten Kontakt.
Bedingt dadurch kenne ich den von dir gezeigten Fehler.

Wenn das nicht zutrifft, könnte das LCD (seltener Fehler) defekt sein.
Der 200Ohm-Widerstand ist nicht das Problem

Edit:
Bleibt noch die Frage nach dem Sketch und der verwendeten Library.

Vielen Dank für den Tipp mit dem Steckbrett. Leider liegt es nicht daran. Ich habe jetzt alles außer den Poti und Widerstand vom Steckbrett genommen. Somit direkt mit Kabel angeschlossen.
Keine Veränderung.

Sketch verwende ich den aus der Arduino IDE Beispiele für LiquidCrystal -> "Hello World". Somit denke ich auch die Library von Arduino IDE.

Was mir jetzt beim ausprobieren aufgefallen ist, wenn ich die Belegung LiquidCrystal lcd(12, 11, 5, 4, 3, 2); auf LiquidCrystal lcd(12, 11, 9, 8, 7, 6); ändere und dann natürlich auch die Verdrahtung. Verschwinden die Zeichen und es kommen nur noch Balken in der oberen Zeile.

In der IDE gibt es aber verschiedene. Du solltest schon mal deinen Sketch zeigen.
In meiner z.B. "HelloWorld_4bit", da steht in der Initialisierung:

LiquidCrystal lcd(12, 11, 5, 4, 3, 2, BACKLIGH_PIN, POSITIVE );

Also man kann da schon vieles falsch machen.

Leider kann ich es nicht testen, ich verwende ausschließlich I2C.

Hi,

ok das habe ich nicht gewusst. Ich dachte die Beispiel Sketche sind alle gleich. Naja naiv. Deswegen hier der Sketch:

/*
LiquidCrystal Library - Hello World

Demonstrates the use a 16x2 LCD display. The LiquidCrystal
library works with all LCD displays that are compatible with the
Hitachi HD44780 driver. There are many of them out there, and you
can usually tell them by the 16-pin interface.

This sketch prints "Hello World!" to the LCD
and shows the time.

The circuit:

  • LCD RS pin to digital pin 12
  • LCD Enable pin to digital pin 11
  • LCD D4 pin to digital pin 5
  • LCD D5 pin to digital pin 4
  • LCD D6 pin to digital pin 3
  • LCD D7 pin to digital pin 2
  • LCD R/W pin to ground
  • 10K resistor:
  • ends to +5V and ground
  • wiper to LCD VO pin (pin 3)

Library originally added 18 Apr 2008
by David A. Mellis
library modified 5 Jul 2009
by Limor Fried (http://www.ladyada.net)
example added 9 Jul 2009
by Tom Igoe
modified 22 Nov 2010
by Tom Igoe

This example code is in the public domain.

*/

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
}

void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
}

Entschuldigung, leider weiße ich nicht wie ich den Sketch richtig einfügen kann :(.

Mein verwendetes Display ist das hier: https://www.amazon.de/HD44780-Module-Display-Anzeigen-Zeichen/dp/B009GEPZRE#customerReviews

Einstellungen in der Arduino IDE:
Board: Arduino Leonardo
Port: /dev/ttyACM0
Programmer: AVR ISP (habe ich nicht ausgewählt)

Andere Sketche funktionieren wie zum Beispiel:
LED blinken lassen
mehrere LEDs blinken lassen
LED leuchten lassen mit PWM
mit Taster LED ein- und ausschalten

Ich hoffe zeigt dir/euch einen Fehler, den ich dann beheben kann :slight_smile:

Geht auf Steckreihe 48 ein rotes Kabel ins Leere? Und der Widerstand neben dran auch?

Auf den Bildern ist das sehr schlecht zu erkennen

ElEspanol:
Geht auf Steckreihe 48 ein rotes Kabel ins Leere? Und der Widerstand neben dran auch?

Auf den Bildern ist das sehr schlecht zu erkennen

Sieht tatsächlich so aus, spielt hier aber keine wirkliche Rolle, da für die Hintergrundbeleuchtung zuständig.

@GesenkteSau
Der von dir verwendete Sketch ist der aus dem verlinkten Artikel und recht alt.
Verwende doch mal einen neueren Sketch aus deiner IDE.
Welche IDE-Version setzt du ein ?

GesenkteSau:
Ich hoffe zeigt dir/euch einen Fehler, den ich dann beheben kann :slight_smile:

Wenn bei Dir auf dem LCD überhaupt irgendwelche Zeichen erscheinen, aber es sind die falschen Zeichen, dann hast Du möglicherweise bei der Verkabelung Datenpins verwechselt. So steht es in Deinem Sketch:

LCD D4 pin to digital pin 5

  • LCD D5 pin to digital pin 4
  • LCD D6 pin to digital pin 3
  • LCD D7 pin to digital pin 2

Du wärst nicht der erste, der die vier benötigten Datenpins, die auf dem LCD mit D4, D5, D6, D7 beschriftet sind, mit Arduino Pinnummern verwechselt.

Hallo,

vielen Dank für die viele Hilfe.

@EIEspanol
Das rote Kabel ist am Widerstand dran. Schaut nur so auf dem Bild aus. Wenn ich mit dem Messgerät nachmesse erhalten 202 ohm.

@HotSystems
Ja der Sketch stimmt mit dem aus dem Link überein, ist aber aus meiner IDE.
Hauptsächlich programmiere ich mit meinen Laptop Ubuntu 16.04. Darauf läuft Arduino 2:1.0.5+dfsg2-4.
Wenn ich über sudo befehl updaten will sagt er mir das es die neuste Version ist.
Ich habe es auch schon auf meinen Windows 10 Rechner probiert. Arduino 1.6.13. Dort ist auch der selbe Sketch im Beispiel.

Wenn ich ihn vom Windows PC hochlade kommt es genau zum selben Ergebnis.

@jurs
Leider ist es nicht der Fall. Es ist genau wie du geschrieben hast:

  • LCD D4 pin to digital pin 5
  • LCD D5 pin to digital pin 4
  • LCD D6 pin to digital pin 3
  • LCD D7 pin to digital pin 2

Ich habe jetzt auch einmal probiert die Verdrahtung zu drehen, dass es so ausschaut

  • LCD D4 pin to digital pin 2
  • LCD D5 pin to digital pin 3
  • LCD D6 pin to digital pin 4
  • LCD D7 pin to digital pin 5

dann bekomme ich ganz andere Zeichnen, immer das gleiche. Aber über beide Zeilen.

Wisst ihr wo ich dann einen anderen Sketch herbekomme, weil wenn ich im Internet nach Arduino LCD 1602 suche bekomme ich immer den selben Sketch?

GesenkteSau:
Wisst ihr wo ich dann einen anderen Sketch herbekomme, weil wenn ich im Internet nach Arduino LCD 1602 suche bekomme ich immer den selben Sketch?

Mache Dir zum Testen doch einfach mal eine andere loop() Funktion!

Diese loop()-Funktion zum Beispiel:

void loop() {
for(int i=0;i<1000;i++)
{
    lcd.clear();
    delay(500);
    lcd.print(i);
    delay(500);
  }
}

Wenn diese Funktion funktioniert, dann würde das Display von 0 bis 999 hochzählen und dann wieder neu anfangen.

Dabei sollte die Anzeige sein:
Display löschen, halbe Sekunde warten, nächste Zahl anzeigen, halbe Sekunde warten

Was passiert damit?
Wird das Display damit im Halbsekundenabstand gelöscht und wieder neu beschrieben?
Wenn ja, womit beschrieben? Steigende Zahlenwerte, oder auch wieder "wilde Zeichen?

Und was ist mit dem Potentiometer für die Kontrasteinstellung: Kannst Du mit dem von Dir verdrahteten Potentiometer den Kontrast am Display einstellen?

Lass mal den Sketch und die Library. Das sollte so funktionieren.
Ich habe hier noch mal einen Link, an dem man die Verkabelung genau erkennen kann.
Genau damit bin ich auch mal angefangen, bevor ich auf I2C umgestiegen bin.

LCD-Anschluss

Oder auch den Testsketch von jurs verwenden.
Ich vermute, deine Anschlüsse sind falsch.

Hallo,

@jurs
ich habe deinen loop verwendet. Es haben sich die Symbole geändert und sie werden von links nach rechts immer eins weniger bis keins mehr da ist. Danach dauert es einbisschen und es ist die obereste Zeile mit den Zeichen voll und ab und zu läuft der Cursor durch.
Poti verwende ich einen 10K und ich kann den Kontrast gut einstellen, von "ich sehe gar nichts" bis zu "ich sehr nur weiße Balken".
Bild4

@HotSystems
Verkabelung nochmals mit dem Link abgeglichen und keine Veränderung festgestellt. Die 2 Sketche von der Seite ausprobiert aber es passiert nichts, außer das die ganze erste Zeile voll mit Symbolen ist.
Nochmal ein Bild von der Verkabelung Bild3.

Auf dem Bild schaut es so aus, dass der Pin 2 nicht benutzt wird, ist aber so, PIN 0 = RX frei, PIN1 = TX frei.

Was ich morgen noch probieren werde ist: PIN2 - PIN7 an einer LED ausprobieren, nicht das diese Kaputt sind.

GesenkteSau:
Was ich morgen noch probieren werde ist: PIN2 - PIN7 an einer LED ausprobieren, nicht das diese Kaputt sind.

Was Du auf jeden Fall machsen solltest, wenn Du die Verkabelung vom Leonardo über ein Breadboard führst und dann das Breadboard mit dem LCD verkabelst, wäre das:

Verbinde Leonardo-GND mit Breadboard-Minus!

Ich habe mir mal Dein "Bild1" angehen und konnte dort NICHT geststellen, dass Leonardo-GND irgendwo an Breadboard-Minus angeschlossen ist.

Trotzdem scheinst Du munter davon auszugehen, dass Breadboard-Minus auf GND liegt, denn Du verkabelst fleißig das Breadboard mit dem LCD.

GND vom Ardiuno geht mit dem blauen Kabel rechts auf dem Bild raus und geht ganz rechts aufs Steckbrett in die - Leiste.

Wenn ich GND wegnehme wird es dunkel auf dem Display.

Jeder Ausgang von PIN2-PIN7 funktioniert mit dem blink sketch.

GesenkteSau:
Wenn ich GND wegnehme wird es dunkel auf dem Display.

Ja, auch die Kathode der LED-Hintergrundbeleuchtung muss an GND angeschlossen sein.

So ein 1602 LCDbraucht quasi eine doppelte Spannungsversorgung aus 5V und GND:

  1. Der Controller Hitachi HD44780 braucht eine Versorgungsspannung und GND
  2. Die LED-Hintergrundbeleuchtung braucht eine Versorgungsspannung und GND

Da die LED der Hintergrundbeleuchtung aber typischwerise nur 4.2V Vorwärtsspannung verkraftet, darf diese nicht direkt an 5V (LCD "A") und GND (LCD "K") angeschlossen werden, sondern es muss als "Strombremse" ein Widerstand von ca 200 Ohm in Reihe geschaltet sein.

Wobei ich gerade mal überschlage: Für ein Display mit 4.2V Vorwärtsspannung am LED Backlight sind 200 Ohm eigentlich schon viel zu hoch: Damit machst Du die Hintergrundbeleuchtung dunkler als es vorgesehen ist, was bei einem Display mit weißen Zeichen zu erschwerter Lesbarkeit bei großer Umgebungshelligkeit führen kann.