I²C-Display, warum nicht über I²C-Anschlüsse?

Hallo, da ich neu in diesem Forum bin, grüße ich erst mal die User freundlich.

Ich bin an die 60 und habe mir einen Arduino Uno zugelegt, um der Demenz entgegen zu wirken. :wink:

Realisieren möchte ich einen kleinen Mehrfach-Temperaturregler für mehrere Messstellen und mehreren Aktoren. Ein I²C-Display (16x2) angeschlossen, funktioniert auch einwandfrei, bis auf Umlaute.

Zur Ansteuerung des Displays habe ich zwei Fragen. Die Anschlüsse des I²C-Displays, Anzahl vier, Plus/Minus und 2x für den Bus, sind an den Analogen Eingängen A4 und A5 angeschlossen, nicht an SDA und SCL, die sich ja auf der Digitalen Seite befinden.
Ich dachte A4 und A5 sind nur analoge Eingänge. Sind das auch analoge Ausgänge?
Warum verwendet man in der LiquidCrystal_I2C.h nicht den entsprechenden Bus SDA und SCL? Dadurch könnte man die beiden Analogen Anschlüsse anderweitig nutzen.

Wenn mich da jemand erleuchten würde, wäre ich dankbar.

Vielen Dank
MfG

Der ATmega328 kann seine Pins multifunktional verwenden. Daher können A4 und A5 als analoge Eingänge, digitale Ein- und Ausgänge, aber auch für I2C verwendet werden. Die Anschlüsse SCL und SDA sind mit A4 und A5 einfach nur auf der Platine verbunden.

Damit willkommen im Forum!

Danke für die schnelle Antwort und dem Willkommensgruß.

agmue:
Die Anschlüsse SCL und SDA sind mit A4 und A5 einfach nur auf der Platine verbunden.

Da kommt eine nächste Frage bei mir auf. Und warum funktioniert das Display dann nicht, wenn ich die SDA und SCL-Anschlüsse statt A4 und A5 verwende?

Finnlay:
Da kommt eine nächste Frage bei mir auf. Und warum funktioniert das Display dann nicht, wenn ich die SDA und SCL-Anschlüsse statt A4 und A5 verwende?

Da ich mir nicht merken, welche Funktion A4 und A5 beim I2C-Bus haben, nutze ich immer SCL und SDA. Du sprichst doch von den Anschlüssen 13/GND/AREF/SDA/SCL?

sollte schon. Schau dir mall dein Board - miss mal stromlos die Verbindungen zwischen den PINs durch. Klappt einwandfrei (auf meinen Klonen).

agmue:
Du sprichst doch von den Anschlüssen 13/GND/AREF/SDA/SCL?

Ja, von diesen.

noiasca:
sollte schon. Schau dir mall dein Board - miss mal stromlos die Verbindungen zwischen den PINs durch. Klappt einwandfrei (auf meinen Klonen).

Ja, das stimmt. Ich habe meinen Fehler entdeckt. A5 ist SCL und A4 ist SDA. Die anschlüsse vom Display müssen also vertaucht werden.

Es geht somit auch mit diesen Anschlüssen.

Das bedeutet aber auch A4 und A5 können nicht anderweitig genutzt werden, wenn man den I²C-Bus verwendet, richtig?

Finnlay:
Das bedeutet aber auch A4 und A5 können nicht anderweitig genutzt werden, wenn man den I²C-Bus verwendet, richtig?

Richtig!

Finnlay:
Das bedeutet aber auch A4 und A5 können nicht anderweitig genutzt werden, wenn man den I²C-Bus verwendet, richtig?

Genau, können nicht genutzt werden.
Es ist manchmal auch problematisch ein I2C Devisce an SDA und SCL anzuschließen und ein anderes auf A4/A5. Besser alles auf eine der beiden Pins.

Ein I²C-Display (16x2) angeschlossen, funktioniert auch einwandfrei, bis auf Umlaute.

Diese Displays haben nur einen Teil-Ascii-Belegung der Buchstaben. Schau im Datenblatt des HD44780 um den richtigen Buchstabencode zu finden.
ascii: http://www.asciitable.com/
HD44780: Arduino with HD44780 based Character LCDs – Martyn Currey

Grüße Uwe

Danke für die Links. Harte Kost.
Muss ich erst mal durcharbeiten. Sehe aber noch nicht, wie ich einen deutschen Umlaut im Sketch maskieren muss.

Vielen Dank euch Helfern. Bin wieder etwas schlauer. :wink:

nur wenige meiner bilig-LCD's haben tatsächlich deutsche Umlaute. Außer der Reihe nach ausprobieren kannst nicht machen und wenn doch, musst trotzdem rausfinden, wie du das über LCD.print zum LCD schickst.

Aber schau dir mal das Beispiel der SpecialChars an und definiere dir deine eigenen Umlaute. Der Vorteil davon ist, dass du dann unabhängig vom verwendeten Zeichensatz bist und deine Umlaute garantiert auf allen LCDs funktionieren.

Finnlay:
Sehe aber noch nicht, wie ich einen deutschen Umlaut im Sketch maskieren muss.

Seite 17:

0xE1 = ä
0xF5 = ü
0xEF = ö

Das kannst du auch in einem String Literal direkt angeben. z.B.:

lcd.print("K\xE1se");

Aufpassen musst da aber wenn das nächste Zeichen nach dem Code auch eine Hex-Ziffer sein kann (also a-f). Da muss man dass dann so machen:

lcd.print("K\xF5""bel");

Auch oft gebraucht ist hier das Grad-Zeichen 0xDF

Recht herzlichen Dank an alle. Klasse

Hi

agmue:
Da ich mir nicht merken, welche Funktion A4 und A5 beim I2C-Bus haben, nutze ich immer SCL und SDA.

Kleine Eselsbrücke: A kommt vor L und 4 vor 5, somit liegt SDA auf A4 und SCL auf A5

MfG

Serenifly:
Seite 17:
https://www.sparkfun.com/datasheets/LCD/HD44780.pdf

0xE1 = ä
0xF5 = ü
0xEF = ö

Habe jetzt versucht auf diese Hexwerte zu kommen, laut dieser Tabelle wie angegeben. Komm ich nicht drauf.

ä = 1110 0100 = E4
ö = 1111 0110 = F6
ü = 1111 1100 = FC

Ä = 1100 0100 = C4
Ö = 1101 0110 = D6
Ü = 1101 1100 = DC

ß = 1101 1111 = DF

Wie kommst du auf die anderen Werte?

Finnlay:
Wie kommst du auf die anderen Werte?

Schaue mal in "ROM Code: A00".

agmue:
Schaue mal in "ROM Code: A00".

Okay, dann wurde mir mit "Seite 17" die falsche genannt.
Nachtrag: Da sind auch nicht alle Umlaute drin.
Danke

Es gibt den Treiberchip mit verscheidenen Fonts.
HD44780UA00FS mit "Japanese standard font"
und HD44780UA02FS mit "European standard font"
(Mir sind bisher nur welche mit A00 untergekommen.)

Dazu gibt es zwei Tabellen
auf Seite 17 für ROM Code: A00
auf Seite 18 für ROM Code: A02

Du musst den jeweils "richtigen" Code verwenden. Je nachdem, welchen Chp du hast.

Finnlay:
Nachtrag: Da sind auch nicht alle Umlaute drin.

Richtig erkannt :slight_smile:
Da kannst du dann mit den "custom characters" arbeiten. Man kann meist 8 eigene Zeichen generieren.

uxomm:
Du musst den jeweils "richtigen" Code verwenden. Je nachdem, welchen Chp du hast.

Dem Chip sieht man es nicht an. Auf dem Klecks ist nichts aufgedruckt.

uxomm:
Da kannst du dann mit den "custom characters" arbeiten. Man kann meist 8 eigene Zeichen generieren.

Muss ich mich zu schlau machen wie das geht und wie man die einbindet in einem Sketch. Hat jemand (du) evtl. einen Quellverweis?

Nochmals, recht herzlichen Dank

Schau mal in den Beispielen Deiner Lib. Bei dieser wird es so gemacht.
Das Beispiel muss immer zur Lib passen.

Gruß Tommy

Tommy56:
Schau mal in den Beispielen Deiner Lib.

Nach was soll ich da Ausschau halten?

Tommy56:
Bei wird es so gemacht.

Bei was?

Da war ja ein Link versteckt!