Hallo zusammen, habe heute mein Display+Controller erhalten und wollte
gleich mal loslegen. Mit folgendem Skatch:
1
#include<LiquidCrystal_I2C.h>
2
3
LiquidCrystal_I2Clcd(0x27,20,4);
4
5
voidsetup()
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
voidloop()
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.
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,.
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.
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 . !!!!
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.
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!
Test schrieb:> Was kann ich noch testen oder ist da etwas defekt?
- Richtiger Arduino in der IDE eingestellt?
- Richtiger COM Port für den Arduino eingestellt?
- Download ohne Fehlermeldungen?
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.
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.
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?
Es gibt anscheinend verschiedene LiquidCrystal_I2C Bibliotheken, die das
Display leicht unterschiedlich ansteuern. Benutzt du genau die von
deinem Lieferanten empfohlene?
LG, Sebastian
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.
Bin ich blind oder gibt es in dem Shop keinerlei Datenblatt zu dem
Display? Wer kauft so etwas?
Und bei der Bibliothek fehlt ebenfalls die Doku, zu welchem Display sie
kompatibel ist
(https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library).
Das ist doch Scheiße
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.
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"
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
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/
Hi
>Wir hatten doch letztens erst auch so ein Problem, wo nur die ersten 8>Zeichen angezeigt wurden.
Das ist die ganz normale Zeilenbelegung für ein 4x20 Display. Siehe
Tabelle S.5 in
https://www.lcd-module.de/produkte/dotmatrix/tabellen.html#c2368
MfG Spess
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.
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.
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.
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.
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.
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.
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?
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.
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.
#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
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?
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.
Test schrieb:> Was kann ich noch testen oder ist da etwas defekt?
Hi,
zeig mal Fotos von Display-Vorderseite und Rückseite.
Wir reden sonst womöglich aneinander vorbei.
Tipps hat TO ja nun schon genug bekommen.
ciao
gustav
Karl B. schrieb:> Tipps hat TO ja nun schon genug bekommen.
Vor allem deine "wertvollen" Tipps waren sehr hilfreich.
Karl B. schrieb:> Wir reden sonst womöglich aneinander vorbei.
Nein, du redest am TO vorbei.
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.
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ß
Test schrieb:> Jetzt eine andere Frage. Da die Controller alle die selbe Adresse haben,> kann man diese umprogrammieren?
Die haben Lötbrücken zur Einstellung der I2C-Adresse.
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
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
‚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.
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).
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.
Test schrieb:> Mit TinyWire läuft es problemlos.
Anstatt jetzt lange zu raten, woran es liegt, würde ich lieber mal mit
einem Oszilloskop nachmessen. Ein Blick auf die Signal-Flanken reicht
meist.
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...
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
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
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.