Arduino Due mit 4-Bit EA DIP203-4 LCD Display

Hallo und Hilfe bitte,

ich hab mir mal bei Reichelt die LCD-Display von Electronic Assembly bestellt(EA DIP203-4) und weil sie gut von der Grösse und der Spannung (3,3V) passten in ein Projekt eingebaut. Das Datenblatt zur Anzeige findet ihr hier:http://www.lcd-module.de/fileadmin/pdf/doma/dip203-4.pdf.
Leider ist es für den Arduino Due sowieso noch ein wenig schwierig gut zu funktionierende Bibliotheken zu bekommen, aber das Display ist wirklich heftig. Die Anzeige konnte ich bisher nur rudimentär steuern und der Aufbau eines Menüs ist mit diesen einfachen Befehlen sehr schwierig. Auch beim Einschalten des Due klappt es nicht immer mit dem Reset der Anzeige. Den Aufbau habe ich mit 4-Bit-Bus gemacht, sonst klappte damit immer. Das Menü Steuer ich mit einem Drehgeber.
Hat jemand Tipps für mich oder eine funktionierende Bibliothek für die Anzeige oder Menü mit einem Drehgeber für den Arduino Due?
Vielen Dank
Detlef

Hier fehlen noch viele Information

Welche Libary wurde eingesetzt?
Wie ist die Verkabelung?

http://forum.arduino.cc/index.php?topic=73816.0

Ich verstehe nicht, warum es mit dem Due deutlich heftiger sein? Die Ansteuerung von HD44780-kompatiblen Controllern ist kein Hexenwerk. Hier werden auch keine spezifischen Register vom Due/Atmega/ ... benoetigt.

Hallo,
DAS- Display hast Du zum laufen bekommen? Was für eine Lib nutzt Du denn? Mit der originalen Aduino Lib sollte das Ding so ohne
weiteres nicht laufen. Die Lib muss geändert werden. Und auch dann hast Du noch einen Fehler in der ersten Zeile, wenn das erste
Zeichen eine LeerStelle ist.
Gruß und Spaß
Andreas

Hallo,
zuerst noch etwas zum Display: eigentlich dachte ich auch es ist 100% kompatibel - denkste.

KONTROLLER SSD1803 (NAHEZU 100% HD44780 KOMPATIBEL)

Die Bibliothek habe ich so gut wie es geht angepasst, aber ob jetzt noch das Timing des Due etwas ausmacht kann ich nicht sagen. Bisher hatte ich nur den Mega und Duemilanova eingesetzt und die sind sehr viel langsamer. Der Anschluss ist m.M. nach relativ unkritisch, es sind ja nur die 4 Bit Bus und die Steuersignale RS, RW,E und RST.
hier der Initialisierungsteil des Displays:

/**********************************************
*                                             *
*         L C D - Anzeige                     *
*                                             *
***********************************************/
#include "LCD_DIP203.h"

#define MAXLINES 4         // defines the number of display lines
#define LCD_CHARACTERS 20  // defines the number of Char per line
 
 #define RS  18  // output for RS-Signal
 #define RW  17  // output for RW-Signal
 #define E   16  // output for E-Signal
 #define D4  15  // output for D4-Signal
 #define D5  14  // output for D5-Signal
 #define D6  8   // output for D6-Signal
 #define D7  9   // output for D7-Signal
 
 #define Zeile1 0
 #define Zeile2 1
 #define Zeile3 2
 #define Zeile4 3
 
// Initialisierung der Anzeige 
LiquidCrystal lcd(RS,RW,E, D4, D5, D6, D7);  // RS, RW,E, D4, D5, D6, D7 - the standard connection

Im Setupteil:

 //-------------------------------------------------
  //  LCD-Display
  //-------------------------------------------------
  
  // mit Pinmode die Ausgänge für das LCD zuweisen
  pinMode (E, OUTPUT);
  pinMode (RS, OUTPUT);
  pinMode (RW, OUTPUT);
  pinMode (D4, OUTPUT);
  pinMode (D5, OUTPUT);
  pinMode (D6, OUTPUT);
  pinMode (D7, OUTPUT);
  
  
 
  //lcd.begin(LCD_CHARACTERS, MAXLINES);
  lcd.begin(20,4);
  lcd.clear();
  lcd.setCursor(0,Zeile1);
  lcd.print("TEST-Menue");
  lcd.setCursor(0,Zeile2);
  lcd.print("Ver:");
  lcd.print(Version);
  lcd.setCursor(0,Zeile3);
  lcd.print("Datum:");
  lcd.print(Datum);

Die Bibliothek und die Header Datei findet Ihr im Anhang:

Der Fehler mit der ersten Zeile und dem Leerzeichen war mir bisher noch nicht aufgefallen, kommt vielleicht noch.
Das Schreiben in das Display funktioniert nur in dieser Art, hier das Beispiel:

lcd.print(now.day());
             lcd.print(":");
             lcd.print(now.month());
             lcd.print(":");
             lcd.print(now.year());
             lcd.print(" -  ");
             lcd.print(now.hour());
             lcd.print(":");
             lcd.print(now.minute());
             lcd.print(":");
             lcd.print(now.second());

und das finde ich schon heftig.
Electronic Assembly hat nun auch schon Bibliotheken auf deren Supportseiten, aber leider haben die mir noch nicht weitergeholfen. Soviel zuKompatibel:

Alle Displays werden mit marktüblichen Kontrollern geliefert, das heißt die bereits vorhandene Hard- und Software kann unverändert weiterverwendet werden.

Beim Einschalten des Due klappt es mit dem Display auch nicht immer, aber da kann ich ja noch mal mit RC-Kombinationenn rumprobieren ob man den Reset für die Anzeige länge festhalten kann. Zur Zeit habe ich den RST vom Display parallel zum RST des Due gelegt.
Wenn ich ein anderes Display mit ähnlichen Aufbau, Größe und Spannung bekommen könnte das 100% kompatibel ist würde ich ebenfalls sofort wechseln, weil das macht kein Spaß.
Kann es auch sein dass die Bibliotheken des Due bearbeitet wurden und nicht mehr so mit dem Displays kompatibel sind? Es sind schon einige Dinge beim Due anders und manchmal denke ich mir auch, beim Mega hat das alles schon funktioniert.

Das Menü-Programm Projekt: LCDMenuLib / LCDMenuLib2 ( LCDML ) - Menü mit mehreren Ebenen - Deutsch - Arduino Forum hatte ich vor über einem Jahr mal ausprobiert, es funktionierte nicht. Warum kann ich mich nicht mehr erinnern. Es ist wesentlich leichter auf einer bestehenden Lösung aufzubauen.
Leider habe ich für das Display schon vor einem halben Jahr eine Platine machen lassen, alles zu ändern wäre jetzt relativ teuer und eigentlich muss man das ganze doch zum laufen bringen können. Bisher hat es mit anderen Display und Arduino Varianten immer einwandfrei geklappt.
Vielleicht hat einer von euch ja noch eine Idee.
Viele Grüße aus dem Norden
Detlef

LCD_DIP203.h (3.21 KB)

LCD_DIP203.cpp (8.47 KB)