I2C Display Problem

Gast #6689096
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
Hallo,

Code sieht eig. Gut aus...
Hast du die Kontrastspannung eingestellt, ich denk mal das ist ein China 
Kracher aus der Bucht?!?

Dann sollte Auf der Platine sollte ein Poti sein welches diese Aufgabe 
übernimmt. Einfach mal dran drehen und schauen ob was angezeigt wird.
Gast
Kläre mal, ob diese Bibliothek überhaupt für dein Display geeignet ist.
Hast du die Pull-Up Widerstände und die Spannungspegel am I²C Bus 
geprüft?
Gast
Test schrieb:
> Die Adresse habe ich mit dem I2C Scanner ermittelt.
> Hintergrundbeleuchtung in an, aber ich sehe keinen Text.

Ist normal. Dreh an der Schraube (mit einen Schraubenzieher) an der 
Rückseite des Interface. Die Chinesen drehen die immer maximal auf,.
Gast
Habe am Kontrast schon geregelt, keine Veränderung.
Das Teile habe ich von Chhristians Technikshop und verschiedene 
Bibliotheken ausprobiert, immer das gleiche.
An die Pullup Widerstände dachte ich auch schonmal, auch wenn die 
Beispiele es nicht verwendet haben, habe ich es dennoch ausprobiert. 
Selbes Problem trotzdem.
Gast
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
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
Test schrieb:
> Was kann ich noch testen oder ist da etwas defekt?

- Stromversorgung angeschlossen?
- TWI Pins am Arduino verwendet?
- SCLK und SDATA vertauscht?

Nachdem wir weder Schaltplan noch Aufbau sehen: es müssen
4 Leitungen an den I2C-Display-Controller angeschlossen sein!
Gast
passt soweit alles und wenn der I2C Scanner die Adresse auslesen kann, 
denke ich, das alles richtig verbunden ist soweit. Denke schon mehr 
daran das der Controller bzw. das Display defekt sind. Da beim 
Kontrastregeln keine Sonderzeichen(oder was das sein soll) angezeigt 
werden.
Gast
Test schrieb:
> passt soweit alles und wenn der I2C Scanner die Adresse auslesen kann,
> denke ich, das alles richtig verbunden ist soweit. Denke schon mehr
> daran das der Controller bzw. das Display defekt sind.

Ja immer sind die anderen Schuld.
Vor dem Bildschirm kann der Fehler ja nicht sitzen.

Zeige deinen Aufbau.
Gast
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.
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
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.
Der TE möge sich den Unterschied zwischen 3,3V und 5V Logik zu Gemüte 
führen.

Diese I2C zu HD44780 Konverter haben meistens ICs die 3,3V Logik können, 
aber die HD44780 Displays können es nur selten. Da muss man die 
Spannungsversorgung zwischen Konverter und Display auftrennen.

Mach ich auch so und es funktioniert sehr gut.
Gast
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.
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
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"
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.
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
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
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.
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
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
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
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
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
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
Sobald ich die Entlötlitze da habe, werde ich den Adapter anlöten und 
beides separat testen. Meine Vermutung ist auch das der Adapter defekt 
ist, da alles andere ja doch irgendwie funktioniert. Welche Bibliothek 
verwendest du denn Schlaumaier, kann diese ja auch nochmal ausprobieren?
Gast
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
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
#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.
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ß.
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
Gast
Karl B. schrieb:
> Und wie gesagt mit "A" oder ohne "A" des PCF8574  ergibt auch
> unterschiedliche Adressen.

Labertasche!
Muss man jetzt jeden einzelnen Ignoranten darauf hinweisen dass
der TO mit einem Adress-Scanner bereits eine richtige,
funktionierende Adresse herausgefunden hat?
Gast
Und auch die Hintergrundbeleuchtung konnte laut TO geschaltet werden.

Ich würde die Platinen mal auf schlechte Lötstellen/Brücken 
kontrollieren, das ist da auch nicht so selten.
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
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
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
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
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
‚Es kann nur einen geben‘, dieses berühmte Zitat gilt auch hier.
Es wird versucht die ISR doppelt zu definieren, die ist IMO aber schon 
im Core drin. Oder beide Libs wollen die anlegen.
Gast
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
Test schrieb:
> Habe es Mal ausprobiert. Wire rein , Läuft einmal gut, danach wird mir
> im Display immer mehr nach und nach nur Hieroglyphen angezeigt.

Lässt auf eine schlechte i2c Verbindung schließen.

Sende öfters man ein CLEAR Befehl, der reinigt die Anzeige.
Gast
Test schrieb:
> Hehe, ja klar, muss es nur aus.meiner Schublade kramen ;)

Naja, wenn du da nix findest: Es gibt tatsächlich Leute, die haben so 
viele von den Dingern, dass de sich nicht anders zu helfen wissen, als 
sie zu verkaufen...
Gast
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.
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:
Gast
Hi

>nur, falls sich jemand an dem Wort "gespiegelt" stören sollte:
>Highnibble- und Lownibblevertauschung ist gemeint.

Wie bekommst du dann das Display vernünftig initialisiert?

MfG Spess
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
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

Eine eigene Frage? Dieser Thread ist über 5 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.