Go Down

Topic: LCD Display 16x4 - kleine Stolperfallen (Read 930 times) previous topic - next topic

nix_mehr_frei

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: [Select]
/*
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  :)
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  :D
- 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  8)
Wenn sich das Display also etwas sonderbar verhält, dann einfach ein bisschen experimentieren  :D

Gruß Gerald
rot ist blau und Plus ist Minus

Go Up