ComputerClub 2
Sitemap 
Wolfgang Back & Wolfgang Rudolph
Suche:   Wolfgang Back & Wolfgang Rudolph
 
  Forenübersicht
  Anmelden
  Registrierung
  Mitgliederliste
  Teammitglieder
  Hilfe
  Suche
  FAQ
  Forenregeln
  Wie poste ich richtig?
  Impressum

CC²-Fan-Club » Computerclub 2 » Rund um den Arduino » Die Ansteuerung des LC-Displays HD44780 mit einem Arduino » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Antwort erstellen
Zum Ende der Seite springen   Die Ansteuerung des LC-Displays HD44780 mit einem Arduino 9 Bewertungen - Durchschnitt: 9,789 Bewertungen - Durchschnitt: 9,789 Bewertungen - Durchschnitt: 9,789 Bewertungen - Durchschnitt: 9,789 Bewertungen - Durchschnitt: 9,78
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Highli Highli ist männlich
Mitglied

images/avatars/avatar-772.jpg

Dabei seit: 23.12.2011
Beiträge: 24
Wohnort: Brühl

Highli ist offline
Die Ansteuerung des LC-Displays HD44780 mit einem Arduino Beitrag: beantworten | zitieren | editieren | melden       | Top

Das LCD vom Typ HD44780
Liebe Freunde, ich möchte euch in diesem Arduino-AddOn die Programmierung eines LC-Displays zeigen. Bei meinem ersten Besuch beim Computerclub² hatte ich das Vergnügen, das Arduino-Board und eine Schaltung zur Ansteuerung eines LC-Displays vorzustellen. Da die Zeit für eine derartige Präsentation leider sehr begrenzt ist, möchte ich an dieser Stelle noch weitere Informationen liefern, um euch – falls nicht schon geschehen - gegebenenfalls noch mehr für die Materie zu begeistern. So ein Arduino-Board ist ja schon eine feine Sache und Du kannst eine Menge unterschiedlichster Sensoren an die Eingänge des Mikrocontrollers anschließen. Doch wenn es z.B. darum geht, einen Status eines digitalen Ausgangs anzuzeigen, bleibt uns lediglich eine Leuchtdiode, um das zu realisieren. An oder Aus bzw. LOW- oder HIGH-Pegel! Das sind die einzigen Möglichkeiten, die Dir bei dieser Variante zur Verfügung stehen. Möchtest Du jedoch ein etwas anspruchsvolleres Design in Form einer alphanumerischen Anzeige, dann bietet sich ein LC-Display an. Es handelt sich dabei um ein Anzeigemodul, das auf der Basis einer Flüssigkristallanzeige (Liquid Crystal Display) arbeitet. Hört sich schon recht merkwürdig an, nicht wahr? Etwas Flüssiges wird zur Anzeige von irgendwelchen Informationen genutzt. Doch die Sache ist schnell erklärt, wenn sich dahinter auch etwas viel komplexeres verbirgt. Die in der Anzeige enthaltenen Flüssigkeitskristalle können durch eine von außen angelegte Spannung in ihrer Ausrichtung beeinflusst werden. So können sie Einfluss auf die Polarisationsrichtung des Lichtes nehmen. Ich habe für unser Beispiel ein LCD-Modul vom Typ HD44780 von Hitachi verwendet, was ein sehr verbreitetes Modul ist. Es ist aus einer 5x8 Punkt-Matrix aufgebaut

wobei jeder einzelne Punkt durch den auf dem Modul befindlichen Treiberchip angesteuert wird. Dieser Treiber nimmt uns eine Menge Arbeit ab, denn wir müssen uns nicht darum kümmern, bei welchem Buchstaben oder welcher Ziffer, die wir anzeigen lassen wollen, welche Punkte der Matrix anzusteuern sind. Diese Aufgabe übernimmt der besagte Treiberchip.
Die AD-Wandlerschaltung
Auf dem folgenden Foto siehst Du einen Schaltungsaufbau auf einem Steckbrett – auch Breadboard genannt. Die beiden Hauptakteure sind natürlich
  • Das Arduino Mikrocontrollerboard
  • Das LCD-Modul vom Typ HD44780

Diese Schaltung, die ich hier aufgebaut habe, erfüllt einen ganz praktikablen Zweck. Es handelt sich um eine AD-Wandler Schaltung.

Wie Du schön erkennst, wird auf dem LC-Display eine interessante Information angezeigt. In der ersten Zeile steht eine allgemeine statische Information, die sich nicht ändert und Aufschluss darüber gibt, wo sich die Schaltung zum Zeitpunkt der Aufnahme befand. Hey, wir waren beim Computerclub². Soweit so gut! In der zweiten Zeile erscheint jetzt etwas noch Interessanteres. Dort wird ein Spannungswert angezeigt, der an einem analogen Eingang des Arduino-Boards anliegt. Dieser Wert kann über das angeschlossene Potentiometer verändert werden. Im Moment beträgt dieser Wert 3,48 Volt.
Ich denke, dass es jetzt höchste Zeit wird, Dir den Schaltplan zu zeigen.

Wenn Du noch nie einen Schaltplan gesehen hast, so lasse Dich nicht verunsichern. Das ist alles halb so wild! Du erkennst schon alleine anhand der Größe der im Schaltplan verwendeten Symbole, welche die Hauptkomponenten sind. Links oben der Arduino Mikrocontroller und rechts unten das LCD-Modul. Damit beide Bauteile miteinander kommunizieren können, sind – wer hätte es gedacht – mehrere Verbindungsleitungen erforderlich, die hier in grün dargestellt sind.
Der analoge Eingang
Wenden wir uns zunächst einmal der Messwertaufnahme zu. Der Arduino hat 6 analoge Eingänge (A0 bis A5), von denen wir in dieser Schaltung lediglich einen nutzen.

Das Potentiometer stellt einen variablen Spannungsteiler dar, dessen beide festen äußeren Anschlüsse jeweils mit +5V bzw. Masse verbunden sind. Der mittlere Anschluss ist variabel und wandert je nach Einstellung mal Richtung +5V, mal Richtung Masse. Auf diese Weise kann ein variabler Spannungswert zwischen +5V und Masse dem analogen Eingang A0 zugeführt werden.

Hey, kein Problem! Als ich das zum ersten Mal gehört habe, musste ich auch scharf nachdenken. Was ist überhaupt ein Spannungsteiler? Nun ja, er teilt die anliegende Spannung in einem bestimmten Verhältnis auf und wird im einfachsten Fall aus 2 Widerständen aufgebaut.

Auf der linken Seite liegt die Versorgungsspannung U von +5V an und auf der rechten Seite befindet sich quasi der Ausgang mit der Ausgangsspannung U2, die über dem Widerstand R2 abgegriffen wird. Diese beiden Widerstände teilen die Versorgungsspannung auf. Ein Teil fällt am Widerstand R1 und ein anderer an R2 ab. Wir können dazu eine Formel aufstellen, die die Verhältnisse darstellt.

Sieht zwar ganz nett aus, doch wie kommt sie zustande? Ganz einfach! Es handelt sich um eine Verhältnisgleichung. Die Versorgungsspannung U fällt über den beiden Widerständer R1 und R2 ab, wobei die Ausgangsspannung U2 lediglich über dem Widerstand R2 angegriffen wird. Beide Seiten der Gleichung stehen im gleichen Verhältnis zueinander.
Um jetzt die Ausgangsspannung U2 genau berechnen zu können, muss diese Gleichung einfach nach U2 umgestellt werden.

War gar nicht so schwer, oder!?
Jetzt kommt das Potentiometer ins Spiel. Wie ich schon erwähnte, kannst Du dieses Bauteil als einen variablen Spannungsteiler ansehen. Schau her:

Der Abgriff der Ausgangsspannung U2 liegt an Pin 2 des Potentiometers und dieser Pin wandert je nach Einstellung rauf oder runter und teilt den Widerstand in unterschiedliche Größen. Die nächsten beiden Bilder machen es sicherlich noch ein wenig klarer:

Das linke Schaltbild zeigt eine Potentiometereinstellung, wo der Abgriff an Pin 2 weit oben ist. R1 ist also im Verhältnis zu R2 viel kleiner. Beim rechten Bild ist es genau umgekehrt. Der Abgriff ist nach unten gewandert und R1 ist viel größer als R2.

Ein einzelner analoger Eingang verkraftet Spannungswerte im Bereich von 0V bis +5V, der unter keinen Umständen überschritten werden darf. Andernfalls wird der Mikrocontroller zerstört!

Ein analoges Signal hat in Wirklichkeit unendlich viele Abstufungen, die dem Mikrocontroller zugeführt werden. Dieser ist jedoch aus bautechnischen Gründen nicht in der Lage, jedes kleinste µV zu erkennen. Ein einzelner analoger Eingang hat eine Auflösung von 10 Bit. Das bedeutet, dass er die maximal zulässige Spannung von +5V in 10 Bit = 1.024 gleiche Häppchen teilt. Daraus ergibt sich die maximale Empfindlichkeit von

Das sind also gerundet 4,9 mV.
Der Schaltplan unter die Lupe genommen
Ich denke, dass Du jetzt soweit mit Hintergrundwissen versorgt bist, dass wir uns dem Schaltplan im Besonderen widmen können. Du hast ihn zu Beginn zwar schon einmal gesehen, doch jetzt wollen wir uns einigen Details widmen.

Das LCD-Modul besitzt unterschiedliche Anschlussleitungen, wobei wir diese in zwei Kategorien unterteilen können.
- Steuerleitungen
...RS (Register-Select)
...R/W (Read/Write)
...E (Enable)
- Datenleitungen
...D0 bis D7

Die Steuerleitungen an den Pins 4, 5 und 6 regeln quasi den Transfer der Informationen auf dem LCD-Modul. Schauen wir uns zunächst die RS-Leitung an. Das hier vorgestellte LCD-Modul kann Informationen in zwei Zeilen darstellen. Es ist zudem möglich, jede einzelne Stelle anzusprechen, um gezielt ein oder mehrere Zeichen zu platzieren. Wenn wir also Informationen an das Modul schicken, muss demnach unterschieden werden, ob es sich um Steuerinformationen oder Anzeigeinformationen handelt.
RS-Leitung
Das wird durch die entsprechende Ansteuerung der RS-Leitung geregelt.
• 0: Befehl bzw. Steuerinformation
• 1: Daten bzw. Anzeigeinformation
R/W-Leitung
Wir können nicht nur Informationen an das Modul zu Anzeige schicken, sondern auch lesen. Was aber für uns keine weitere Bedeutung hat, denn wir möchten ausschließlich Daten verschicken. Aus diesem Grund ist die R/W-Leitung fest mit Masse verbunden.
• 0: Schreiben
• 1: Lesen
Enable-Leitung
Bei der Enable-Leitung handelt es sich um eine Taktleitung, die für die Synchronisation sämtlicher Leitungen zuständig ist.
Kommen wir jetzt zu den Datenleitungen. Vielleicht ist Dir im Schaltplan aufgefallen, dass lediglich die Anschlüsse D4 bis D7 verwendet wurden. Da es sich um die Datenleitungen handelt und wir nur die Hälfte der zur Verfügung stehenden Pins nutzen, bedeutet das jedoch nicht, dass uns etwas von der Funktionalität verloren geht. Das Display kann sowohl im
• 8-Bit, als auch im
• 4-Bit
Modus betrieben werden. Da in fast allen Schaltungen der 4-Bit-Modus verwendet wird, werden wir das auch hier tun. Um einen Bytewert auf eine 8-Bit Leitung zu schicken, ist eine einzige Operation von Nöten.
8-Bit-Modus

Um die gezeigte Bitkombination an das LC-Display zu schicken, ist eine einzige Operation notwendig.
4-Bit-Modus

Im 1. Schritt werden die obersten 4 Bits, im 2. Schritt, die untersten 4 Bits übertragen. Das bedeutet zwar ein wenig Mehraufwand, was sich sicherlich auf die Ausführungsgeschwindigkeit auswirkt, doch immer noch so schnell passiert, dass wir den Unterschied zum 8-Bit Modus nicht wahrnehmen würden.
Wie aber können wir jetzt etwas auf das LC-Display schicken, um etwas zu sehen? Es hängt sicherlich in erster Linie davon ab, was wir auf die Datenleitungen (D4 bis D7) schicken, doch auch die Steuerleitungen R/W (ist auf 0: Masse gelegt, weil wir nur auf das Display schreiben), R/S und Enabled spielen sicherlich ebenfalls eine entscheidende Rolle. Das Zusammenspiel aller Leitungen macht in der Summe das aus, wie sich das Display verhält. Wenn Du Deinen Mikrocontroller programmierst, dann bedienst Du Dich einem vordefinierten Befehlssatz, damit das ausgeführt wird, was Du beabsichtigt hast. Ähnlich verhält es sich mit dem LC-Display. Alleine das LC-Display, was ja genau genommen nur eine Flüssigkeitskristallanzeige ist, besitzt ja keine Logik. Zu Ansteuerung wird der schon erwähnte Treiber benötigt. Dieser Baustein enthält die Logik bzw. einen Befehlssatz, um die Anzeige zu steuern.
Die Programmierung
Jetzt hast Du so viel über die technischen Hintergründe erfahren, dass es wirklich Zeit wird, sich mit der Programmierung auseinander zu setzen. Im Arduino-Umfeld werden alle Programme Sketche genannt. Hier also unser Sketch, der folgende Aufgabe erfüllt:
• Kontinuierliches Einlesen des Wertes am analogen Eingang A0
• Umrechnen des Wertes ( 0 bis 1.023) in einen Spannungswert (0V bis +5V)
• Kontinuierliche Anzeige des errechneten Spannungswertes

Ein Sketch wird immer in 3 Blöcke unterteilt, die folgende Aufgaben haben:
• Definitionsbereich
...Mögliches Einbinden von Bibliotheken
...Definition von Variablen bzw. symbolischen Konstanten
• Initialisierungsbereich
...Einmaliger Aufruf der setup-Funktion (z.B. Initialisierung von Variablen)
• Arbeitsbereich
...Fortwährender Aufruf der loop-Funktion (z.B. Abfrage von Sensorwerten und Ausgabe an die verschiedenen Ports)
Hier eine kleine Grafik, die den Ablauf bzw. die Sketch-Struktur wiedergibt.



Ok, hier ist der erste Block, der für die Deklarierung und Initialisierung verantwortlich ist.

In Zeile 2 binden wir über die #include-Anweisung eine Bibliothek in unseren Sketch-Code ein. Warum machen wir das? Die Antwort ist ganz einfach! Die komplette Ansteuerung des LCD-Moduls mit den Steuer- bzw. Datenleitungen ist eine komplexe Angelegenheit und Bedarf fundierter Kenntnisse des Datenblattes des Moduls HD44780. Ein findiger Programmierer hat sich dieser Sache angenommen und einen Sketch-Code programmiert, der diese Aufgabe übernimmt. Das Einzige, was für uns jetzt von Interesse ist, ist die Angabe, welche Pins des LCD-Moduls an welchen Pins des Arduino angeschlossen werden. Der Programmierer der Bibliothek, die auch Library genannt wird, hat quasi eine Schnittstelle geschaffen, der diese Informationen übergeben werden muss. Alles Weitere wird durch die Library übernommen. Wie sie funktioniert, hat uns erst einmal nicht zu interessieren. Die Definition der einzelnen Pins und ihre Belegung erfolgt dann in den Zeilen 4 bis 12.
In Zeile 13 erfolgt die besagte Übergabe der zuvor definierten Pin-Informationen an die Schnittstelle. Wie sieht diese Schnittstelle aber aus? Nun, es handelt sich um die Instanziierung eines sogenannten Objektes. Stelle Dir dieses Objekt als einen besonderen Datentyp vor. Wenn Du Dich mit der Programmierung im Allgemeinen schon einmal auseinander gesetzt hast, sind Dir Datentypen wie int, char, float - um nur einige zu nennen - sicherlich schon einmal über den Weg gelaufen. Wurden Variablen damit deklariert, können sie Werte speichern, die später im Programmablauf genutzt werden.
Bei Objekten ist die Sache viel komplexer und es würde den Rahmen sprengen, alles zu erklären. Ich verweise an dieser Stelle auf mein Arduino-Buch, in der die objektorientierte Programmierung für den Arduino bzw. die Erstellung eigener Libraries detailliert beschrieben wird.
Jedenfalls wird mit in der Zeile 13

eine Variable lcd vom Datentyp LiquidCrystal initialisiert. Das ist möglich, weil wir in Zeile 2 die entsprechende Library in unseren Sketch-Code mit eingebunden haben. Wir übergeben bei der Instanziierung, wie dieser Vorgang genannt wird, die notwendigen Informationen über die Pinbelegung, damit die Library das LCD-Modul korrekt ansteuern kann. Das ist schon fast alles.
Kommen wir zum zweiten Block.

Dieser wird – wie schon erwähnt – einmalig ausgeführt und wird durch die setup-Funktion repräsentiert. An dieser Stelle teilen wir unserem lcd-Objekt mit, wie viele Spalten und Zeilen unser LCD-Modul denn hat (Zeile 17). Es existieren unterschiedliche Module mit z.B. 4 Zeilen und abweichender Spaltenanzahl. Die Library ist derart programmiert, dass sie auf diese Unterschiede entsprechend reagieren kann. Das kleine Wörtchen begin(...) stellt in der objektorientierten Programmierung eine sogenannte Methode dar. Das hört sich schon recht wichtig und kompliziert an, ist aber nichts anderes als eine Funktion, die im objektorientierten Umfeld eben diesen Namen bekommen hat. Spätestens an dieser Stelle wirst Du sicherlich bemerkt haben, dass Objekte in der Programmierung etwas ganz besonderes sind. Sie können nicht nur Werte speichern, sondern legen auch ein Verhalten an den Tag, das durch eben diese Methoden beeinflusst werden kann. Dieses Verhalten wird in Zeile 18 ganz deutlich. Ich teile dem lcd-Objekt über die clear-Methode mit, es möchte doch bitte den Inhalt im LCD-Modul löschen. In der Zeile 19 schreibe ich mit der print-Methode etwas in das LC-Display, was nach dem Löschen unmittelbar in der ersten LCD-Zeile erfolgt.
Jetzt der dritte Block:

Hier erfolgen die ständige Abarbeitung, also das Einlesen des analogen Wertes, die schon beschriebene Umrechnung und die Anzeige des Spannungswertes.
Über die setCursor-Methode in Zeile 24 wird der Cursor, also die Stelle, wo die nächste print-Ausgabe erfolgen soll, positioniert.
In Zeile 25 erfolgt das Abfragen des analogen Eingangs über die analogRead-Funktion. Dieser Wert wird der Variablen analogerWert des Datentyps int zugewiesen. In der darauffolgenden Zeile 26 passiert die Umrechnung des Wertes, der ja im Bereich von 0 bis 1.023 sein kann, in einen entsprechenden Spannungswert, in dem dieser mit 4,9 mV multipliziert wird. In den Zeilen 27 bis 29 wird dieser Wert zusammen mit dem Formelzeichen U und dem Zusatz Volt zur Anzeige gebracht.
Auf diese Weise haben wir einen schönen AD-Wandler mit dem Arduino-Board + LCD-Modul gebaut bzw. programmiert. Es gibt weitere interessante LCD-Module, wie z.B. das Folgende.

Das Video auf YouTube dazu
Hier sind die Möglichkeiten nahezu unbegrenzt und werden nur durch Deine Kreativität beschränkt.
Viel Spaß damit

Erik Bartmann
Meine Homepage

PS:
Auf meiner Homepage findet Ihr im Downloadbereich auch ein Dokument, was sich mit der Erstellung einer Arduino-Library
befasst, um genau das hier beschriebene LCD-Modul anzusteuern. Ihr lernt u.a. einiges über die objektorientierte Programmierung in C++,
die für die Programmierung von Arduino-Libraries notwendig ist. Falls Ihr Fragen habt, schreibt einfach eine Mail an Meine Arduino Mailadresse

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Highli: 12.02.2012 10:51.

12.02.2012 10:40 Beiträge des Benutzers | zu Buddylist hinzufügen
Wolfgang Rudolph
Administrator

images/avatars/avatar-8.jpg

Dabei seit: 25.03.2007
Beiträge: 4.103
Wohnort: Maxsain Ww.

Wolfgang Rudolph ist offline
RE: Die Ansteuerung des LC-Displays HD44780 mit einem Arduino Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo Erik,

ein wirklich toller Beitrag!

Damit werden sicherlich die Wünsche vieler Mitglieder erfüllt, die schon lange darauf warten, Hilfe beim Einstig in diese faszinierende Technologie zu bekommen. Gerade in den letzten Monaten haben sich die Nachfragen nach einer Art "Lehrgang" gemehrt und es scheint mir so, als ob Du hier eine große Lücke füllen könntest.

Vielen Dank dafür!

Bitte stelle doch noch einen Link zu Deinem neuen Buch hier ein damit die Leute nicht lange suchen müssen um an weitere Infos zu kommen.

Viele Grüße

Wolfgang
12.02.2012 10:54 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Highli Highli ist männlich
Mitglied

images/avatars/avatar-772.jpg

Dabei seit: 23.12.2011
Beiträge: 24
Wohnort: Brühl

Themenstarter Thema begonnen von Highli

Highli ist offline
RE: Die Ansteuerung des LC-Displays HD44780 mit einem Arduino Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo Wolfgang,

na klar, hätte ich beinahe vergessen ebueb

Hier der Link zu meinem Buch:
Die elektronische Welt mit Arduino entdecken

Und der Link zu meiner Internetseite:
www.erik-bartmann.de

Viele Grüße

Erik

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Highli: 12.02.2012 11:07.

12.02.2012 11:06 Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-814.png

Dabei seit: 11.07.2008
Beiträge: 1.308
Wohnort: Wuppertal

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo Erik

Kann mich dem Wolfgang nur anschließen. Schöner Beitrag für Einsteiger in die Mikrocontrolleranwendung und die Arduino-Technik. Das bereichert auf jeden Fall das CC2-Forum und macht es noch einen Schritt interessanter.

Gruß Rolf
12.02.2012 12:56 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Peter D Peter D ist männlich
Mitglied

Dabei seit: 10.05.2008
Beiträge: 286
Wohnort: Middle Franconia

Peter D ist offline
OLED-Display an Arduino Beitrag: beantworten | zitieren | editieren | melden       | Top

Bei meiner ersten Bastelei mit meinem Arduino-Board habe ich ein OLED-Display vom Typ EA W204-XLG angeschlossen.
Von Vorteil ist, dass kein Kontrast-Poti benötigt wird.
Interessant ist auch der Temperaturbereich. Dieses Display soll von -40°C bis 80°C funktionieren.

Allerdings habe ich den Verdacht, dass mein Display einen Defekt hat. Nach einem Reset erscheinen
häufig wirre Zeichen (nicht nur in Verwendung mit Arduino).


Gruß,
Peter

Dateianhänge:
jpg OLED_Display_an_Arduino.jpg (61 KB, 401 mal heruntergeladen)
jpg EA-W204-XLG.jpg (115 KB, 394 mal heruntergeladen)
16.02.2012 02:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Highli Highli ist männlich
Mitglied

images/avatars/avatar-772.jpg

Dabei seit: 23.12.2011
Beiträge: 24
Wohnort: Brühl

Themenstarter Thema begonnen von Highli

Highli ist offline
RE: OLED-Display an Arduino Beitrag: beantworten | zitieren | editieren | melden       | Top

Halllo Peter,

das ist ein schönes Display, was Du da zeigst!

Leider kostet es so um die 30€, wenn ich richtig informiert bin.
Oder hast Du eine günstigere Quelle?

Das mit dem Reset-Problem und den wirren Zeichen liegt wahrscheinlich wirklich am Display,
weil Du sagst, dass es nicht nur beim Arduino auftritt.

Verwendest Du die Arduino-LCD Library?
Das funktioniert ja eigentlich, weil das Display nach dem Standard HD44780 arbeitet.

Mit welchem anderen Mikrocontroller hast Du es noch probiert?

Betreibst Du das Display im 4-Bit oder 8-Bit-Modus?
Ist auf dem Foto schlecht zu erkennen. Siehst nach 4-Bit aus!?
Probiere doch mal den anderen Modus.

Viele Grüße

Erik

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Highli: 16.02.2012 09:18.

16.02.2012 09:06 Beiträge des Benutzers | zu Buddylist hinzufügen
franz franz ist männlich
Mitglied

Dabei seit: 11.06.2008
Beiträge: 631
Wohnort: Ruhrgebiet,Hohenlohe

franz ist online
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo,

ich hatte mal gelesen, OLED Display sind gegen das Abschalten der Displays im laufenden Betrieb empfindlich

Es sollte also vor dem Abschalten der Spannung immer der "Display off" Befehl ausgeführt werden. könnte vielleicht ein Grund für die Fehler sein?
16.02.2012 11:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Peter D Peter D ist männlich
Mitglied

Dabei seit: 10.05.2008
Beiträge: 286
Wohnort: Middle Franconia

Peter D ist offline
RE: OLED-Display an Arduino Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo Erik!

Zitat:
Original von Highli
Leider kostet es so um die 30€, wenn ich richtig informiert bin.

Ich hatte es im November letzten Jahres bei Reichelt gekauft und hatte dafür
'tief in die Tasche greifen müssen': 47,95€
Möglicherweise gibt es das irgendwo günstiger - ich habe nicht nachgesehen.

Zitat:

Das mit dem Reset-Problem und den wirren Zeichen [..]

Ich denke, ich habe eine Lösung gefunden:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
#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 20 // 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);         // Count of cols and rows
  lcd.noDisplay();               // Turn off the display
  delay(100);                    // Wait a moment
  lcd.display();                 // Turn on the display
}

void loop()
{
  lcd.clear();
  lcd.setCursor(0, 0);              // In die 1. Zeile wechseln
  lcd.print("0: OLED Display");     // Ausgabe des Textes
  lcd.setCursor(0, 1);              // In die 2. Zeile wechseln
  lcd.print("1: EA W204-XLG");      // Ausgabe des Textes
  lcd.setCursor(0, 2);              // In die 3. Zeile wechseln
  lcd.print("2: Angesteuert von");  // Ausgabe des Textes
  lcd.setCursor(0, 3);              // In die 4. Zeile wechseln
  lcd.print("3: einem Arduino UNO");// Ausgabe des Textes
  delay(2000);                      // Wait two seconds
}
Auf diese Art funktioniert es - auch nach einem Reset.

Zitat:

Verwendest Du die Arduino-LCD Library?

Ja, verwende ich - unter Windows 7.

Zitat:

Mit welchem anderen Mikrocontroller hast Du es noch probiert?

ATMEGA88 - aber das ist ja fast der Gleiche wie der 328er.

Zitat:

Betreibst Du das Display im 4-Bit oder 8-Bit-Modus?

Ich verwende es im 4-Bit-Modus.


Grüße,
Peter

P. S.: Das von Dir geschriebene Buch ist IMO echt toll fröhlich

Dateianhang:
jpg EA-W204-XLG_2.jpg (81,37 KB, 324 mal heruntergeladen)
17.02.2012 01:39 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Peter D Peter D ist männlich
Mitglied

Dabei seit: 10.05.2008
Beiträge: 286
Wohnort: Middle Franconia

Peter D ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo franz!
Zitat:
Original von franz
Es sollte also vor dem Abschalten der Spannung immer der "Display off" Befehl ausgeführt werden.

Wenn ich den Stromstecker von der Platine ziehe ... hmm? verwirrt

Gruß,
Peter
17.02.2012 02:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Highli Highli ist männlich
Mitglied

images/avatars/avatar-772.jpg

Dabei seit: 23.12.2011
Beiträge: 24
Wohnort: Brühl

Themenstarter Thema begonnen von Highli

Highli ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo Peter,

Du meinst nach dem Hinzufügen des delay(2000) funktioniert es jetzt?

Wäre ja strange!

Oder ist es noDisplay() in der setup-Routine?

Viele Grüße

Erik

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Highli: 17.02.2012 07:34.

17.02.2012 07:33 Beiträge des Benutzers | zu Buddylist hinzufügen
franz franz ist männlich
Mitglied

Dabei seit: 11.06.2008
Beiträge: 631
Wohnort: Ruhrgebiet,Hohenlohe

franz ist online
Beitrag: beantworten | zitieren | editieren | melden       | Top

Zitat:
Original von Peter D

Zitat:
Original von franz
Es sollte also vor dem Abschalten der Spannung immer der "Display off" Befehl ausgeführt werden.

Wenn ich den Stromstecker von der Platine ziehe ... hmm? verwirrt


eben nicht !
steht in diversen Datenblättern von OLED-Displays zB. hier:
Seite. 14
http://www.adafruit.com/datasheets/UG-2864HSWEG01.pdf

im Normalfall wird das Gerät ja auch nicht durch ziehen eines Steckers abgeschaltet , sondern über den Schaltregler, ein MosFET o.ä. in der Stromversorgung
da kannst Du vorher auch noch das Display off - Kommando abschicken
17.02.2012 10:08 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Peter D Peter D ist männlich
Mitglied

Dabei seit: 10.05.2008
Beiträge: 286
Wohnort: Middle Franconia

Peter D ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo Erik,

das Delay habe ich nur zum Test im Code.
Das noDisplay() und display() im Setup hatte geholfen.


Gruß, Peter

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Peter D: 17.02.2012 19:02.

17.02.2012 19:00 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
oliverbauer oliverbauer ist männlich
Mitglied

Dabei seit: 11.09.2011
Beiträge: 55

oliverbauer ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo Erik,

jetzt bin ich aber mal rasend neugierig auf die kommende CC2-Sendung! Wirst Du in Zukunft öfter auftreten? Dein Buch über Arduino habe ich verschlungen. Da habe ich so viele neue Sachen gelernt. Danke!

Und natürlich danke an die Wolfgangs und den Heinz, die uns Fans der Technik immer wieder Neues und Interessantes zeigen.
17.02.2012 22:38 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Highli Highli ist männlich
Mitglied

images/avatars/avatar-772.jpg

Dabei seit: 23.12.2011
Beiträge: 24
Wohnort: Brühl

Themenstarter Thema begonnen von Highli

Highli ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo Oliver,

es freut mich sehr, dass Dir mein Buch gefallen hat!

Wenn Dich noch mehr Themen interessieren, dann wirf doch einen Blick auf meine
Internetseite. Dort findest Du im Downloadbereich meine Arduino-AddOns. Ich werde
dort - sofern es meine Zeit zulässt - immer mal wieder ein neues Thema besprechen.

Und natürlich hier im Forum!!!

Ob ich in Zukunft desöfteren beim CC² auftreten werde, liegt nicht in meinen Händen großes Grinsen

Das müsste ich mit Wolfgang noch besprechen. Lust hätte ich auf jeden Fall.

Viele Grüße

Erik

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Highli: 18.02.2012 10:08.

18.02.2012 10:05 Beiträge des Benutzers | zu Buddylist hinzufügen
perlian perlian ist männlich
Mitglied

images/avatars/avatar-631.gif

Dabei seit: 04.05.2010
Beiträge: 649
Wohnort: Essen

perlian ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo,

erst einmal Erik Bartmann herzlichen Glückwunsch zu seinem sehr gelungenen Buch über den Arduino. ebueb

Es vermittelt Anfängern Wissen in einer leicht verständigen und nachzuvollziehenden Weise, und erfahreneren Nutzern nützliche und manchmal schon vergessene Fakten ohne gleich Oberlehrerhaft zu wirken.

Ich wünsche mir das Erik Bartmann noch viele Bücher dieser Art schreibt

Ich habe mir den Arduino Uno und das Buch jetzt gekauft und bis jetzt macht es sehr viel Spass.

Nach fast 25 Jahren Bastelpause geht es jetzt weiter.

Frage zu diesem Beitrag:

Die Suche nach dem LCD vom Typ HD44780 bei diversen Anbietern erwies sich im konkreten Fall als ziemlich schwierig

Entweder war es gar nicht verfügbar oder die Suche ergab Treffer die eins gemeinsam hatten: der genaue Typ war nie dabei böse

Zum Beispiel Reichelt hatte 10 Treffer dieser Art

Gibt es baugleiche Vergleichstypen und wie heissen sie ?

Soweit erstmal..............

ebueb

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von perlian: 19.02.2012 13:55.

19.02.2012 13:53 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Highli Highli ist männlich
Mitglied

images/avatars/avatar-772.jpg

Dabei seit: 23.12.2011
Beiträge: 24
Wohnort: Brühl

Themenstarter Thema begonnen von Highli

Highli ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Es freut mich, dass Dir mein Buch gefällt!

Bei Pollin-Elektronik gibt es immer günstige LCD-Module. Da sind auch welche dabei, die HD44780 kompatibel sind:

Pollin LCD-Module

oder vielleicht hier:

Komputer.de

oder

Watterott LCD-Module

oder

Tinkersoup LCD-Module

Falls Du noch Fragen hast, melde Dich...

Viele Grüße

Erik
19.02.2012 14:17 Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-814.png

Dabei seit: 11.07.2008
Beiträge: 1.308
Wohnort: Wuppertal

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo Perlian

Die LCD-Module mit dem HD44780 Controller sind quasi schon ein Standard in der Mikroelektronik. Kompatibel dazu sind auch LCD-Module mit KS0070B Controller.

Reichelt Elektronik hat diesbezüglich auch eine große Auswahl: LCD-Module

Gruß Rolf

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von rolfdegen: 25.02.2012 18:08.

25.02.2012 18:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
perlian perlian ist männlich
Mitglied

images/avatars/avatar-631.gif

Dabei seit: 04.05.2010
Beiträge: 649
Wohnort: Essen

perlian ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo,

Danke Rolfdegen und Highli für die Tipps.

Wenn man in die Shops geht ist man erstmal von der Vielzahl der Typen erschlagen.

Was mit wem kompatibel ist erschliesst sich leider nicht.

Aber erstmal muss ich meine Grundausstattung mal wieder vervollkommnen wie der Blick in meine Sortierkästen verriet großes Grinsen

20 Jahre sind daran nicht spürlos vorbei gegangen.

Lochrasterplatinen und ein vernünftiges Breadboard sowie diverse Kleinteile usw.

Auf jeden Fall finde ich es super das mal wieder ein interessantes Praxisprojekt Einzug in den CC2 gehalten hat.

Ich hoffe auch das Erik Bartmann in Zukunft ein regelmässiger Gast in den Sendungen sein wird

ebueb ebueb
29.02.2012 20:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Peter D Peter D ist männlich
Mitglied

Dabei seit: 10.05.2008
Beiträge: 286
Wohnort: Middle Franconia

Peter D ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Zitat:
Original von perlian
Was mit wem kompatibel ist erschliesst sich leider nicht.

Hallo perlian,

schau doch mal nach HD44780-Kompatibilität (sind für Arduino geeignet).
Das soll mittlerweile so eine Art Standard sein.
Hier ein Beitrag dazu in der Wikipedia.

Gruß,
Peter
29.02.2012 21:56 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
perlian perlian ist männlich
Mitglied

images/avatars/avatar-631.gif

Dabei seit: 04.05.2010
Beiträge: 649
Wohnort: Essen

perlian ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Danke Peter ebueb

Interessanter Artikel


Ja so ist das... kaum beschäftigt man sich 20 Jahre lang nicht mit dem Zeug schon ist man raus aus dem Thema großes Grinsen
29.02.2012 22:04 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-814.png

Dabei seit: 11.07.2008
Beiträge: 1.308
Wohnort: Wuppertal

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo perlian

Der Trend geht mehr zu den günstigen LCD-Grafikdisplay mit mit Touch Panel. Ich werde in der nächsten Woche in meinem Projekt "AVR-Synthesizer" hier im CC2-Forum ein LCD-Grafikdisplay vorstellen und zeigen wie es angeschlossen und programmiert wird.

Gruß Rolf
29.02.2012 22:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Peter D Peter D ist männlich
Mitglied

Dabei seit: 10.05.2008
Beiträge: 286
Wohnort: Middle Franconia

Peter D ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo Rolf,

ich könnte mir vorstellen, dass ein 'ASCII-Display' beim Einstieg in die Microcontroller-Technik
einfacher zu handhaben ist - auch wenn der Trend zum Graphischen gehen sollte.
Allerdings habe ich selbst noch kein Graphik-Display verwendet.
Ich bin gespannt auf Dein Posting Freude

Gruß, Peter
29.02.2012 22:47 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur
Gehe zu:
 
Antwort erstellen
CC²-Fan-Club » Computerclub 2 » Rund um den Arduino » Die Ansteuerung des LC-Displays HD44780 mit einem Arduino

Impressum - Datenschutzerklärung

Forensoftware: Burning Board, entwickelt von WoltLab GmbH