Pages: [1]   Go Down
Author Topic: Probleme mit standard-LCD  (Read 2156 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Moin!
Ich habe hier ein Problem mit "standard" 16x2 HD44780-kompatiblen LCDs. Ich bekomme sie einfach nicht dazu, etwas anzuzeigen. Ich habe 2 verschiedene Typen probiert. Einen Hitachi LM016L und zwei LMM62s125A1D (von Pollin) habe ich exakt nach Anleitung (bis auf die Tatsache, dass ich einen 20k-Poti verwende) angeschlossen. Hab ich auch inzwischen zig mal durchgepiepst. Verkabelung ist korrekt und trotzdem zeigen die Displays nichts an. Das Hitachi reagiert immerhin auf die Verstellung des Poti und zeigt graue Blöcke in der ersten Zeile. Das macht es allerdings auch ohne den Arduino (Mega 1280) dran, wenn nur die Stromversorung (also die ersten 3 Pins) angeschlossen sind. Die Pollin-Displays stellen sich komplett tot. Bei denen funktioiniert nur die Hintergrundbeleuchtung.

Langsam weiss ich nicht mehr weiter.

Ich habe noch von früheren Experimenten mit ATMegas im Kopf, dass manche Displays andere delay-Zeiten zur Initialisierung brauchen. Eventuell liegt es daran? Ich habe auch versucht, die delay-Zeiten in der library zu verändern/erhöhen. Das war aber eher ein unqualifiziertes rumprobieren und hat keine Änderungen gebracht.
Kann mir jemand helfen?

Gruss
Matthias

Edit: War ja klar. 2 Abende gebastelt, graue Harre bekommen, nichts erreicht. Dann einmal um Hilfe gerufen und schon macht man Fortschritte.  smiley-roll-sweat
Ich bin also weiter gekommen. Ich hab den Hello-World-Code genommen und abgeändert.
Statt lcd.begin (16,2); habe ich (16,1) eingetragen.
Statt lcd.setCursor (0,1); hab ich (0,0) - also als ob das Display nur eine Zeile hätte. Das funktioniert auch. Die erste Zeile zeigt "Hello World" und die ersten Lettern werden gleich vom hochzählenden Counter überschrieben...
Natürlich würde ich aber gern beide Zeilen verwenden... Jemand eine Idee was da schief läuft?
« Last Edit: February 10, 2011, 05:14:12 am by thias » Logged

CH
Offline Offline
God Member
*****
Karma: 19
Posts: 703
Book Writer "Arduino Praxiseinstieg"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Edit: War ja klar. 2 Abende gebastelt, graue Harre bekommen, nichts erreicht. Dann einmal um Hilfe gerufen und schon macht man Fortschritte.
Was hast du verändert oder angepasst? Damit wir dir helfen können, brauchen wir etwas mehr Infos.
Code, Verweis zu erwähnten Tutorial, ev. Schaltplan.

Hellsehen können wir leider nicht  smiley-wink
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Steht eigentlich alles drin...
Die Hardware ist genau wie im Beispiel (siehe code-Kommentare) beschrieben verdrahtet.
Mit diesem Code funktioniert es teilweise. Das Display ist eigentlich ein Zweizeilendisplay. Aber wenn ich an entsprechender Stelle (16,2) stehen habe, wird nichts angezeigt.
Code:
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:
  //delay(2000);
  lcd.begin(16, 1);     // <---- geändert zu "einzeilig"
  // 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);

 //"lebst du noch?"-Blinker
    digitalWrite(13,HIGH);
  delay(1000);
  digitalWrite(13,LOW);
  delay(1000);
}
So wird in der ersten Zeile der Text "Hello World!" ausgegeben, die Milis werden nirgends angezeigt. Wenn bei setCursor (0,0) eingetragen wird, werden die ersten Zeichen der ersten Zeile von den hochzählenden Milis überschrieben.
Die zweite Zeile konnte ich bisher nicht ansprechen.

Gruss
Matthias
« Last Edit: February 10, 2011, 06:14:14 am by thias » Logged

Heidelberg
Offline Offline
Full Member
***
Karma: 1
Posts: 207
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo

die erste Zeile hat die Nummer 0, 1 die zweite. Das der Grund wieso du ins Leere schreibst.

Der Anfang:

Code:
  lcd.setCursor(0,0);

und schon gehts.Aber nicht hinter 16 oder unter 1.
Logged

 

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nein, du hast mich nicht verstanden.
Ich weiss, wie man die Zeilen zählt. Das Problem liegt bei lcd.begin(16,2). Das definiert ein zweizeiliges Display. Wenn ich das aber eintrage, zeigt meines nichts mehr an. Also blank. Kein Hello World, keine Milis.
Logged

Heidelberg
Offline Offline
Full Member
***
Karma: 1
Posts: 207
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Also ich kann dir bestätigen, dass die Librays funktionieren.

Hast du sonst noch etwas an den Ports ? Da ich noch ein Ethernetboard mitfahren habe, änderte ich die ports 11 und 12 auf 6 und 7.

Wenn die Verkabelung stimmt, der Atmel keine Macke hat, dann kann es nur das Display sein.
Logged

 

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 266
Posts: 21665
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Die Displays obwohl sie 2 Zeilen zu 16 Zeichen sind können:
als 4 Zeilen zu 8 Zeichen organisiert sein
als 2 Zeilen aber als Zeile 0 und Zeile 2

Versuch mal einfach alle 4 Zeilen vollzuschreiben mit dem gesamten alfabet. So merkst Du wenn etwas angezeigt wird.

Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Biaher habe ich nichts dran hängen, ausser dem Display.
Ich hatte schon versucht, einen längeren Sting einzugeben, um zu sehen, ob die zwei Zeilen eventuell irgendwie eine sind. Dabei sind aber nur die ersten 16 Zeichen angezeigt worden.
Wenn ich die null und zwei beschreiben will, was muss ich da bei lcd.begin() angeben? (16,4)?
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 266
Posts: 21665
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Jede Annahme kann falsch sein. Ich weiß nicht was richtig ist, versuchs einfach. Es geht nichts kaputt.
Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

So, ich habe alle möglichen Kombinationen in der "begin()"-Funktion ausprobiert. Mit beiden Displays. Das Hitachi scheint defekt zu sein, es zeigt immer nur voll gefüllte Quadrate. Das Pollin-Teil reagiert nur als einzeiliges Display. Wenn ich irgendwas anderes als begin(16,1) (oder (16,0)- das funktioniert seltsamerweise auch) nehme (zB 16,2 oder 16,4), zeigt es nichts an.

Ich gebe an dieser Stelle erst mal auf. Wenn mir das nächste mal ein Display nach HD44780 in die Finger kommt, werde ich es nochmal probieren. Jetzt muss mein Ladegerät-Projekt eben mit einem einzeiligen Display auskommen. Dann werden die Sachen eben abwechselnd auf der selben Zeile angezeigt - oder man kann per Knopfdruck umschalten - mal sehen ob ich das hin bekomme.
Danke für eure Hinweise.

Gruss
Matthias (der für die anderen Fragen einen extra Faden aufmacht...)
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Jetzt hab ich doch noch ein wenig weiterexperimentiert, denn ich habe noch ein weiteres Hitachi-Original-Display "gefunden". Es hat 4 Zeilen, wimni. Dieses macht 2 schwarze "Balken", wenn man es nur an die Spannungsversorgung schliesst. Es ist definitiv OK, denn an dem Schlachtgerät, aus dem ich es ausgebaut habe, funktioniert es.
Ich habe noch ein wenig rumgesucht und habe heraus gefunden, dass die original-Hitachis diese "schwarzen Balken" machen, wenn sie nicht korrekt inizialisiert wurden.
Ich habe das "neue" Display an den Pins 20 bis 30 meines Mega angeschlossen und es hat nicht funktionert. Mein Verdacht nun: die Digitalpins funktionieren nicht in dem Zusammenhang - irgendwie.
Ich habe testhalber das Pollin-Display an die Pins zwischen 20 und 30 angeschlossen. Auch dieses funktionierte so nicht. An 12,13,5->2 ging es aber.

Sind die Digitalpines nicht geeignet, um die LCDs zu steuern? Oder muss ich die anders programmieren? Als Output definieren vielleicht?

Gruss
Matthias
Logged

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 282
Einfach ein Flop :P
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi smiley

Code:
LiquidCrystal lcd(12,11,5,4,3,2);

Das sagt, welche Digitalpins verwendet werden smiley-wink Du kannst nicht einfach beliebig irgendwo die pins anschließen smiley-grin

MFG, Robdeflop®
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Na, so doof bin ich dann auch wieder nicht.  smiley-eek-blue
Natürlich hab ich die Pins entsprechend eingetragen und neu geflashed.

Also
Code:
LiquidCrystal lcd(12,11,5,4,3,2);
funktioniert.
Umstecken der Pins auf dem Arduino und eintragen von
Code:
LiquidCrystal lcd(20,21, 22,23,24,25);
im code und anschliessendes Compilieren/Übertragen
funktioniert nicht.
Ich habe auch versucht
Code:
pinMode(20,OUTPUT);
pinMode(21,OUTPUT);
...
in die setup-Funktion einzutragen, hat aber nicht geholfen.


« Last Edit: February 14, 2011, 03:15:54 pm by thias » Logged

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 282
Einfach ein Flop :P
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi

Hmm lol, das ist komisch. Vielleicht liegts an liquidCrystal? Is nur ne vermutung.

MFG, Robdeflop®
Logged

Pages: [1]   Go Up
Jump to: