Erste Versuche mit LCD 2x16

Hallo Leute,

ich habe seit ca. einem Monat einen Arduino Atmega2560 und habe sehr viel Spass damit. :slight_smile:

Nun möchte ich die ersten Gehversuche machen mit der LCD, welche mitgeliefert wurde.

Ich habe die Anleitung aus dem Learning bereich befolgt und die Schaltung dort angewendet. Der einzige Unterschied ist, dass ich keine 220 Ohm Wiederstände habe. Ich besitze lediglich 100, 200, 330, 1K, 10K Ohm Wiederstände.

Die Anleitung fordert einen 220 Ohm Wiederstand für die Backlight-LED. Diese funktioniert bei mir aber auch mit 200 Ohm.

Nun zu meinem Problem. Backlight leuchtet aber angezeigt wird nichts.

Ich verwende den Code aus dem Learningbereich.

Erstmal erzeuge ich mir eine Instanz (LiquidCrystal habe ich eingebunden) der Klasse LiquidCrystal und gebe diesen als Argumente meine pins mit, welche ich verwende.

Dann im setup sage ich welche Breite und Länge mein LCD hat und im loop versuche ich nur mal irgendwas auszugeben wie z. B. Test oder soetwas ähnliches.

Es passiert aber leider nichts :-(. Ich habe es schon oft probiert. Irgendwas mache ich falsch und ich weiß einfach nicht was. Sitze schon seit mehreren Tagen immer wieder dran und probiere rum. Leider ohne Erfolg :-(.

Kann mir jemand vllt einen Tip geben wie ich weitermachen soll? Ich möchte jetzt auch nicht die Zeit meines Dozenten rauben in der FH. Vllt ist es ja nur eine Kleinigkeit, welche ich falsch mache.

Ach ja... Wenn ich seitlich beim LCD draufschaue und am Drehwiederstand drehe, dann kann man eine sehr leichte veränderung erkennen.

Danke schonmal.

Grüße
Ali

piriyaie:
Sitze schon seit mehreren Tagen immer wieder dran und probiere rum. Leider ohne Erfolg :-(.

Kann mir jemand vllt einen Tip geben wie ich weitermachen soll?

Mein Tip: Gib uns deinen Schaltplan und den Sketch. Evtl. auch ein Foto deines Aufbaus. Wir sitzen nämlich noch nicht mal davor und haben auch keine Kristallkugel, die uns sagt, was du falsch machst.

Ok. Sorry. Hier mein 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("Test");
}

Schaltplan ist von hier: https://www.arduino.cc/en/Tutorial/HelloWorld

Auf den ersten Blick kann ich in dem Draht-Chaos keinen Fehler entdecken. Dein Aufbau ist allerdings sehr unübersichtlich.
Grundsätzlich sollte man bei Aufbauten auf die Kabelfarben aufpassen. Es vermeidet viele Fehler, wenn man nur rote Kabel für den Plus-Pol und schwarze für Masse benutzt. Bei Verwechslungen hat man nämlich sehr schnell was durch Verpolung gekillt. Die anderen Kabelfarben kann man für Signale nehmen.
Entweder es ist doch unerkannt was falsch gesteckt, irgendwo gibt es ein Kontaktproblem oder es ist was defekt. Mit dem Poti solltest du jedenfalls sehr deutlich den Kontrast verändern können.

Ok. Alles klar. Danke.

Dann werde ich in der FH mal einfach ein anderes LCD ausprobieren und mal schauen obs dann geht. Vielen Dank nochmals :-).

Ich sehe keine GND-Strippe :o
Passiert irgendwas, wenn Du am Kontrast-Poti schraubst? Dann sollten wenigstens die Segmente mal dunkel werden.

Ja schon. Also wenn ich am poti drehe kann ich eine leichte veränderung erkennen. Backlight leuchtet....

Klaus_ww:
Ich sehe keine GND-Strippe :o

Ich meine sie zu sehen, sie sind nur rot, gelb, blau.

In der FH gibt es doch bestimmt noch andere Kommilitonen, die auch ein LCD ansteuern. Vielleicht könnt ihr euch zusammensetzen und testen.

Das Backlight hat elektrisch absolut nichts mit dem eigentlichen LCD zu tun und sagt höchstens aus, dass Strom da ist.

Ja schon. Ich werde einfach mal am Montag paar Leuten auf die Nerven gehen XD... Danke :slight_smile:

"Nun zu meinem Problem. Backlight leuchtet aber angezeigt wird nichts."

Hallo Ali,
ich hatte am Anfang das selbe Problem wie Du und habe den Fehler sonst wo gesucht.
Die Lösung war einfach dass ich den Poti für die Kontrastregelung bis zum Anschlag drehen mußte.
Gruß Martin

Hey Martin,

danke für deine Antwort. Hab ich aber schon gemacht... und geht auch ned.... :-(... ich denke mein LCD ist vllt irgendwie kaputt...

Der Schaltplan ist mit einem UNO.

Lt. Bild hast du einen MEGA dran.

Kann man den 1 zu 1 für den Mega übernehmen?

piriyaie:
Ok. Sorry. Hier mein 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("Test");
}





Schaltplan ist von hier: https://www.arduino.cc/en/Tutorial/HelloWorld

Hallo,
wenn man sich die Lötstellen der Steckleiste auf dem Display ansieht, könnte ich mir vorstellen, da ist eine schlechte (kalte) Lötstelle oder ein Kurzschluss drauf.

Die solltest du nochmal überprüfen.

Und alle Steckkontakte im Steckbrett nochmal überprüfen. Manchmal sind die oxydiert und geben schlecht Kontakt.

Normal geht das Display nicht so schnell kaputt, außer man betreibt es an einer größeren (> 5,5 Volt) Spannung oder es wird verpolt angeschlossen.

stoni99:
Der Schaltplan ist mit einem UNO.

Lt. Bild hast du einen MEGA dran.

Kann man den 1 zu 1 für den Mega übernehmen?

Ja, die hier verwendeten Pins sind kompatibel.

Ich würde testweise trotzdem mal einen anderen Aufbau & Sketch probieren. z.B. hier

Wie groß ist der Drehwiderstand?

Hast Du nen Anbieter-/Hersteller-Link zum LCD, das man sich mal das Datenblatt ansehen kann? Auch wenn die mechanisch wie andere LCD aussehen kann die Anschlussbelegung anders sein.

Dein lcd.print("hello, world!"); dürftest Du nicht sehen, da Du danach direkt in den loop gehst, der das wieder übersteuert. Danach würde ich testweise ne Pause reinmachen (delay(), ja delay ist böse, aber fürs Testen reichts).

Außerdem würde ich vor der ersten Ausgabe auch hier setCursor() aufrufen sowie direkt nach dem Initialisieren erst mal nen lcd.clear();

Auch im loop würde ich nach der Ausgabe testweise mal nen delay() von 1 Sekunde reinmachen um dem LCD Zeit zum Zeichnen zu geben. Ist zwar unwahrscheinlich das es daran hängt, aber Versuch macht Kluch....

stoni99:
Ich würde testweise trotzdem mal einen anderen Aufbau & Sketch probieren. z.B. hier

Na gut, testen kann er mal :wink:

Anzumerken ist hier noch, das Backlight verwendet keinen Vorwiderstand, da die meisten LCD (leider nicht alle) einen Vorwiderstand auf der Platine schon integriert haben.

@vieledinge

Da er vermutlich das Demoset von Funduino hat, wird es ein Standard LCD sein, mit originaler Beschaltung.