Pages: [1]   Go Down
Author Topic: LCD Display 16x4 - kleine Stolperfallen  (Read 861 times)
0 Members and 1 Guest are viewing this topic.
Germany, Dresden
Offline Offline
Sr. Member
****
Karma: 15
Posts: 425
30 Jahre Elektronikbastelei, Programmieren null Ahnung!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

hatte noch 2 ausgeschlachtete POWERTIP PC 1604A B rumliegen und habe mal eben das Display, wie in Kapitel 21 "die elektronische Welt mit Arduino entdecken" beschrieben, angesteuert. http://www.flickr.com/photos/erikbartmann/6317430221
Meine Displays (dunkelblau) regierten überhaupt nicht auf 5V an den Hintergrundbeleuchtungspins. Mein Verdacht, das eine EL-Folie verbaut ist, hat sich bewahrheitet. Ich hatte zunächst ein Display geöffnet und einen bei Reichelt bestellten Konverter angeschlossen. Jetzt habe ich hellblaue Hintergrundbeleuchtung mit schwarzer Schrift drauf.
Wer also in der Bucht, oder im Sonderangebot irgendwo Displays findet und es steht nicht explizit LED-Backligt im Angebot, der sollte nachfragen, oder die Finger von lassen. Der Konverter kostet sonst nochmal nen Fünfer extra!
Desweiteren habe ich ein weiteres Kuriosum bei der Ansteuerung entdeckt.

Code:
/*
Author:        Erik Bartmann
Website:       http://www.erik-bartmann.de
Blog:          http://www.tumblr.com/tumblelog/arduino-processing
Twitter:       https://twitter.com/#!/ErikBartmann
Flickr:        http://www.flickr.com/photos/erikbartmann/6317430221
Scope:         Eine alphanumerische Anzeige
Version:       1.0
Date:          03.10.2011
Last modified:
Description:   Dieser Sketch zeigt Dir die Ansteuerung eines LC-Displays.
*/
#include <LiquidCrystal.h>
#define RS 12   // Register Select
#define E 11    // Enable
#define D4 5    // Datenleitung 4
#define D5 4    // Datenleitung 5
#define D6 3    // Datenleitung 6
#define D7 2    // Datenleitung 7
#define COLS 16 // Anzahl der Spalten
#define ROWS 4  // Anzahl der Zeilen
LiquidCrystal lcd(RS, E, D4, D5, D6, D7); // Objekt instanziieren

void setup(){
  lcd.begin(COLS, ROWS);   // Anzahl der Spalten und Zeilen
  lcd.setCursor(0,0);
  lcd.print("Mich steuert ein"); // Ausgabe des Textes
  lcd.setCursor(-4,3);
  lcd.print("Arduino an:-)");    // Ausgabe des Textes
}

void loop(){/* leer */}

Ich habe ein bisschen mit dem Sketch rumgespielt  smiley
Zeilen und Spalten habe ich im Sketch korrekt angeben:
#define COLS 16 // Anzahl der Spalten
#define ROWS 4  // Anzahl der Zeilen

Zeile 1 & 2 beginnen korrekt bei Angabe Null beim 1. Zeichen. In Zeile 3 und 4 dagegen beginnt er, wenn ich  lcd.setCursor(0,3); oder 4 angebe, erst mit der 5. Stelle  smiley-eek-blue
Ich habe 2 mögliche Workarounds gefunden  smiley-grin
- wenn ich in Zeile 1 über das 16. Zeichen hinaus weiterschreibe, geht das 17. Zeichen auf Pos. 0, der 3. Zeile. Die 2. zeigt mit Zeile 4 identisches Verhalten
- die übersichtlichere, aber noch verrücktere Lösung seht ihr in meinem Sketch
lcd.setCursor(-4,3);           // In die 4. Zeile wechseln - ich gebe also für Pos. Null -4 an, um die Zeile mit dem ersten Zeichen ganz vorne beginnen zu können  smiley-cool
Wenn sich das Display also etwas sonderbar verhält, dann einfach ein bisschen experimentieren  smiley-grin

Gruß Gerald
Logged

rot ist blau und Plus ist Minus

Pages: [1]   Go Up
Jump to: