I2C Display Problem

Gast #6689096
Lesenswert?

Hallo zusammen, habe heute mein Display+Controller erhalten und wollte 
gleich mal loslegen. Mit folgendem Skatch:
1
#include <LiquidCrystal_I2C.h>
2

3
LiquidCrystal_I2C lcd(0x27,20,4); 
4

5
void setup()
6
{
7
  lcd.init();                      
8
  lcd.backlight();
9
  lcd.setCursor(3,0);
10
  lcd.print("Hello, world!");
11
  lcd.setCursor(2,1);
12
  lcd.print("Test 2.Zeile");
13
   lcd.setCursor(0,2);
14
  lcd.print("Test 3. Zeile");
15
   lcd.setCursor(2,3);
16
  lcd.print("Test 4. Zeile");
17
}
18

19

20
void loop()
21
{
22
}

Die Adresse habe ich mit dem I2C Scanner ermittelt. 
Hintergrundbeleuchtung in an, aber ich sehe keinen Text.
Ist der Code soweit ok? Denke schon da verschiedene Beispiele ähnlich 
ausssehhen.
Was kann ich noch testen oder ist da etwas defekt?


Gruß und Danke
Gast #6689166
Lesenswert?

Test schrieb:
> Habe am Kontrast schon geregelt, keine Veränderung.

Nicht nur ein bisschen drehen. Das musst du drehen bis es anschlägt in 
BEIDE Richtungen und dabei das Display beobachten. Das können mehrere 
Umdrehungen sein.

Ich habe das selbe Display aus den selben Shop mit den selben Interface 
und es waren ne Menge Umdrehungen.

Kleiner Tipp dabei. Irgendwann siehst du ein "Muster" dann musst du noch 
ein Tick weiter drehen bis das Muster verschwindet. Dann ist es perfekt 
eingestellt.

Logoweis musst du das unter Strom drehen. ;)

UND KEINE GEWALT anwenden.

Die "Schraube" ist in den blauen Würfel und du brauchst ein 
Minischraubenzieher . !!!!
Gast #6689200
Lesenswert?

Test schrieb:
> da gibt es nicht mehrere Umdrehungen, sondern nur etwas bis zum
> jeweiligen Anschlag.

Hab es gerade getestet. Bei meinen sind es ca. 1 1/2 Drehungen. Und wie 
schon gesagt, das Muster (so ne Matrix je Buchstabenfeld) sollte 
erscheinen und dann wieder verschwinden.

Achte darauf das auch Jumper an der Seite gesetzt ist. Da wo LED steht.
Gast #6689277
Lesenswert?

Es gibt viele unterschiedliche Adapter, gerade bei den Steuerleitungen 
macht jeder gerne mal was anderes. Wenn Deine Lib nicht für die 
verwendete Hardware ist, geht es nicht, oder Lib anpassen.

Teste einfach mal, ob die Hintergrundbeleuchtung sich schalten lässt, 
wenn nicht, muss die Lib auf die Hardware angepasst werden, oder eine 
andere Lib nehmen.

Wenn der I2C Scanner was findet, 0x27 sieht gut aus, dann sollte der IC2 
Teil passen.
#6689292
Lesenswert?

Test schrieb:
> Was kann ich noch testen

Ein Testprogramm auf den Arduino aufspielen, welches die Onboard-LED im 
Sekundentakt blinken lässt.
Damit lässt sich der eingestellte Systemtakt prüfen.

Test schrieb:
> wenn der I2C Scanner die Adresse auslesen kann,
> denke ich, das alles richtig verbunden ist

Ist das ein Scanner-Programm, welches auf dem Arduino läuft und über den 
Terminal die Adresse anzeigt?
Gast #6689553
Lesenswert?

Sebastian W. schrieb:
> Es gibt anscheinend verschiedene LiquidCrystal_I2C Bibliotheken, die das
> Display leicht unterschiedlich ansteuern. Benutzt du genau die von
> deinem Lieferanten empfohlene?

Womit wir wieder zum Anfang zurück kommen.

Ich würde auch empfehlen hier nicht weiter über die Hardware (Poti, etc) 
zu diskutieren, solange nicht klar is welche Hardware und Software unser 
Fragesteller hat. Weil das Erfahrungsgemäß in sinnlose Kontroversen 
ausartet, oft auch in Streit.
Gast #6689763
Lesenswert?

Nur wenn die I2C Adresse erfolgreich ermittelt wird, heißt es nicht 
umbedingt dass auch das Display in der fertigen Anwendung auch was 
anzeigt.
Die Lib ist der entscheidene Faktor !
Viele I2C Adappter mit PCFxxx sind unterschiedlich designt,d.h. die
Lib muss passen sonst wird nichts angezeigt.
Dein i2C scanner zeigt Dir nur die vom PCFxxx an !
Ich habe auch verschiedene LCD die nur mit einer speziellen Lib "laufen" 
-
also nicht zwangsläufig defekt sind.
Wenn möglich diese Display über 4 Bit parallel mit der Standard Lib 
testen
um so die grundsätzliche Funktion zu überprüfen.
In manchen Lib,s kannst Du auch die Zuordnung LCD zu PCFxxx einstellen.
ich selbst nehme nur nach I2C adappter die mit meiner "Standard Lib"
kompatibel sind.
Bestes beispiel: ich hatte in der Bucht überflüssige LCD mit I2C 
verkauft,
der Käufer meinte die sind defekt.
Ich hatte dann die Lib geschickt mit der ich diese vor Verkauf getestet 
habe
und siehe da alles ist prima - LCD,s sind nicht defekt.
Also wieder die falsche Lib verwendet - der Käufer wollte aber erst 
einmal sein Geld zurück und war Anfangs sehr beratungsresistent.
#6689785
Lesenswert?

Hi,
Habe auch ein Sain Smart 2004.
https://www.christians-shop.de/Set-LCD-2004-I2C-Module-20x4-Figures-Illumination-Blue-I2C-Modulee-for-Arduino

Das ist vom Display selbst her ein stinknormals HD44780-er, und mit 
entsprechender Initialisierungsroutine problemlos ansteuerbar.
Nur noch Huckepack der Portadapter hinten drauf.
Aber afaik zumindest zwei Versionen im Umlauf:
Frage:
Was steht auf dem Portexpander IC drauf?
mit oder ohne A.
Die Adressen sind dann unterschiedlich.

PCF8574->0x40...4E;
PCF8574A->0x70...7E

ciao
gustav
#6689832
Lesenswert?

https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library/blob/master/examples/HelloWorld/HelloWorld.ino
Ich denke auch, dass die Bibliothek mit 20x4 das LCD nicht ordnungsgemäß 
initialisiert.
Ist jetzt aus der ferne eher schlecht zu prüfen.
Das Beispiel ist ja, in der Tat, wirklich einfach. Geb' ich gern zu, 
dass man da garnicht auf die Idee kommt, mal in die *.cpp reinzusehen, 
was da exakt veranstaltet wird.
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library/blob/master/LiquidCrystal_I2C.cpp
Denke, dass mit der Initialisierung was nicht ganz stimmt...
probier doch mal das Display mit 16x2 Zeichen zu initialisieren

In der cpp wird auch auf ein Datenblatt referenziert. Leider steht nicht 
hierzu, welches genau. Aber eben einzeilig oder zweizeilig.

Nochmal edit:
lass mal SetCursor weg und schreib mal einfach "hello world"
#6689848
Lesenswert?

1
void LiquidCrystal_I2C::setCursor(uint8_t col, uint8_t row){
2
  int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 };
3
  if (row > _rows) {
4
    row = _rows-1;    // we count rows starting w/0
5
  }
6
  command(LCD_SETDDRAMADDR | (col + row_offsets[row]));
7
}

Vielleicht stimmen auch hier die Offsets der Zeilenanfänge nicht.
Wir hatten doch letztens erst auch so ein Problem, wo nur die ersten 8 
Zeichen angezeigt wurden.
#6690046
Lesenswert?

Hi,
bin der Meinung, dass eventuell die Adressen nicht von 7-Bit- auf 8-Bit- 
Format angepasst wurden. Dann müssen am Anfang noch A0 bis A2 auf High 
stehen.
Das addiert man zur Portadapteradresse.
Beispiel:
;TWI/I2C-PortB PB7=SCL; PB5=SDA
; LCD: 4x20 SainSmart2004; HD44780 compatible
; P7  P6  P5  P4  P3  P2  P1  P0
; D7  D6  D5  D4  LED ENA R|W RS
; A0,A1,A2 -> left open e.g =H  -> 3F
to be added to portdaptor's address
e.g.
PCF8574->0x40...4E;
PCF8574A->0x70...7E

Die Steuerbits, Enable und RS sind im Achtbitformat gekapselt zu senden.
R/W ist standardmäßig auf Low. Denn eine "Rückwärtsübertragung" ist beim 
Portadater nicht vorgesehen, also entfällt die Busybitabfrage von vorn 
herein. Einbahnstraße. Ausschließlich Vierbitmodus.
Eine Extrawurst für 4 x 20 brauchte es nicht. (Wie ein 16x2-er 
initialisierbar)
Aber zur Info: Adressen für Zeilenanfänge 1...4:
Hex80
HexC0
Hex94
HexD4

Viel Spaß

ciao
gustav
Gast #6690058
Lesenswert?

der TO schrieb doch schon das die Hintergrundbeleuchtung an ist. Wenn 
die durch lcd.backlight(); eingeschaltet wurde, dann muss die Adresse 
richtig sein.
Um sicher zu gehen das die nicht per default an ist, kann man die Zeile 
auskommentieren, dann muss die aus sein. Oder noch besser im 
Sekundentakt umschalten.

Hier ist auch eine gute Beschreibung zu Display und I2C Adapter:
https://lastminuteengineers.com/i2c-lcd-arduino-tutorial/
Moderator Persönliche Seite #6690079
Lesenswert?

Johannes S. schrieb:
> der TO schrieb doch schon das die Hintergrundbeleuchtung an ist.

Das ist der Standard, hatte gestern auch noch eines von den Dingern in 
den Fingern.

> Um sicher zu gehen das die nicht per default an ist, kann man die Zeile
> auskommentieren, dann muss die aus sein.

Nöö. Ist dann wegen "Default an" immer noch an :-)

> Oder noch besser im Sekundentakt umschalten.

Jepp, genau so.
#6690115
Lesenswert?

Frank M. schrieb:
> Das ist der Standard, hatte gestern auch noch eines von den Dingern in
> den Fingern.

Hi,
den Jumper ziehen, dann ist sie aus.
(BTW: Da hab ich eine Dimmung mit Transistor angeschlossen.)
Spess53 schrieb:
> Bitte Anhang verwenden.
Ok. Danke für Tipp.
Aber das "Sain Smart" ist etwas simpler gestrickt.
Wie gesagt:
Adresse des Portadapters... ?
Zeilenanfangsadressen:
Hex80
HexC0
Hex94
HexD4

ciao
gustav

P.S.:
Hab bei einem den Portadapter abgelötet und wie ein "normales" HD44780 
zum Laufen bekommen. Dann schenke ich mir die TWI/I2C-Einrichtung.
Und schauen, ob da bei A0 bis A2 bereits Lötbrücken gesetzt sind. Hier 
nicht.
Angehängte Dateien:
Gast #6690336
Lesenswert?

Ich habe die Nacht nochmal darüber nachgedacht. Die einzige Möglichkeit 
wieso das nicht funktioniert ist, das das Display ZU VIEL Strom bekommt. 
Oder der Blaue China-Regler defekt ist.

Ich glaube 100 % NICHT an einen Softwarefehler. Wie bereits oben 
erwähnt, zeigt die Hardware/Das Display ein Matrixmuster je Buchstabe 
an, wenn es LEICHT über steuert ist. Dies kann man testen, ohne das es 
irgendwelche Software braucht.

Und bei 1.10 Euro für den Adapter... . Ich bestelle bei China-Teilen die 
unter 2 Euro kosten, meist immer 1 Ersatzteil gleich mit. Ist halt 
billigste Fertigung. Da muss man mit Fehlern rechnen.

Den Shop muss ich mal in Schutz nehmen. Der hat vernünftige Preise, und 
erledigt dafür die Arbeit das Zeug in China zu beschaffen. Das selbe was 
ich bisher (und auch noch immer) über Ebay mache.  Allerdings wird der 
Shop demnächst mehr Aufträge von mir bekommen. Wegen den 1.7.2021. :;(

Datenblatt braucht man nicht. Es gibt für das Display genügend Blogs 
u.s. wo man sieht wie es angeschlossen wird. Einzig für den FESTEN 
Zeichensatz ist ein Datenblatt vielleicht von nutzen, wenn man wissen 
will wie man üäöü ansteuert. Das ist aufwendig. Ich lasse es meist.
Gast #6690350
Lesenswert?

Schlaumaier schrieb:
> Datenblatt braucht man nicht.

Doch. Das sehen wir an diesem Thread sehr deutlich.

Der Händler sollte angeben, welcher Display-Controller verwendet wurde, 
welcher Chips für den I²C Adapter verwendet wurde und wie diese beiden 
miteinander verbunden sind. Außerdem sollte er die Stromaufnahme mit und 
ohne Hintergrund-Beleuchtung angeben.

Du kaufst da eine Katze im Sack. Selbst auf die Fotos kann man sich 
typischerweise nicht verlassen, da sich die Händler kleine Änderungen 
vorbehalten.
Gast #6690487
Lesenswert?

Hallo Schlaumaier, 8ch schrieb ja bereits das ich kein 
Übersteuerrungsmuster sehe, selbst wenn ich es nur an 5V lege und 
Versuche zu regeln. Ich kenne es auch wie du 3s beschrieben hast von 
anderen Displays .
Die Displayhintergrundbeleuchtung läst sich per Code an und ausschalten. 
Mit einer Init mit 16x2 kann ich es gerne nochmal ausprobieren.
Gast #6690509
Lesenswert?

Stefan ⛄ F. schrieb:
> Der Händler sollte angeben, welcher Display-Controller verwendet wurde,
> welcher Chips für den I²C Adapter verwendet wurde

Lies mal die Beschreibung.

https://www.christians-shop.de/LCD-2004-20x4-Zeichen-Beleuchtung-Blau-kompatibel-mit-HD44780

Mir reicht es wenn da HD44780 steht und der beigelegte Adapter passt.

Jedenfalls habe ich mit diesen Sshlüsselwort noch nie Probleme gehabt.

Was den Adapter angeht.
1. gibt es da Beschreibungen wie Sand am Meer.
2. Reicht es völlig aus, wenn man mal die Augen aufmacht und sich den 
Chip ansieht.
3. hat der der Chinese wo ich meine 5 Displays (1602) + Adapter gekauft 
hat auch nicht gemacht.


Allerdings habe ich 10 Zahnstocher unter den Adapter gelegt als ich ihn 
eingelötet habe. ;) Der neigt (im wahrsten Sinne des Wortes) zum Neigen 
und das führt zu Problemen.
Gast #6690525
Lesenswert?

Test schrieb:
> Die Displayhintergrundbeleuchtung läst sich per Code an und ausschalten.
> Mit einer Init mit 16x2 kann ich es gerne nochmal ausprobieren.

Aber wie schon erwähnt, ein 1.20 Euro Adapter kann auch mal kaputt sein.

Man sollte wenn man diese Displays dauernd  verwendet immer 1-2 auf 
Reserve habe.

Was den Adapter selbst angeht. Den kannst du auch Problemlos nachbauen. 
Nimm ein PCF8574 und regele die Display-Helligkeit via Poti. Was anderes 
macht die Schaltung auch nicht.

Sie ist bloß einfacher und kostet weniger als es selbst zu machen.

Hier ein Schaltplan via Fritzing. 
https://www.hackster.io/dzerycz/character-lcd-over-i2c-ba8ee9  <- Ist 
zwar in English aber ich bin zu faul den Deutschen Text zu suchen.
Gast #6690670
Lesenswert?

Test schrieb:
> Welche Bibliothek
> verwendest du denn Schlaumaier, kann diese ja auch nochmal ausprobieren?

Jein ;)

Ich hatte mal mit einer Libs für das Display probleme mit der 
Positionierung und Ärger mit der IDE-Version.  Was heißt : Schreib in 
den Header welche IDE -Version für den Code ist. Seit dem schreibe ich 
in b4r.

Falls du es aber willst.
www.b4x.com . Da das b4r runter ziehen.


Sub Process_Globals
  'These global variables will be declared once when the application 
starts.
  'Public variables can be accessed from all modules.
  Public Serial1 As Serial
  Public lcd As LiquidCrystal_I2C
End Sub

Private Sub AppStart
  Serial1.Initialize(115200)


  lcd.Initialize(0x27, 20, 4) 'Adresse, Zeichen, Zeilen
  lcd.Backlight = True


  lcd.SetCursor(0,1)
  lcd.Write("Temperatur:")

End Sub


Das ist der Code. Ich muss nur die Biblothek LiquidCrystal_I2C anhaken. 
Das ist alles.
Gast #6690699
Lesenswert?

Test schrieb:
> Mit folgendem Skatch:

Ich vermisse:
1
#include <Wire.h>

Unvollständig und falsch, eher so:
1
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

Dann fehlt noch init:
1
void setup() 
2
lcd.begin(20,4);  // initialize the lcd

Im Anhang ein Bastelsketch, der hier klaglos spielt - Adresse und 
Displaygröße anpassen und mal probieren.

Dazu meine Lib, hier liegt sie in:

Verwende die Bibliothek LiquidCrystal im Ordner: 
[Laufwerk]\Arduino_IDE\portable\sketchbook\libraries\LiquidCrystal 
(legacy)

und die IDE fischt sich dort die I2C-Teile raus.

Ich sehe gerade, dass ich auch eine abweichende wire verwende:

Verwende die Bibliothek Wire im Ordner: 
[Laufwerk]\Arduino_IDE\portable\sketchbook\libraries\Wire

Bitte zuerst nur "Display_bespielen.ino" testen und erst, wenn das nicht 
tut, die anderen libs reinspielen. Vorher Sicherung machen, falls das 
andere Dinge verbiegt!

Stefan ⛄ F. schrieb:
> Bin ich blind oder gibt es in dem Shop keinerlei Datenblatt zu dem
> Display? Wer kauft so etwas?

Das ist unter (uns) Arduinos so üblich, irgendwas kaufen und hoffen. 
Meine 1602 und 2004 vom Ali habe ich klaglos in Gang bekommen.

Und immerhin bietet der Händler auf Anfrage eine A*-Lib an, hoffen wir 
mal, dass er die bekommt.

Klugscheißer schrieb:
> Viele I2C Adappter mit PCFxxx sind unterschiedlich designt,d.h. die
> Lib muss passen sonst wird nichts angezeigt.
> Dein i2C scanner zeigt Dir nur die vom PCFxxx an!

Ausnahmsweise mal richtig gesch****, ich habe auch eine Weile gesucht, 
Bilder verglichen und die zugehörigen Beispiele ausprobiert.
Angehängte Dateien:
Gast #6690718
Lesenswert?

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// LED Steuerung mit 8574

// Verbindungen zum Uno
// GND > D4
// Data > D5
// Input > D6
// VCC > D7


LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  Serial.begin(9600);

  lcd.init();         // LCD-Ini
  lcd.clear();        // LCD-löschen
  lcd.backlight();    // LCD AN

  lcd_text("Prg gestartet", 0);

}

Das der Code den ich damals benutzt habe.

Ich glaube die Libs war sogar bei der Installation dabei.
#6691002
Lesenswert?

Ist das LCD nicht initialisiert und stimmt die Kontrastspanung, zeigt 
jede 2. Zeile schwarze Kästchen, die nach dem Init verschwinden.
Es gibt viele verschiedene LCD-Verschaltungen, d.h. die 2. Zeile kann 
auch die 2. Hälfte sein.

Ich finds schon naiv, wie man ein beliebiges LCD mit einer beliebigen 
Lib zusammen pappen kann und dann erwartet, daß es funktioniert.

In der Regel haben Libs eine Liste an unterstützten LCDs und 
entsprechende Defines, die man richtig setzen muß.
#6691129
Lesenswert?

Peter D. schrieb:
> Ich finds schon naiv, wie man ein beliebiges LCD mit einer beliebigen
> Lib zusammen pappen kann und dann erwartet, daß es funktioniert.

Hi,
Hardware und Halbleiterbestückung kann auch variieren.
Evtl. sind Lötbrücken (A0, A1, A2) gesetzt. Das verlangt jeweils nach 
anderen Adressen.
Und wie gesagt mit "A" oder ohne "A" des PCF8574  ergibt auch 
unterschiedliche Adressen.
Der im Bild oben braucht: 7E
https://www.mikrocontroller.net/attachment/516696/SainSmart2004_Pinout.jpg

ciao
gustav
#6691190
Lesenswert?

Johannes S. schrieb:
> Und auch die Hintergrundbeleuchtung konnte laut TO geschaltet werden.

schon das allein erübrigt eine Prüfung der I2C Adresse. Der Portexpander 
läuft also. Liegt dann "nur" noch am Display.
Seine LCD-Lib zieht die "wire.h" und macht auch die initilaisierung des 
LCD, inklusive clear() und home().
Einfach mal reingucken:
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library/blob/master/LiquidCrystal_I2C.cpp
Gast #6691703
Lesenswert?

Karl B. schrieb:
> Hi,
> zeig mal Fotos von Display-Vorderseite und Rückseite.
> Wir reden sonst womöglich aneinander vorbei.

Ich denke immer noch das das ein Hardware-Problem auf der Adapterplatine 
ist. Genauere gesagt habe ich das Poti im Verdacht, und zwar das das 
nicht reagiert.

Der TO kann sich ja mal den Spaß machen das Poti zu messen. Oder wenn er 
zur verfügung hat, mal eben den Fritzing-Schaltplan nachbauen. Dann weiß 
er ob der Adapter/Poti Schrott ist.

Kleiner Tipp an den TO. Der PCF8574 /75 ist einer der Wichtigsten 
Bausteine die du für den Arduino brauchst. Mein Tipp: Besorge dir ein 
paar (gibts auch mit Beinchen) das ist nie verkehrt.

Ansonsten brauchst du i.d.R. für jede LED (die nicht stripped ist) ein 
eigenen Port und das wird mächtig eng.

Fast alle meine Schaltungen habe 2-3 von den Chips drauf.  1 für das 
Display + 1 für LED  Taster  Tastatur Auswertung, Anzeige.
Gast #6697272
Lesenswert?

Hallo zusammen,

nachdem ich den Controller anlöten konnte, habe ich beides testen 
können. Display ist ok, Controller lief mit einem zweiten Display auch 
nicht. Habe neue Controller bestellt die heute eingetroffen sind und es 
lag am Controller.

Jetzt eine andere Frage. Da die Controller alle die selbe Adresse haben, 
kann man diese umprogrammieren?

Gruß
Gast #6697380
Lesenswert?

A0-A2 denke ich mal, da sonstnichts zu sehen ist?

Noch etwas anderes, gerade wollte ich ein Sketch schreiben wenn ich 
versuche beide Bibliotheken einzubinden, tritt beim kompilieren ein 
Fehler auf, wenn ich sie einzeln einbinde nicht.

#include <LiquidCrystal_I2C.h>
#include <TinyWireS.h>

am Speicher liegt es nicht, da beide nicht groß sind. Was kann man da 
machen?
Im Sketch stehen nur diese zwei Zeilen inkl. Setup und Loop ohne Inhalt
Gast #6697443
Lesenswert?

Folgender Fehler wird angezeigt.

libraries\Wire\USI_TWI_Slave\USI_TWI_Slave.c.o (symbol from plugin): In 
function `Flush_TWI_Buffers':

(.text+0x0): multiple definition of `__vector_13'

libraries\TinyWire-master\twi.cpp.o (symbol from plugin):(.text+0x0): 
first defined here

