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)