Problem mit Arduino Uno und LCD

Hallo Zusammen,

seit einiger Zeit versuche ich mich am Arduino.
Aus irgend einem Grund bekomme ich meine LCD (habe bereits 3 ausprobiert) nicht am laufen.
Im Grunde ergibt sich immer das selbe Bild. Siehe Anhang.
Ich habe bereits verschiedenste Libraries (LCD Keypad) und Arduino Versionen ausprobiert.
Es funktioniert einfach nicht. Was mache ich falsch. Die Bedrahtung muss korrekt sein.
Als Sketch habe ich den Beispielsketch laufen. (Hello World). Angepasst an die vier Zeilen und 20 Zeichen.
Zur Zeit benutze ich Atduino 023.
Wo liegt das Problem ?? Hat der Arduino eine Macke ?
Andre Sachen wie der Ultraschallsensor oder auch die Ansteuerung der Relais und so weiter funktioniert einwandfrei.

mfg
Micha

Die Bedrahtung muss korrekt sein

Sehr richtig!
... und muss zu deinem lcd Konstruktor passen

Da dein LCD kein keypad hat, würde ich auch die normale LiquidCrystal Library verwenden.
Wenn du in der Library keinen R/W Pin benutzt, musst du den entsprechenden LCD Pin fest auf GND legen.

Sonst fällt mir nichts zum Raten ein...

[edit: lcd.init war Blödsinn, sorry ]

-mivo-:
Ich habe bereits verschiedenste Libraries (LCD Keypad) und Arduino Versionen ausprobiert.

Das "LCD Keypad Shield" verwendet andere Anschlüsse als Du sie verdrahtet hast, daher kannst Du Programmbeispiele zum Keypad Shield bei Dir nicht direkt verwenden.

Du hast offenbar verdrahtet für die Inititialisierung mit der Zeile:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Wie sieht Dein Sketch aus?

Hallo,
danke für die Antworten.
Vielleicht habe ich mich etwas umständlich ausgedrückt, da ich möglichst viele Infos geben wollte.
Die Sache mit dem LCD Keypad habe ich nur erwähnt um damit zu sagen das ich mehrere Dinge ausprobiert habe und immer zu dem selben Fehlerbild komme.
Momentan sieht es folgendermaßen aus.

Arduino Uno R3 mit der Bedrahtung auf dem Bild (diese sollte nicht nur korrekt sein um zu funktionieren, sondern sie ist auch korrekt). Als Software läuft Arduino 0023.
Der Sketch ist folgender:

/*
  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.

 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 */

// 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(20, 4);
  // 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);
}

Es ist halt der Beispielcode aus der Liquid Crystal Library.
Als Pins sind die richtigen definiert.

Auch schon mal die Kontrasteinstellung variiert?

Klaro !
Auf dem Disply erscheint ja was. Nur kein HelloWorld sondern es werden fast alle Pixel angesteuert.

Wenn ich das richtig erkennen kann, dann hast du die 3,3V des Arduino ohne Vorwiderstand direkt auf die Hintergrundbeleuchtung des LCDs gelegt.

ich denke, der Arduino mag das eher nicht so gerne...

Versorge doch die LED der Beleuchtung aus der 5V mit 100Ohm Vorwiderstand.
ich könnte mir vorstellen, dass die LED die 3,3V so sehr belastet, dass der ganze Arduino nicht mehr richtig läuft.

Gunther

Was mich etwas wundert ist das Verhalten des LCD. Wenn man das Display nur mit Spannung versorgt und das Kontrastpoti anschließt sowie ggf. auch die Hintergrundbeleuchtung berücksichtigt, zeigt das Display in Zeile 1 und 3 zwei Balken. Bei dir sind ja auch schmale Balken in Zeile 2 und 4 zu sehen. Könntest du mal den Arduino außen vor lassen und ein Foto vom LCD in der von mir beschriebenen Minimalbeschaltung machen?

-mivo-:
Momentan sieht es folgendermaßen aus.

Sieht für mich soweit OK aus.

Bist Du sicher, dass Dein Breadboard keine defekten Stellen hat, die keinen Kontakt geben?

Und dass auch die Drähte am Arduino guten Kontakt geben?

Sowohl Breadboard-Kontakte als auch Arduino-Kontakte sind nicht immer die besten, und in ungünstigen Fällen gibt es Wackelkontakt bzw. gar keinen Kontakt.

Vielleicht mal an den Drähten wackeln und zwischendurch den Reset-Button drücken, damit der Sketch neu startet?

-mivo-:
Klaro !
Auf dem Disply erscheint ja was. Nur kein HelloWorld sondern es werden fast alle Pixel angesteuert.

Eben darum meine Frage. So siehts aus, wenn der Kontrast zu hoch eingestellt ist.

jurs:
Sieht für mich soweit OK aus.

Auch dass die LED der Hintergrundbeleuchtung direkt aus der 3,3V betrieben wird?
Ich weiß, der Regler auf dem UNO begrenzt den Strom auf ca. 200mA (Das ist übrigens der einzige Grund, dass es nicht geraucht hat beim Einschalten!), aber ich bin mir nicht sicher, wie der UNO darauf reagiert.

Ich weiß nicht, ob es die Ursache ist, aber auf alle Fälle ist es FALSCH!

Gunther

guntherb:

jurs:
Sieht für mich soweit OK aus.

Auch dass die LED der Hintergrundbeleuchtung direkt aus der 3,3V betrieben wird?
Ich weiß, der Regler auf dem UNO begrenzt den Strom auf ca. 200mA (Das ist übrigens der einzige Grund, dass es nicht geraucht hat beim Einschalten!), aber ich bin mir nicht sicher, wie der UNO darauf reagiert.

Ich weiß nicht, ob es die Ursache ist, aber auf alle Fälle ist es FALSCH!

Gunther

Ach wo! DA sehe ich kein Problem, WENN er ein 5V Modul hat!

Ich kenne kein einziges 5V LCD-Modul, bei dem die "LED operating voltage" der Hintergrundbeleuchtung auf weniger als 4,2 Volt spezifiziert ist. D.h. an bis zu 4,2V kann man die Hintergrundbeleuchtung dann immer direkt schalten.

Was aber natürlich sein könnte: Es ist gar kein 5V Modul! Solche LCD-Module werden nämlich optisch quasi völlig gleich aussehend sowohl für den Betrieb an 3,3V als auch an 5V produziert und vertrieben. Wenn man ein 3,3V Modul an 5V Betriebsspannung und 5V Datenleitungen anschließt, wird es im ungünstigsten Fall sofort geschrottet. Und im günstigsten Fall funktioniert es nur nicht.

Wenn er da ein 3,3V LCD-Modul anstelle eines 5V LCD-Moduls auf seinem Breadboard angeschlossen hat, dann ist bei der Fehlersuche natürlich Hopfen und Malz verloren. Und wenn er drei baugleiche 3,3V LCDs nacheinander an die 5V vom Arduino angschlossen hat, kann er unter Umständen gleich dreifach Elektronikschrott produziert haben.

Das wäre natürlich dösig: 3,3V Module dürfen nicht direkt an 5V angeschaltet werden.

Hallo,
bei dem Display handelt es sich um ein 5V LCD, das ist also nicht das Problem.
Ich habe mal minimal beschaltet und ein Bild gemacht.
Nun werde ich mal nach und nach den Rest wieder kontaktieren.

-mivo-:
Ich habe mal minimal beschaltet und ein Bild gemacht.

Das ist auf jeden Fall schon mal das normale Bild eines initialisierten Displays: Eine Zeile mit Vollblock-Zeichen und eine Zeile mit Leerzeichen. Die merkwürdige 2. und 4. Zeile mit den Halbblock-Zeichen sind jedenfalls schon mal verschwunden.

-mivo-:
Nun werde ich mal nach und nach den Rest wieder kontaktieren.

Wie ich sehe, verwendest Du vieladrige Litze zum Stecken, und die Enden sind nicht verzinnt. Das ist nicht so ganz optimal. Da mußt Du verdammt aufpassen, daß sich nicht einzelne abgeknickte Litzendrähtchen verirren und anders einen Kontakt ergeben als es beabsichtigt ist. Außerdem muss die Litze erstmal auch zum Klemmen zwischen den Kontakten kommen. Eine etwas dünnere Litze mit verzinnten Enden oder etwas dickere Starrdrähte kannst Du nicht verwenden?

ich schaue mal was ich da habe.
Wie zu beginn erwähnt habe ich ja auch einen Test mit dem LCD Keypad von Sainsmart (2 zeilig) gemacht.
Mit gleichem Fehlerbild, also so das alles leuchtet. Da es sich dabei um ein LCD Shield handelt, sollten Kontaktprobleme und auch ein falsches kontaktieren in diesem Fall praktisch nicht möglich sein.

-mivo-:
Wie zu beginn erwähnt habe ich ja auch einen Test mit dem LCD Keypad von Sainsmart (2 zeilig) gemacht.
Mit gleichem Fehlerbild, also so das alles leuchtet. Da es sich dabei um ein LCD Shield handelt, sollten Kontaktprobleme und auch ein falsches kontaktieren in diesem Fall praktisch nicht möglich sein.

Außer, wenn irgendwo schon ein kleines abgerissenes Litzendrähtchen irgendwo einen Kurzschluß bildet.

Ansonsten muß beim Keypad-Shield nur die richtige Initialisierung im Sketch stehen. Das müßte im Fall eines Keypad-Shields wohl sein:
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

Ich weiß nicht mehr weiter.
Soeben habe ich mal alle Pins durchgesummt.
Kontakt ist auf jeden Fall von den Lötpads des Displays bis zu den gelöteten Kontakten des Arduino vorhanden.