libraries\Wire\USI_TWI_Slave\USI_TWI_Slave.c.o (symbol from plugin): In 
function `Flush_TWI_Buffers':

(.text+0x0): multiple definition of `__vector_14'

libraries\TinyWire-master\twi.cpp.o (symbol from plugin):(.text+0x0): 
first defined here

collect2.exe: error: ld returned 1 exit status

exit status 1
Fehler beim Kompilieren für das Board ATtiny25/45/85 (No bootloader).


mit TinyWireM kommt kein Kompilierungsfehler
Gast #6697776
Lesenswert?

Test schrieb:
> Habe neue Controller bestellt die heute eingetroffen sind und es
> lag am Controller.

Schön das ich Recht hatte ;)

Was dein anderes Problem angeht.
Nimm die Tinywire raus, und die normale Wire rein. Die ist bei der IDE 
dabei.

Leg mal Testweise ein neues Projekt an, dann lade aus den Beispielen 
"Hello Word i2c". Ist zwar die Adafruit-Libs aber egal. Hauptsache 
läuft.

Das selbe Projekt läuft auch wenn du ERSATZWEISE die LiquidCrystal_I2C.h 
lädst(Include).
Gast #6701535
Lesenswert?

Test schrieb:
> OK, Steckbrett ;) aber komisch dennoch. Mit TinyWire läuft es
> problemlos.

Es kann sein, das die Libs ein Fehler hat, den Zeichensatz zu erkennen 
/Steuern. Aber grundsätzlich lassen Seltsame Zeichen auf 
Datenübertragungsfehler schließen.

ABER !!! Es gibt eine Ausnahme dieser Aussage.
Und zwar alles was "Deutsch" ist = "äöüÄÖÜß". Die werden fast immer auch 
bei perfekter Verbindung falsch angezeigt. Zeichen des norm-Acsii-Satz = 
32-127 Code sind i.d.R. kein Problem.

Um das richtig zu stellen, muss du dir die Zeichensatztabelle ansehen, 
und dann das Zeichen via CODE senden ans Display. Ist mir aber zu 
aufwendig. Deshalb suche ich Ersatzworte oder benutze Abkürzungen.
#6701753
Lesenswert?

Test schrieb:
> Läuft einmal gut, danach wird mir
> im Display immer mehr nach und nach nur Hieroglyphen angezeigt.

Hi,
ist da eine Systematik zu erkennen, oder reiner Zufall.
Im oberen Teildes Bildes ist "reiner Zufall" durch falsche 
Initialisiierung schon gleich zu Beginn.
Im unteren Teil ist zwar richtig initialisiert worden,
"nur" falsch geswappt worden beim Vierbit-Modus.
Das Character ROM holt sich dann die gespiegelte Nibblefolge.
Und das sind dann die "Sonderzeichen", oder Zeichen aus dem japanischen 
Kana-Satz.


ciao
gustav
Angehängte Dateien:
#6702191
Lesenswert?

Spess53 schrieb:
> Wie bekommst du dann das Display vernünftig initialisiert?

Ist es ja nicht. Deswegen die Bilder.
bis zum Achtbitmodus läuft die Routine ja klaglos durch.
Dann sind die "schwarzen Balken" schon mal weg.
Und die restlichen Ausgaberoutinen haben dann den Dreher drin.
Ab da läuft es falsch.
Zitat ISBN:9783486587906

ciao
gustav
Angehängte Dateien:
Gast #6703912
Lesenswert?

Schlaumaier schrieb:
> Um das richtig zu stellen, muss du dir die Zeichensatztabelle ansehen,
> und dann das Zeichen via CODE senden ans Display.

Für den Support von UTF8 Zeichen könnte man eine library verwenden die 
UTF8 Zeichen in den jeweiligen Zeichensatz konviertieren kann:
https://werner.rothschopf.net/202009_arduino_liquid_crystal_intro.htm

für HD44780, ST7070, SPLC780D1 003A, SPLC780D1 003A, SPLC780D1 002, 
AIP31068L Treiber ICs - und bald auch für die Zeichensätze im OLED 
LEC1621.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren