Forum: Mikrocontroller und Digitale Elektronik LCD-Display mit Arduino will nicht


von Athuro D. (athuro_d)


Lesenswert?

Hallo,
mache gerade meine ersten Schritte mit Arduinos und habe auch ein 
LCD-Dispay
20x4 welches ich eigentlich gerne ansteuern wollen würde. Habe das 
Display mit der Adresse 0x27 identifizieren können. Jetzt würde ich 
gerne was auf diesem Display anzeigen lassen, aber da tut sich leider 
nichts. Nur die erste und die dritte Zeile sind ausgefüllt. Mit diesem 
Code habe ich gearbeitet:

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

LiquidCrystal_I2C lcd(0x27, 20, 21);

void setup() {
    lcd.clear();
    lcd.begin(20, 4);
    lcd.backlight();
    lcd.setCursor(0, 0);
    lcd.print("Hallo");
}

void loop() {
}

Das Display ist auch bei Pin 20 und 21 angeschlossen, grad verwende ich 
den Arduino Mega, mit dem Uno hatte ich das selbe Problem. Es wird auch 
kein Fehler angezeigt und alles problemlos hochgeladen. Bin echt noch am 
Anfang also ein paar Tipps und eine einfache Erklärung wären super! 
Vielen Dank im voraus!

von Wastl (hartundweichware)


Lesenswert?

Athuro D. schrieb:
> Bin echt noch am
> Anfang also ein paar Tipps und eine einfache Erklärung wären super!

Zuerst zeigst du mal deinen Schaltplan und den Aufbau. Sonst
werden wir krass aneinader vorbeireden.

von Wastl (hartundweichware)


Angehängte Dateien:

Lesenswert?

Athuro D. schrieb:
> LiquidCrystal_I2C lcd(0x27, 20, 21);

Hier gibt man nicht die Pin-Nummern an sondern die Anzahl
der Zeilen und Characters pro Zeile.

Das Display schliesst man genau an den I2C-Pins des jeweiligen
Controllers (Arduino) an. Plus Stromversorgung.

Es gibt so viele Maker-Vorschläge wie das zu machen ist, warum
fängst du nicht mit einem Code von dort an? Copy&Paste solltest
du doch noch schaffen, auch wenn du das alles nicht verstehst.

von Axel H. (hippie_1954)


Lesenswert?

Sag mal Arthuro,
Hat wastl nicht recht, erst mal Grundlagen.

Sein Beispiel ist gut dokumentiert.
Was kommt bei deinem Aufbau raus, Nix/Hallo ...
Wenn da Hallo kommt, dann ist das schon mal halbwegs richtig 
angeschlossen
Dann würde ich probieren:
 lcd.setCursor(1, 1);
 lcd.print("Hallo1");
 lcd.setCursor(2, 2);
 lcd.print("Hallo2");
usw.
den Rest findest dann schon selber raus!
LG
A.H

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Gelegentlich stimmt die in der Produktbeschreibung angegebene 
I2C-Adresse nicht oder der User schließt an den falschen Pins an.

In den Beispielen der Arduino-IDE gibt es auch einen I2C-Scanner. Lade 
den mal auf den Arduino und lass ihn laufen. Dann siehst du, ob das 
Display überhaupt richtig angeschossen ist und welche Adresse es hat.

Bevor das nicht funktioniert, brauchst du garnicht weitermachen ...

von Manfred P. (pruckelfred)


Lesenswert?

Wastl schrieb:
> Athuro D. schrieb:
>> LiquidCrystal_I2C lcd(0x27, 20, 21);
> Hier gibt man nicht die Pin-Nummern an sondern die Anzahl
> der Zeilen und Characters pro Zeile.

Wenn das denn mal so einfach wäre, das hängt vom I2C-Adapter und der 
Library ab.
Bei mir steht
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
und eine Weile später
lcd.begin(20, 4);
lcd.print("Tach Manfred :-)");

Wastl schrieb:
> Es gibt so viele Maker-Vorschläge wie das zu machen ist, warum
> fängst du nicht mit einem Code von dort an?

Warum soll man selbst forschen, wenn doch fragen im Internet einfacher 
scheint?

Axel H. schrieb:
> Dann würde ich probieren:
>  lcd.setCursor(1, 1);
>  lcd.print("Hallo1");
>  lcd.setCursor(2, 2);
>  lcd.print("Hallo2");

Ich habe gerade vor ein paar Stunden mal wieder Arduino bespielt, mit 
einem 1602-LCD. Ich habe aber auch 2004 mit I2C in Betrieb.

SetCursor beginnt mit Null, wie in der Computerei üblich.
Es geht also oben links mit 0,0 los und die vierte Zeile bei 3,0.

"lcd.setCursor(2, 2)" wäre dann die dritte Stelle der dritten Zeile.

von Athuro D. (athuro_d)


Angehängte Dateien:

Lesenswert?

So schaut das ganze Konstrukt aus. Am Display ist auf der Rückseite ein 
Transferboard. Verbunden hab ich GND - GND, VCC - 5V, SDA - SDA Pin 20, 
SCL - SCL Pin 21, hoffe das hilft

von Athuro D. (athuro_d)


Lesenswert?

Axel H. schrieb:
> Was kommt bei deinem Aufbau raus, Nix/Hallo ...

Es verändert sich nichts am Display

von Rainer W. (rawi)


Lesenswert?

Athuro D. schrieb:
> Jetzt würde ich
> gerne was auf diesem Display anzeigen lassen, aber da tut sich leider
> nichts. Nur die erste und die dritte Zeile sind ausgefüllt.

Wieso sind dann die erste und die dritte Zeile ausgefüllt (und mit was)?

Athuro D. schrieb:
> So schaut das ganze Konstrukt aus.

Ich sehe keine Pull-Up Widerstände für den I2C. Sind die in deinem 
Konstrukt irgendwo vorhanden?
Entdeckt der I2C-Scanner aus den Arduino-Beispielen deinen I2C-Umsetzer?
Die Kontrastspannung vom Display ist passend eingestellt?

: Bearbeitet durch User
von Jörg R. (solar77)


Lesenswert?

Rainer W. schrieb:
> Athuro D. schrieb:
>> Jetzt würde ich
>> gerne was auf diesem Display anzeigen lassen, aber da tut sich leider
>> nichts. Nur die erste und die dritte Zeile sind ausgefüllt.
>
> Wieso sind dann die erste und die dritte Zeile ausgefüllt (und mit was)?

Bei einem 4*20 DOT-Matrix-Display sind die Zeilen 1 und 3 eine Zeile, 
aus Sicht des Controllers. Gleiches gilt für die Zeilen 2 und 4.

Anders ausgedrückt ist es aus Sicht des Controllers ein 2*40 Display.

http://www.sprut.de/electronic/lcd/index.htm#4x20

http://www.sprut.de/electronic/lcd/index.htm

: Bearbeitet durch User
von Christian M. (christian_m280)


Lesenswert?

Rainer W. schrieb:
> Wieso sind dann die erste und die dritte Zeile ausgefüllt (und mit was)?

Nicht initialisiert!

Gruss Chregu

von Athuro D. (athuro_d)


Lesenswert?

Frank E. schrieb:
> In den Beispielen der Arduino-IDE gibt es auch einen I2C-Scanner. Lade
> den mal auf den Arduino und lass ihn laufen.
Habe ich gemacht, da kam ich dann eben auf die Adresse 0x27.

: Bearbeitet durch User
von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

Athuro D. schrieb:
> Hallo, mache gerade meine ersten Schritte mit Arduinos und habe auch ein
> LCD-Dispay 20x4 welches ich eigentlich gerne ansteuern wollen würde.

Na, dann hast Du Dir ja gleich etwas ausgesucht, was für die ersten 
Schritte eher unpassend/ungeeignet ist. Diese Displays müssen in der 
Regel alle am Anfang initialisiert werden.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

> am Anfang initialisiert
das sollte mit der eingangs gezeigten Software
    lcd.clear();
    lcd.begin(20, 4);
    lcd.backlight();
    lcd.setCursor(0, 0);
erledigt worden sein.

Und den I2C-Scanner hat er auch benutzt
> Habe das Display mit der Adresse 0x27 identifizieren können.

stand alles schon im ersten Post.

Die Frage, ob die 1. und 3. Zeile sinnvollen Text enthält oder nur alle 
Pixel leuchten, hat Athuro noch nicht beantwortet. Nur letzteres könnte 
einen Initialisierungsfehler bedeuten.

Zum Schaltplan eine Frage: blau ist rot und plus ist minus? der blaue 
steckt in +5V und der rote in GND. Dem Strom ist die Farbe natürlich 
egal.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Christoph db1uq K. schrieb:
> Dem Strom ist die Farbe natürlich egal.

Anders gesagt: Elektronen sind sowieso farbenblind und blau ;-)

von Zino (zinn)


Lesenswert?

Frank E. schrieb:
> Gelegentlich stimmt die in der Produktbeschreibung angegebene
> I2C-Adresse nicht oder der User schließt an den falschen Pins an.

Und gelegentlich wurde vom Hersteller vergessen, die 
Adresskonfigurationseingänge (A0 bis A2) des PCF8574 an irgendwas 
anzuschließen. Das hat zur Folge, daß die Adresse nicht lange 0x27 
bleibt.

von Helmut -. (dc3yc)


Lesenswert?

Hast du auch mal das Kontrastpoti von Anfang bis Ende durchgedreht?

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Die Kontrasteinstellung ist ein Argument!

Ist mir mal vor Jahren passiert: Ich dachte das Display funktioniert 
nicht und hab tagelang am Code herumgemacht ... bis ich zufällig auf die 
Idee mit dem Kontrast kam und feststellen musste, dass es vom ersten 
Moment an funktioniert hat, ich habs bloß nicht gesehen :-(

Stell mal den Kontrast (Spannungsteiler?) so ein, dass du die einzelnen 
Zeichenpositionen schwach aber deutlich als Rechteck sehen kannst ...

von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

Sehen die Zeilen so aus? Das wäre der Kontraststeller

https://geekysoumya.com/arduino-i2c-lcd-usage-problem-solving-guide/

Vielleicht sind SDA und SCL vertauscht? Auf dem Fritzing-"Schaltplan" 
verschwinden die Leitungen hinter dem Display, da kann man nichts 
erkennen.

: Bearbeitet durch User
von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Christoph db1uq K. schrieb:
> Sehen die Zeilen so aus? Das wäre der Kontraststeller
>
> https://geekysoumya.com/arduino-i2c-lcd-usage-problem-solving-guide/
>
> Vielleicht sind SDA und SCL vertauscht? Auf dem Fritzing-"Schaltplan"
> verschwinden die Leitungen hinter dem Display, da kann man nichts
> erkennen.

Ja, das ist der richtige Steller. Wenn SDA und SCL vertauscht wären, 
würde der I2C-Scanner nichts finden, das kann man m.E. ausschließen.

Gemäß der Strategie des "systematischen Einkreisens" von Fehlern würde 
ich nun auf falsche Steuerbefehle an das Display tippen. Oft werden die 
Displays für den Amateur-Bereich ja quasi "nebenbei" aus gerade 
vorhandenen Komponenten zusammengeklöppelt. Es ist also nicht völlig 
unwahrscheinlich, dass am Display ein anderer Controller klebt, als 
angenommen.

Bietet die verwendete Lib da Auswahl bzw. Einstellmöglichkeiten? Oder 
auch mal eine andere Lib ausprobieren ...

Ich hab auch schonmal einfach Zufallszahlen in ein fremdes Display 
gepumpt, manchmal zeigen sich dann irgendwelche kryptischen Zeichen. 
Damit weiss man dann zumimindest, dass es prinzipiell funktioniert :-)

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Stimmt, der Scanner hat ja funktioniert.
Der Adapter hat doch meistens einen PCF8574A von Philips/NXP drauf. Da 
kann die Software nicht viel falsch machen, es sei denn, die 
Portausgänge sind unterschiedlich verschaltet.
Hier ein Schaltplan:
https://content.instructables.com/F6G/GQ4H/HSTP2N7H/F6GGQ4HHSTP2N7H.png
aus:
https://www.instructables.com/LCD-display-I2C-adapter-for-Arduino-with-PCF8574A/

von Rainer W. (rawi)


Lesenswert?

Christoph db1uq K. schrieb:
> Da kann die Software nicht viel falsch machen, es sei denn, die
> Portausgänge sind unterschiedlich verschaltet.

Genau das.
Die Software kann sehr viel falsch machen, wenn die Ports des PCF8574A 
auf dem Modul anders verschaltet sind, als die Software annimmt. Dann 
funktioniert nicht einmal die Initialisierung.
Ein funktionierender I2C-Zugriff auf den Portexpander ist eine notwendig 
Bedingung, aber lange noch nicht hinreichend, damit sich das eigentliche 
Display korrekt ansprechen lässt. Wenigstens 6 der Port-I/Os müssen 
passend zur Library bzw. Konfiguration in der Software verdrahtet sein. 
Von den anderen beiden kann RW normalerweise auch fest auf W verschaltet 
sein und das Steuersignal für die LED ist optional.

Das einfachste wird sein, sich die Signale am Port vom Display mit dem 
Logikanalysator anzugucken.

: Bearbeitet durch User
von Jörg (lixtop)


Angehängte Dateien:

Lesenswert?

Athuro D. schrieb:
> So schaut das ganze Konstrukt aus. Am Display ist auf der Rückseite ein
> Transferboard. Verbunden hab ich GND - GND, VCC - 5V, SDA - SDA Pin 20,
> SCL - SCL Pin 21, hoffe das hilft

Moin,

was du da verbunden hast ist +5V, GND, RX und TX. Nix SCL oder SDA.

Im Anhang die Pin-Belegung und ein Beispiel.

[Edit] Das Beispiel sollte nur 1x da sein, sorry.

: Bearbeitet durch User
von Wastl (hartundweichware)


Lesenswert?

Jörg schrieb:
> RX und TX. Nix SCL oder SDA.

Er spricht aber vom Arduino Mega.
Wer lesen kann ist klar im Vorteil. Du redest Käse.

Athuro D. schrieb:
> Arduino_mit_LCD-Display.png

von Rahul D. (rahul)


Lesenswert?

Jörg schrieb:
> was du da verbunden hast ist +5V, GND, RX und TX. Nix SCL oder SDA.

Wachteleier und Straußeneier vergleichen?
Das eine ist ein Arduino MEGA2560 und deins ein UNO...

Edit: Und der I²C-Scanner findet "das Display" auch.

: Bearbeitet durch User
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Athuro D. schrieb:

> gerne was auf diesem Display anzeigen lassen, aber da tut sich leider
> nichts. Nur die erste und die dritte Zeile sind ausgefüllt.

Ganz klar:

1) Kontrast ist gut genug eingestellt, um die Funktion checken zu 
können. Jegliche Änderungen hier sind nur noch Optimierung.

2.a) Die Init-Sequenz erricht den Controller nicht.-> Probleme bei der 
Verdrahtung oder bei der Wahl der I2C-Adresse, oder bei der 
Implementierung des I2C-Unterbaus.

2.b) Die Init-Sequenz paßt nicht zum Controller. Recht unwahrscheinlich. 
Alle üblichen Implementierungen versuchen schon, das HD14780-kompatibel 
hinzubekommen und alle Displays versuchen, zumindest diesbezüglich 
100%ig HD1470-kompatibel zu sein.
Bei Betrieb über I2C haben die Implementierungen auf der Client-Seite 
sogar fast keine andere Wahl als kompatibel zu sein, weil dann das 
Timing "nach unten" keine Rolle mehr spielt. Der Client kann also nicht 
mehr zu schnell sein. Und er kann und darf beliebig langsam sein, das 
war schon immer so.

3) Das Target ist garnicht HD14780-kompatibel (relativ unwahrscheinlich, 
aber nicht unmöglich). Dann wird's schwierig. Man muß was exlizit 
passendes finden. Oder selber schreiben...

von Wastl (hartundweichware)


Lesenswert?

Ob S. schrieb:
> Die Init-Sequenz erricht den Controller nicht.-> Probleme bei der
> Verdrahtung oder bei der Wahl der I2C-Adresse, oder bei der
> Implementierung des I2C-Unterbaus.

Wenn man keine Init-Sequenz aufruft kann sie auch nicht den
Display-Controller erreichen. Im Beispiel das ich gepostet
habe wird ein <lcd.init()> aufgerufen welches ich an anderer
Stelle nicht finde. Aber dass man auf solche Trivialitäten
erst hinweisen muss ist schon traurig.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

> Trivialitäten

Hier gibt es kein init, nur begin:
https://arduinogetstarted.com/reference/library/arduino-lcd-library

Arduino - lcd.begin()
Description
Initializes the interface to the LCD screen, and specifies the 
dimensions (width and height) of the display. begin() needs to be called
before any other LCD library commands.
syntax
lcd.begin(cols, rows)

und das steht auch in Athuros ersten Post.
Eventuell darf das lcd.clear erst nach dem begin "before any other" 
folgen.

aber vielleicht muss es in seinem Programm ja init heissen, wir haben 
noch nicht erfahren, woher die Software stammt.

https://www.arduino.cc/reference/en/libraries/liquidcrystal-i2c/
sehr geschickt, es gibt hier beides in keywords.txt:
init  KEYWORD2
begin  KEYWORD2

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Christoph db1uq K. schrieb:
> https://www.arduino.cc/reference/en/libraries/liquidcrystal-i2c/
> sehr geschickt, es gibt hier beides in keywords.txt:
> init  KEYWORD2
> begin  KEYWORD2

Was findest du daran so bemerkenswert. Init() ruft doch automatisch 
begin() auf.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Es gibt mehrere LiquidCrystal_I2C auf Github:

https://github.com/marcoschwartz/LiquidCrystal_I2C
https://github.com/johnrickman/LiquidCrystal_I2C
https://github.com/lucasmaziero/LiquidCrystal_I2C
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
wahrscheinlich noch weitere.

Anscheinend gibt es Unterschiede, bei mindestens einer muss man sich 
erst registrieren, um näheres zu erfahren.
Welche hat Athuro benutzt?

von Wastl (hartundweichware)


Lesenswert?

Christoph db1uq K. schrieb:
> Es gibt mehrere LiquidCrystal_I2C auf Github:

Es gibt eine "Lib" auf der Arduino-Seite, dazu gibt es eine
Referenz, und mit diesen beiden sollte man glücklich werden
(können).

https://www.arduino.cc/reference/en/libraries/liquidcrystal-i2c/

Wenn man nicht glücklich werden will nimmt man was anderes
und schlägt sich ggf. mit einem Sprach-Wirrwarr herum, was
unter Anderem zu diesen vielen Beiträgen führt.

von Athuro D. (athuro_d)


Lesenswert?

Christoph db1uq K. schrieb:

> Die Frage, ob die 1. und 3. Zeile sinnvollen Text enthält oder nur alle
> Pixel leuchten, hat Athuro noch nicht beantwortet. Nur letzteres könnte
> einen Initialisierungsfehler bedeuten.
1. und 3. Zeile enthalten keinen sinnvollen Text und die Pixel leuchten 
einfach nur, wenn ich den Kontrast runterdrehe verschwinden die Pixel in 
der 1. und 3. Zeile, erscheinen tut dann aber am Display trotzdem 
nichts, wenn ich den Code uploade

> Zum Schaltplan eine Frage: blau ist rot und plus ist minus? der blaue
> steckt in +5V und der rote in GND. Dem Strom ist die Farbe natürlich
> egal.
Ja der blaue von 5V zu VCC und der rote von GND zu GND, die Farben auf 
dem Bild stimmen nicht mit den echten überein, sind halt einfach Female 
2 Male Long Kabeln.

von Athuro D. (athuro_d)


Lesenswert?

Helmut -. schrieb:
> Hast du auch mal das Kontrastpoti von Anfang bis Ende durchgedreht?

Ja hab ich mit dem Schraubenzieher schon komplett durchgedreht, zwar 
verschwinden dann irgendwann die Kästchen in der 1. und 3. Zeile, auf 
dem Display erscheint dann trotzdem nix, hab den Code schon bei 
unterschiedlichen Kontrasteinstellungen laufen lassen, getan hat sich 
aber bis jetzt nix

von Athuro D. (athuro_d)


Lesenswert?

> Es gibt eine "Lib" auf der Arduino-Seite, dazu gibt es eine
> Referenz, und mit diesen beiden sollte man glücklich werden
> (können).

Genau hab die Lib von Arduino verwendet, glaube die sollte ja eigentlich 
auch ausreichend sein oder? Den Code hab ich selber mit Unterstützung 
von Chatgpt zusammengebaut

von Rainer W. (rawi)


Lesenswert?

Athuro D. schrieb:
> erscheinen tut dann aber am Display trotzdem nichts, wenn ich den
> Code uploade

Dann ist es jetzt allmählich Zeit, das Problem systematisch anzugehen 
und nicht einfach zu erwarten, dass irgendein LCD mit irgendeinem 
I2C-Adapter mit irgendeiner Bibliothek funktioniert.
Besitzt du irgendwelche Messmittel, um zeitaufgelöst Signale zu 
betrachten (LA, Oszi)?
Die Datenblätter zu den Bausteinen auf deinen Modulen könnten auch 
helfen.

Athuro D. schrieb:
> Den Code hab ich selber mit Unterstützung von Chatgpt zusammengebaut

Dann kann an dem Code ja nichts falsch ein ;-(

: Bearbeitet durch User
von Εrnst B. (ernst)


Lesenswert?

Athuro D. schrieb:
> Den Code hab ich selber mit Unterstützung
> von Chatgpt zusammengebaut

Dann zeig den doch mal. Eigentlich funktionieren diese Displays mit der 
Arduino-Lib sofort out-of-the-box. Super simpel, ein Mensch kann da 
eigentlich garnichts falsch machen. Die "KI" ist da vielleicht 
erfinderischer.

Oder probier mal den Beispiel-Code zu der Lib, und lass ChatGPT da NIX 
dran ändern, Adresse 0x27 steht da schon drinnen, 20×4 Zeilen auch 
schon:

https://github.com/johnrickman/LiquidCrystal_I2C/blob/master/examples/HelloWorld/HelloWorld.pde

von Wastl (hartundweichware)


Lesenswert?

Athuro D. schrieb:
> Genau hab die Lib von Arduino verwendet

Und warum verwendest du dann nicht den im Library Archiv
enthaltenen Beispielcode. Genau der ist doch kompatibel
mit der Library. Man braucht nichts tun ausser die LCD
Parameter anzupassen.

von Rolf (rolf22)


Lesenswert?

Christoph db1uq K. schrieb:
> Eventuell darf das lcd.clear erst nach dem begin "before any other"
> folgen.

Ich kenne die benutzte Lib nicht. Aber üblicherweise wollen Arduino-Libs 
für Datenübertragungen, dass man zu allererst ein begin() aufruft.
Das begin() initialisiert zunächst mal den I2C-Controller im µP, bevor 
es das LCD über diesen Bus ansprechen kann. Wenn man vorher etwas mit 
dem uninitialisierten I2C-Controller macht, also z. B. lcd.clear(), dann 
muss man schon Glück haben, wenn es nicht in die Hose geht.

von Athuro D. (athuro_d)


Lesenswert?

Εrnst B. schrieb:
> Athuro D. schrieb:
> Oder probier mal den Beispiel-Code zu der Lib, und lass ChatGPT da *NIX*
> dran ändern, Adresse 0x27 steht da schon drinnen, 20×4 Zeilen auch
> schon:
>
> 
https://github.com/johnrickman/LiquidCrystal_I2C/blob/master/examples/HelloWorld/HelloWorld.pde

Der Code hat tatsächlich funktioniert! Vielen Dank für die Hilfe, ich 
dachte bei solchen simplen Dingen kann Chatgpt schon helfen, aber 
anscheinend hab ich da wohl irgendeinen Blödsinn gebaut. Auch Danke an 
alle anderen die sich in den letzten Tagen mit meinem Problem befasst 
haben, sehr nettes und kompetentes Forum :)

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Ok das heisst, die Verbindung zum I2C-Port PCF8574 funktioniert noch, 
aber das Display selbst fühlt sich nicht angesprochen. Die zwei weißen 
Zeilen sind einfach ein Einschaltzustand des LCD ohne Initialisierung.

Wastls "offizielle" Library ist die Version von Frank de Brabander / 
Marco Schwartz. Das ist leider die mit "Status: Archived This repository 
has been transfered to GitLab at https://gitlab.com/tandembyte/LCD_I2C"; 
und dort wollen sie erst mal eine Registrierung.

In dem ohne Registrierung hier noch downloadbaren zip-File "1.1.2 
(latest)" stehen drei .pde  Beispielprogramme, das kleinste ist 
HelloWorld.pde.
Darin, wie es Wastl schreibt, der init-Befehl als allererstes:
lcd.init();  // initialize the lcd
Dann folgt eine Textausgabe mit Cursorsteuerung in beiden Zeilen.

nochmal zum Vergleich Athuros Programm aus dem Eingangspost
LiquidCrystal_I2C lcd(0x27, 20, 21);
    lcd.clear();
    lcd.begin(20, 4);
    lcd.backlight();
    lcd.setCursor(0, 0);
    lcd.print("Hallo");

und in HelloWorld.pde

zuerst die I2C-Schnittstelle "address to 0x27 for 16 chars and 2 line":
LiquidCrystal_I2C lcd(0x27,20,4);
komisch, die 16*2 sehe ich da nicht, klingt eher nach 20*4

ab hier sollte das Display zuhören:
  lcd.init();                      // initialize the lcd
  lcd.init(); Wieso kommt danach dasselbe nochmal? Schreibfehler?
  lcd.backlight();
  lcd.setCursor(3,0);
  lcd.print("Hello, world!");
  lcd.setCursor(2,1);
  lcd.print("Ywrobot Arduino!");

Das sind unterschiedliche LCD-libraries. Schon die I2C-Parameter sind 
verschieden, und dann lcd.begin / lcd.init.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Rolf schrieb:
> Aber üblicherweise wollen Arduino-Libs
> für Datenübertragungen, dass man zu allererst ein begin() aufruft.

Üblicherweise ist es kein Fehler, einmal kurz in die Bibliothek rein zu 
gucken, z.B. werden in o.g. Bibliothek beide begin()-Routinen (I2C aka 
wire und LCD) in der init() aufgerufen.
https://github.com/johnrickman/LiquidCrystal_I2C

Was in Arduino-Libs üblich ist, spielt für eine spezielle Bibliothek 
überhaupt keine Rolle (s. Beispiel).

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Mein letzter Text hat sich jetzt mit Athuros Post überschnitten. 
Johnrickman scheint mit der "offiziellen" Library eher kompatibel zu 
sein, auch die Ungereimtheiten im HelloWorld sind identisch. Doch das 
doppelte lcd.init(); ist beseitigt, aber die 16*2 stehen noch im 
Kommentar.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Christoph db1uq K. schrieb:
> ab hier sollte das Display zuhören:
>   lcd.init();                      // initialize the lcd

Wie meinst du das?
Vor Aufruf der lcd.init() funktioniert noch nicht einmal die 
Kommunikation vom µC zum I2C-Portexpander.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Hier ist der Ablauf einzeln erklärt:
https://arduinogetstarted.com/tutorials/arduino-lcd-20x4

erst die LCD-library einbinden:
#include <LiquidCrystal_I2C.h> // Library for LCD

Dann die I2C-Adresse und Typ des LCD angeben:
 - stimmt, damit ist noch nichts angesprochen nur deklariert.
LiquidCrystal_I2C lcd(0x27, 20, 4); // I2C address 0x27, 20 column and 4 
rows

jetzt die eigentliche Initialisierung, danach kann das LCD angesprochen 
werden, dabei wird als erstes der PCF8574 eingestellt und noch mehrfach 
geändert:
lcd.init(); //initialize the lcd

Licht an, sonst ist es schlecht lesbar:
lcd.backlight(); //open the backlight

dann endlich die Textausgabe, wenn nötig mit Cursorsteuerung.

Der "lcd.init"  muss einiges an Zeitverzögerungen enthalten. Wenn man 
die nicht befolgt kann die Initialisierung schiefgehen. Im Datenblatt 
zum HD44780 (Ob S. hat ihn dreimal falsch geschrieben) sind das 
mindesten 20 Millisekunden. Im Vergleich zu den 16 MHz Takt des Arduino 
"eine halbe Ewigkeit".
https://de.wikipedia.org/wiki/HD44780
https://cdn-shop.adafruit.com/datasheets/HD44780.pdf
auf S.46 steht das Initialisierungsdiagramm

: Bearbeitet durch User
von Gerhard O. (gerhard_)


Lesenswert?

Moin,

Hier die TWI Welt von Gerhard😊:

Ich rate, bei fremden Libs und Modulen mit Libs unbedingt IMMER eines 
der meist mitgelieferten Beispiele vorschriftsmäßig zu beschalten und 
erst ausprobieren, ob das "out of the box" läuft. Wenn so weit alles on 
Ordnung ist, dann erst mit eigenen Ausflügen die Welt nach eigenen 
Ermessen zu erforschen:-)

Immer sicherstellen, daß die vorgeschriebenen Pullup Widerstände 
tatsächlich angeschlossen sind und sich die Werte im Rahmen der üblichen 
Vorgaben bewegen. Bei vielen Teilnehmern empfiehlt es sich die Werte im 
erlaubten Rahmen kleiner zu machen.

Aufpassen, daß TWI Taktfrequenzen für die zu verbindenden Busteilnehmer 
zusammenpassen. Im Zweifelfall immer mit "Langsam" wie 30-100khz 
anzufangen.

Bei SMB TWI beachten, daß hier eine minimale Taktraten Vorgabe 
existiert.

Bei zuverlässigen Designs immer testen welche Busteilnehmer sich vom 
Host Zwangs-rücksetzen lassen. Datenblätter geben meist darüber 
Aufschluß. Wenn ein Busteilnehmer da nicht mitspielt, dann die HW 
Beschaltung so zu gestalten, daß so ein Teil durch Power-Cycling wieder 
"vernünftig" gemacht werden kann und sorgfältig testen.

TWI Verbindungen sollten nicht unnötig lang sein, um unnötige kapazitive 
Busbelastungen minimal zu halten. SDA/SCL sollten nach Möglichkeit auf 
keinen Fall verdrillt sein, um die Möglichkeit von "Übersprechen" zu 
minimieren. Auch ist es bei der Flachbandkabel Pin-Auswahl besser, SDA 
und SCL auseinander zu halten, anstatt sie nebeneinander zu legen. (Ich 
habe übrigens mit guten Erfolg, Vier-Leiter Telefonstrippen als TWI 
Verbinder, z.B. bei LCD Displays mit TWI IO-Expander Verbindung wie die 
handelsüblichen PCF8574 Bords, verwendet).

Bei TWI empfiehlt es sich immer, einen TWI Scanner zur Verfügung zu 
haben, um bestätigen zu können, daß alle Busteilnehmer wie erwartet, 
erkannt werden. Es gibt dafür zahlreiche Beispiele.

Bei gewissen TWI Käfern wie z.B. EEPROMSs kann manchmal noch eine 
unerwartete zusätzliche Adresse erkannt werden. Das kommt manchmal vor, 
um auf spezielle Bereiche solcher Individuen zugreifen zu können. Das 
ist zwar relativ selten, aber nicht unmöglich. (bei EEPROMS auf manchen 
Chinesischen DS3231 RTC Modulen konnte ich solches Verhalten in der Tat 
beobachten).

Immer aufpassen, die zugehörigen Port TWI Pins richtig anzuschliessen. 
Bei uC mit mehr als einer TWI Schnittstelle sich zu vergewissern, wie 
man deswegen die Initialisierung konfigurieren muß, damit auf den 
beabsichtigten Port zugegriffen wird.


Glückwunsch, daß es jetzt funktioniert.

Duck und weg...
Gerhard

: Bearbeitet durch User
von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Angehängte Dateien:

Lesenswert?

Athuro D. schrieb:
> Den Code hab ich selber mit Unterstützung von Chatgpt zusammengebaut

Das nächste mal die 'Bots, Chats & Co' am besten nur dahingehend fragen, 
an wen man sich bei einem Problem eventuell wenden könnte, denn auf sich 
selbst werden sie in der Antwort vermutlich nicht verweisen – im Anhang 
ein Screenshot. Mit jeder Generation wird es immer lustiger und absurder 
auf dieser Welt.

: Bearbeitet durch User
von Gerhard O. (gerhard_)


Lesenswert?

Gregor J. schrieb:
> Athuro D. schrieb:
>> Den Code hab ich selber mit Unterstützung von Chatgpt zusammengebaut
>
> Das nächste mal die 'Bots, Chats & Co' am besten nur dahingehend fragen,
> an wen man sich bei einem Problem eventuell wenden könnte, denn auf sich
> selbst wird er in der Antwort vermutlich nicht verweisen – im Anhang ein
> Screenshot. Mit jeder Generation wird es immer lustiger und absurder auf
> dieser Welt.

Was ist an der Neugierde mit GPTs so schlimm? Zur Zeit ist es eben noch 
eine Neuheit. Ob es in solchen Fällen sinnvoll ist, mag dahingestellt 
sein. Ich würde es nicht ganz in einem so negativen Licht sehen.

(Die wirklichen Gefahr kommt vom sozialen politisch motivierten 
organisiert betriebenen Missbrauch von KI Werkzeugen durch systematische 
Manipulation der Schwachstelle Mensch. Das wird uns in voraussehbarer 
Zeit durch fabrizierte Lügengespinste die größten Probleme verursachen. 
Die Bösewichte lecken sich doch schon lange ihre Finger nach solchen 
Werkzeugen. Und jetzt hat man ihnen in naiverweise eines der schlimmste 
Instrumente in der Geschichte der Menschheit, noch frei dazu, in deren 
Hand gegeben)

"Wer keinen Spieltrieb, wie ein Kind mehr, sein Eigen nennen kann, ist 
technisch gesehen, schon fast tot":-)

: Bearbeitet durch User
von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

Gerhard O. schrieb:
> Ob es in solchen Fällen sinnvoll ist

Genau in diesem Fall – und in vielen ähnlichen Fällen auch – ist es eben 
überhaupt nicht sinnvoll. Wer das nicht differenzieren kann, der sollte 
seine Fragen am besten anders formulieren, wie von mir oben schon 
erwähnt worden ist.

_
Gerhard O. schrieb:
> Was ist an der Neugierde mit GPTs so schlimm?

Es wurde von mir auch nicht behauptet, dass an der Neugierde mit Bots 
etwas schlimmes sei, insofern ist der vermeintliche Erklärungsversuch 
auch ein Fehlgriff – einfach nochmal in Ruhe durchlesen und nachsinnen.

von Harald K. (kirnbichler)


Lesenswert?

Gerhard O. schrieb:
> Was ist an der Neugierde mit GPTs so schlimm?

Wenn man das einfach nur so aus Jux macht, meinetwegen. Wenn man aber 
versucht, reale Probleme damit zu lösen, und sei es auch nur so eine 
Bastelübung wie hier, dann gibt man die eigenen Fähigkeiten an der Tür 
ab. Stell' Dir mal vor, der Kram hätte funktioniert, ohne Fehler. Was 
wäre davon gelernt worden? Nichts.
Und je mehr fertig vorverdautes Zeug aus irgendeinem ChatBlubber kommt, 
desto weniger versteht dessen Nutzer, was da eigentlich passiert.

Wenn es dann nach einiger Gewöhnung doch mal klemmt, ist der Nutzer 
komplett hilflos, denn er hat selbst keinerlei Fähigkeiten entwickelt, 
außer vielleicht "Prompts" zu formulieren.

von Manfred P. (pruckelfred)


Angehängte Dateien:

Lesenswert?

Gerhard O. schrieb:
> Hier die TWI Welt von Gerhard😊:

Viel zu viele Bedenken, I2C am Arduino ist gutmütig, wenn man sich nicht 
extrem dämlich anstellt.

Auf dem Bild bedient der Nano fünf I2C-Komponenten, das sind 
China-Platinchen mit PullUp am I2C drauf, je 10kOhm. Die Topologie ist 
ein Stern mit fünf Enden geworden, verkabelt mit den "DuPont-Kabeln" vom 
Ali.

Falls dort ein Modul ausfallen sollte, käme man dank der 
Steckverbindungen überall gut heran.

Recht hast Du natürlich damit, dass man bei externen Libs erstmal die 
mitgelieferten Beispiele austestet. Daraus sollte sich eine eigene 
Sammlung funktionierender Klassen ergeben, die man dann zu dem 
komplexeren Projekt zusammenführt.

Gerhard O. schrieb:
> Was ist an der Neugierde mit GPTs so schlimm? Zur Zeit ist es eben noch
> eine Neuheit.

Es nervt einfach nur noch, ständig von KI zu lesen und zu hören. Wenn 
jemand wirklich der Meinung ist, er müsse sich eine Arduino-Software per 
KI erzeugen lassen, kann ich ihn noch nicht einmal bedauern.

Ich dilettantiere seit einer Weile daran herum, DCF77 zuverlässig zu 
decodieren. Eine fertige .lib will ich nicht einsetzen, weil ich deren 
Art der Signalerkennung nicht sinnvoll finde. Da werde ich noch viele 
Stunden dran sitzen, aber ganz sicher nicht mit dem GPT-Idioten spielen.

Harald K. schrieb:
>> Was ist an der Neugierde mit GPTs so schlimm?
> Wenn man das einfach nur so aus Jux macht, meinetwegen. Wenn man aber
> versucht, reale Probleme damit zu lösen, und sei es auch nur so eine
> Bastelübung wie hier, dann gibt man die eigenen Fähigkeiten an der Tür
> ab.

Man gibt keine Fähigkeiten ab, weil man sie garnicht erst erworben hat.

von Gerhard O. (gerhard_)


Lesenswert?

Harald K. schrieb:
> Gerhard O. schrieb:
>> Was ist an der Neugierde mit GPTs so schlimm?
>
> Wenn man das einfach nur so aus Jux macht, meinetwegen. Wenn man aber
> versucht, reale Probleme damit zu lösen, und sei es auch nur so eine
> Bastelübung wie hier, dann gibt man die eigenen Fähigkeiten an der Tür
> ab. Stell' Dir mal vor, der Kram hätte funktioniert, ohne Fehler. Was
> wäre davon gelernt worden? Nichts.
> Und je mehr fertig vorverdautes Zeug aus irgendeinem ChatBlubber kommt,
> desto weniger versteht dessen Nutzer, was da eigentlich passiert.
>
> Wenn es dann nach einiger Gewöhnung doch mal klemmt, ist der Nutzer
> komplett hilflos, denn er hat selbst keinerlei Fähigkeiten entwickelt,
> außer vielleicht "Prompts" zu formulieren.

100% Ack.

Ich versuchte aber, nur eine einigermassen gerechte Representation zu 
erfassen. Was meine Person angeht, habe ich aus diversen Gründen noch 
keine Zeit damit verschwendet, da ich momentan in meinem Umkreis wenig 
realen Nutzen für mich sehe. Ich kenne allerdings einige Bekannte, die 
ein williges "Opfer" der GPT geworden sind, weil man sich unrealistische 
Erwartungen machte. Man muß abwarten was die Zukunft bringt.

"Vor dem Erfolg setzten die Götter den Schweiß" - Vielleicht mit 
Recht...

Aus meiner Sicht hätte man mit dem "Loslassen in die Welt" noch warten 
sollen, bis genug effektive Sicherheitsmaßnahmen erfunden worden sind, 
um "Informations-Terrorismus" in Schach zu halten. Das /GPT KI 
Schadenspotenzial in systematischer Informationsfälschung bzw. Gespinste 
aller Art ist leider wegen der Leichtgläubigkeit vieler 
Internet-Informationssüchtigen Konsumenten enorm und wird uns in 
absehbarer Zeit (weltpolitisch) noch viel unangenehme Vorfälle 
bescheren, da Authentizität der GPT Gespinste nur in den seltensten 
Fällen bestätigt werden kann und so nur für eine generelle gehobene 
Unsicherheit der menschlichen Informationsdiskrimination sorgt. Von 
diesem Standpunkt aus hätte man w.g. GPT noch nicht auf die Menschheit 
loslassen sollen. Die Leichtgläubigkeit gewisser Informationskonsumer 
spielt da sehr in die Hände der Intriganten.

Bis man ausreichend sichere Wasserzeichenmarkierungsmöglichkeiten gut 
genug beherrscht, kann damit (mit leichtgläubigen Konsumenten) zu viel 
Unfug getrieben werden. Aber leider siegt hier höchstwahrscheinlich 
wieder einmal die Profitgier der Macher um diese Technik so schnell wie 
möglich breitflächig kommerzialisieren zu können. GPT hat das Potenzial 
einer Informationsbombe. Abgesehen davon sprachen sich schon einige 
Industriegrößen gegen eine zu schnelle Verbreitung aus.

von Gerhard O. (gerhard_)


Lesenswert?

Manfred P. schrieb:
> Gerhard O. schrieb:
>> Hier die TWI Welt von Gerhard😊:
>
> Viel zu viele Bedenken, I2C am Arduino ist gutmütig, wenn man sich nicht
> extrem dämlich anstellt.
Naja. Ich wollte nur eine kleine nützliche Zusammenfassung aufstellen.
>
> Auf dem Bild bedient der Nano fünf I2C-Komponenten, das sind
> China-Platinchen mit PullUp am I2C drauf, je 10kOhm. Die Topologie ist
> ein Stern mit fünf Enden geworden, verkabelt mit den "DuPont-Kabeln" vom
> Ali.
Ich finde Deine Aufbauten immer sehr interessant. Was ist das übrigens 
für ein Gerät?
>
> Falls dort ein Modul ausfallen sollte, käme man dank der
> Steckverbindungen überall gut heran.
Modularität hat schon immer Vorteile gehabt. Bei einen solchen Aufbau, 
sind auch die TWI Verdrahtungen ziemlich gutmütig. Manchmal kann man es 
durch "saubere" Verdrahtung noch schlimmer machen. Kabelbaum 
(übersprechen) gegen lose Verdrahtung.
>
> Recht hast Du natürlich damit, dass man bei externen Libs erstmal die
> mitgelieferten Beispiele austestet. Daraus sollte sich eine eigene
> Sammlung funktionierender Klassen ergeben, die man dann zu dem
> komplexeren Projekt zusammenführt.
Auf alle Fälle. Wenn ich etwas Neues ausprobiere, mache ich das immer 
so.
>
> Gerhard O. schrieb:
>> Was ist an der Neugierde mit GPTs so schlimm? Zur Zeit ist es eben noch
>> eine Neuheit.
>
> Es nervt einfach nur noch, ständig von KI zu lesen und zu hören. Wenn
> jemand wirklich der Meinung ist, er müsse sich eine Arduino-Software per
> KI erzeugen lassen, kann ich ihn noch nicht einmal bedauern.
Mich auch. Aber leider sind wir Einzelne in der Wildnis...
>
> Ich dilettantiere seit einer Weile daran herum, DCF77 zuverlässig zu
> decodieren. Eine fertige .lib will ich nicht einsetzen, weil ich deren
> Art der Signalerkennung nicht sinnvoll finde. Da werde ich noch viele
> Stunden dran sitzen, aber ganz sicher nicht mit dem GPT-Idioten spielen.
Ich sehe das genauso.
>
> Harald K. schrieb:
>>> Was ist an der Neugierde mit GPTs so schlimm?
>> Wenn man das einfach nur so aus Jux macht, meinetwegen. Wenn man aber
>> versucht, reale Probleme damit zu lösen, und sei es auch nur so eine
>> Bastelübung wie hier, dann gibt man die eigenen Fähigkeiten an der Tür
>> ab.
>
> Man gibt keine Fähigkeiten ab, weil man sie garnicht erst erworben hat.
Edison formulierte das besonders schön:

"Invention*) is two parts inspiration and ninety-eight parts 
perspiration"

*) wo man invention mit Erfolg auswechseln könnte.

: Bearbeitet durch User
von Manfred P. (pruckelfred)


Angehängte Dateien:

Lesenswert?

Gerhard O. schrieb:
>> Viel zu viele Bedenken, I2C am Arduino ist gutmütig, wenn man sich nicht
>> extrem dämlich anstellt.
> Naja. Ich wollte nur eine kleine nützliche Zusammenfassung aufstellen.

Die ich inhaltlich in Ordnung finde, aber den Bastler (TO) mehr verwirrt 
als ihm zu helfen.

>> Auf dem Bild bedient der Nano fünf I2C-Komponenten, das sind
>> China-Platinchen mit PullUp am I2C drauf ..
> Ich finde Deine Aufbauten immer sehr interessant. Was ist das übrigens
> für ein Gerät?

2-Kanal Akkutester, Konstantstrom und schreibt alle 15s Spannung / Strom 
auf die SD-Karte. Auf den beiden Kühlkörpern je drei MOS-FETs und auf 
dem vorderen vier Hochlastwiderstände. Bilder habe ich 2018 als pdf 
gebaut, hänge ich an.

>> Falls dort ein Modul ausfallen sollte, käme man dank der
>> Steckverbindungen überall gut heran.
> Modularität hat schon immer Vorteile gehabt. Bei einen solchen Aufbau,
> sind auch die TWI Verdrahtungen ziemlich gutmütig. Manchmal kann man es
> durch "saubere" Verdrahtung noch schlimmer machen. Kabelbaum
> (übersprechen) gegen lose Verdrahtung.

TWI ist für kurze Strecken gedacht, z.B. ICs innerhalb der Leiterplatte 
eines Fernsehgerätes. Wie weit sie über ein Stück Kabel funktionieren, 
habe ich nie probiert. Da es ein unsymmetrisches Signal ist, natürlich 
nicht verdrillt und selbst ein Schirm könnte stören.

Zu Anfang meiner Erwerbstätigkeit hatte ich mit Beschallung und 
Tonstudiotechnik zu tun, Radio und Fernsehton liefen über Baugruppen, 
die wir entwickelt und gefertigt haben. Das Wissen aus dieser Zeit, 
Übersprechen oder Symmetrie, war mir später an anderen Stellen nützlich.

>> Recht hast Du natürlich damit, dass man bei externen Libs erstmal die
>> mitgelieferten Beispiele austestet. Daraus sollte sich eine eigene
>> Sammlung funktionierender Klassen ergeben, die man dann zu dem
>> komplexeren Projekt zusammenführt.
> Auf alle Fälle. Wenn ich etwas Neues ausprobiere, mache ich das immer
> so.

Man sieht es ständig in anderen Threads: Da werden Projekte 
zusammenkopiert, anstatt sich stückweise heran zu arbeiten.

>> Es nervt einfach nur noch, ständig von KI zu lesen und zu hören. Wenn
>> jemand wirklich der Meinung ist, er müsse sich eine Arduino-Software per
>> KI erzeugen lassen, kann ich ihn noch nicht einmal bedauern.
> Mich auch. Aber leider sind wir Einzelne in der Wildnis...

Andere stufen uns als fortschrittsfeindlich ein, weil wir nicht jede 
Hype mitspielen.

>> Ich dilettantiere seit einer Weile daran herum, DCF77 zuverlässig zu
>> decodieren. Eine fertige .lib will ich nicht einsetzen, weil ich deren
>> Art der Signalerkennung nicht sinnvoll finde. Da werde ich noch viele
>> Stunden dran sitzen, aber ganz sicher nicht mit dem GPT-Idioten spielen.
> Ich sehe das genauso.

Ich werde auch nicht auf µC-net fragen. Das ist wieder eines dieser 
Probleme, wo die Lösung über mir schwebt, ich sie aber noch nicht 
greifen kann. Eine Weile nichts tun, wird sie mir irgendwann auf den 
Teller fallen, während das Frühstücksei im Kocher steckt.

von Gerhard O. (gerhard_)


Lesenswert?

Manfred P. schrieb:
> Gerhard O. schrieb:
>>> Viel zu viele Bedenken, I2C am Arduino ist gutmütig, wenn man sich nicht
>>> extrem dämlich anstellt.
>> Naja. Ich wollte nur eine kleine nützliche Zusammenfassung aufstellen.
>
> Die ich inhaltlich in Ordnung finde, aber den Bastler (TO) mehr verwirrt
> als ihm zu helfen.
OK. Das bedachte ich nicht.
>
>>> Auf dem Bild bedient der Nano fünf I2C-Komponenten, das sind
>>> China-Platinchen mit PullUp am I2C drauf ..
>> Ich finde Deine Aufbauten immer sehr interessant. Was ist das übrigens
>> für ein Gerät?
>
> 2-Kanal Akkutester, Konstantstrom und schreibt alle 15s Spannung / Strom
> auf die SD-Karte. Auf den beiden Kühlkörpern je drei MOS-FETs und auf
> dem vorderen vier Hochlastwiderstände. Bilder habe ich 2018 als pdf
> gebaut, hänge ich an.
Sieht und hört sich als sehr nützlich an. Die Schalterstreifen auf der 
Oberseite gefallen mir. Sehen sehr solide aus. An sich hätte man die 
Kühlaggregate möglicherweise auch innen mit Lüfter unterbringen können.

Wenn es Dich interessiert: In den 80ern konstruierte ich in der Firma 
einen Batterietester mit ungewöhnlichem Design. Was den Betrieb betrifft 
enthielt das Teil einen CV/CC Reglerschaltung zum Laden und ein CC 
Entladeteil. Für die Steuerung war eine Bord voller CMOS verantwortlich, 
die über einen Vierfach Drehwähler vier Impulszählwerke dirigierte und 
es erlaubte bis zu vier Lade und Entladezyklen durchlaufen zu lassen. 
Die Zählwerke wurden mit Minuten Impulsen angesteuert und gaben die 
Kapazität der Akkus viermal an. Ein Tiefentladungeinsteller beendete 
jeden Zwischenzyklus. Nach so einem Zyklus hatte man eine Aufzeichnung, 
wie sich die Kapazität der Akkus über diesen Zeitraum verhielt. Es 
funktionierte ausgezeichnet. Mit einem Rückstell-Knopf konnte man dann 
den Drehwähler wieder in die Ausgangsposition bringen. Leider habe ich 
das Teil nicht und fürchte es wurde nach Auflassung des Labors dann 
irgendwann verschrottet. Schon verrückt was man in jungen Jahren 
anstellt...
>
>>> Falls dort ein Modul ausfallen sollte, käme man dank der
>>> Steckverbindungen überall gut heran.
>> Modularität hat schon immer Vorteile gehabt. Bei einen solchen Aufbau,
>> sind auch die TWI Verdrahtungen ziemlich gutmütig. Manchmal kann man es
>> durch "saubere" Verdrahtung noch schlimmer machen. Kabelbaum
>> (übersprechen) gegen lose Verdrahtung.
>
> TWI ist für kurze Strecken gedacht, z.B. ICs innerhalb der Leiterplatte
> eines Fernsehgerätes. Wie weit sie über ein Stück Kabel funktionieren,
> habe ich nie probiert. Da es ein unsymmetrisches Signal ist, natürlich
> nicht verdrillt und selbst ein Schirm könnte stören.
Naja. Ich steckte ein 4x20 LCD in ein klares Hammond Gehäuse hinein und 
verbinde es mit einem vier-adrigen 1.5m langen Telefonstrippe mit dem 
uC. Es gab noch nie Probleme. Scheint ausreichend zu übertragen. Ich 
sollte allerdings mal die Flanken zwischen Ansteuerung und LCD Seite 
vergleichen.
>
> Zu Anfang meiner Erwerbstätigkeit hatte ich mit Beschallung und
> Tonstudiotechnik zu tun, Radio und Fernsehton liefen über Baugruppen,
> die wir entwickelt und gefertigt haben. Das Wissen aus dieser Zeit,
> Übersprechen oder Symmetrie, war mir später an anderen Stellen nützlich.
Das glaube ich Dir aufs Wort.
>
>>> Recht hast Du natürlich damit, dass man bei externen Libs erstmal die
>>> mitgelieferten Beispiele austestet. Daraus sollte sich eine eigene
>>> Sammlung funktionierender Klassen ergeben, die man dann zu dem
>>> komplexeren Projekt zusammenführt.
>> Auf alle Fälle. Wenn ich etwas Neues ausprobiere, mache ich das immer
>> so.
>
> Man sieht es ständig in anderen Threads: Da werden Projekte
> zusammenkopiert, anstatt sich stückweise heran zu arbeiten.
Ja. Ich mache das aber teilweise auch (Schäm). Allerdings erarbeitete 
ich mir über 25 J uC genug Wissen, um mir meist selber helfen zu können. 
Abgesehen davon gab es das früher nicht. Ich fing mit PICs an und da gab 
es damals nichts zum Abschreiben. Da mußte man sich auch zwangsweise 
damit gründlich befassen. Aber mit dem Alter wurde ich bequemer und 
halte mich an die Device: "If you must steal, only steal from the best!"
>
>>> Es nervt einfach nur noch, ständig von KI zu lesen und zu hören. Wenn
>>> jemand wirklich der Meinung ist, er müsse sich eine Arduino-Software per
>>> KI erzeugen lassen, kann ich ihn noch nicht einmal bedauern.
>> Mich auch. Aber leider sind wir Einzelne in der Wildnis...
>
> Andere stufen uns als fortschrittsfeindlich ein, weil wir nicht jede
> Hype mitspielen.
Das macht unser Alter. Man merkt sich Erfolge und deren Gegenteil. Man 
durchschaut oft den Hype und das kommt dann so an. Ich bin eher ein 
langsamer Adoptier. Ich warte meist die "Bleeding Edge" ab, bis sich die 
scharfen Ecken abrunden und beobachte eine Weile. Ich kommentiere da wie 
Obelix, ... die spinnen...
>
>>> Ich dilettantiere seit einer Weile daran herum, DCF77 zuverlässig zu
>>> decodieren. Eine fertige .lib will ich nicht einsetzen, weil ich deren
>>> Art der Signalerkennung nicht sinnvoll finde. Da werde ich noch viele
>>> Stunden dran sitzen, aber ganz sicher nicht mit dem GPT-Idioten spielen.
>> Ich sehe das genauso.
Macht ja auch mehr Spaß, sich eigene Lösungen zu erarbeiten. Speziell, 
wenn es um klar dokumentierte umrissene Standards wie DCF geht. Ich 
würde es übrigens mit ISR over-sampling machen und dann mit Auf- und 
Ab-Zählern de-glitchen. Das machte ich mal bei einem Datenfunk Projekt 
und hatte sich sehr bewährt, weil kurzzeitige Aussetzer und Störungen 
nicht gleich zu Datenfehlern führten.
>
> Ich werde auch nicht auf µC-net fragen. Das ist wieder eines dieser
> Probleme, wo die Lösung über mir schwebt, ich sie aber noch nicht
> greifen kann. Eine Weile nichts tun, wird sie mir irgendwann auf den
> Teller fallen, während das Frühstücksei im Kocher steckt.
Ja. Geht mir manchmal auch so. Macht aber mehr Spass die verschiedensten 
Möglichkeiten durchzugehen.

...

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Manfred P. schrieb:
> Ich dilettantiere seit einer Weile daran herum, DCF77 zuverlässig zu
> decodieren. Eine fertige .lib will ich nicht einsetzen, weil ich deren
> Art der Signalerkennung nicht sinnvoll finde.

Was gefällt Dir denn daran nicht?
Hier mal ein schon recht alter Code:
Beitrag "DCF77 Uhr in C mit ATtiny26"
Da sind auch ne Menge Fragen und Erläuterungen mit bei.

von Wastl (hartundweichware)


Lesenswert?

Gerhard O. schrieb:
> ..............

TLDR

Vielleicht müsste "man" auch mal mit der Zitat-Funktion üben
damit der geneigte Leser überhaupt dekodieren kann wer was
gesagt hat und was gesagt werden soll. Bei diesem Kauderwelsch
von ASCII vergeht einem wirklich das Lesen. Hinweis: Es gibt
die Möglichkeit Leerzeilen einzufügen um die Lesbarkeit und
Übersichtlichkeit eines Textes zu verbessern.

Schon mal drüber nachgedacht?

von Gerhard O. (gerhard_)


Lesenswert?

Wastl schrieb:
> Gerhard O. schrieb:
>> ..............
>
> TLDR
>
> Vielleicht müsste "man" auch mal mit der Zitat-Funktion üben
> damit der geneigte Leser überhaupt dekodieren kann wer was
> gesagt hat und was gesagt werden soll. Bei diesem Kauderwelsch
> von ASCII vergeht einem wirklich das Lesen. Hinweis: Es gibt
> die Möglichkeit Leerzeilen einzufügen um die Lesbarkeit und
> Übersichtlichkeit eines Textes zu verbessern.
>
> Schon mal drüber nachgedacht?
Es geht nicht wirklich um das "Können"!

Ich stimme Dir zu und sehe es genauso. Aber mit dem iPad und Safari 
funktioniert die Zitat Funktion des Forums bei mir zumindest schlicht 
und einfach nicht richtig. Forums Teil-Zitat-Wahl geht nämlich überhaupt 
nicht. Ist mir alles bewußt, aber ich habe es aufgegeben mich darüber zu 
ärgern. Am PC ist dies alles kein Thema. Und alles manual mit dem iPad 
zu editieren ist mir wiederum zu viel Arbeit und möchte es mir nicht 
antun.

: Bearbeitet durch User
von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

Gerhard O. schrieb:
> Aus meiner Sicht hätte man mit dem "Loslassen in die Welt" noch warten
> sollen, bis genug effektive Sicherheitsmaßnahmen erfunden worden sind,
> um "Informations-Terrorismus" in Schach zu halten. (...)
> GPT hat das Potenzial einer Informationsbombe. Abgesehen davon sprachen
> sich schon einige Industriegrößen gegen eine zu schnelle Verbreitung aus.

Immer locker bleiben, denn auch damit wird die Population des Homo 
sapiens im Kern schon fertig und es – der Wahrscheinlichkeit nach – sehr 
gut überleben. Dass einige am Rande von solchen Dingen Panikattacken 
bekommen, durchdrehen, Ängste schüren oder gar Verschwörungstheorien 
daraus konstruieren, ist leider auch normal und Teil des Programms im 
Gehirn von Homo sapiens – der Zahn der Zeit wird es schon glätten, dann 
ist im Mittelwert alles wieder halbwegs normal, was auch immer unter 
'normal' in der jeweiligen Epoche verstanden werden kann, denn auch das 
unterliegt einer ständigen Verformung wie das Kneten einer Knettmasse. 
Die richtige, belebte AI atomar aufgebaut ist eh noch nicht auf der Erde 
– sie wird in der Zukunft noch von jemandem geschrieben/gebaut, denn was 
im Moment da ist, könnte man im Vergleich dazu nur als Spielereien von 
Kindern bezeichnen – auch das sagt die Wahrscheinlichkeit voraus oder 
die extrapolierte Vergangenheit, die als Zukunft in dieser Wirklichkeit 
mit dem begrenzten Bewusstsein verstanden werden kann und von allen auch 
so erlebt wird.

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Gregor J. schrieb:
> Dass einige am Rande von solchen Dingen Panikattacken
> bekommen, durchdrehen, Ängste schüren oder gar Verschwörungstheorien
> daraus konstruieren, ist leider auch normal und Teil des Programms im
> Gehirn von Homo sapiens

Diese Unterstellung ist mal wieder typisch. Kritik ist für Befürworter 
der Totalverblödung gleich Angst, Panik oder Verschwörungstheorie.

Klar. Muss ja. Denn das eigene hysterisch technikgläubige Weltbild darf 
keinen Kratzer bekommen.

Die Kritik von Menschen mit etwas mehr Lebenserfahrung an Menschen mit 
weniger Lebenserfahrung ist nun nichts neues, auch wenn das angebliche 
Zitat eines wahlweisen antiken Griechen (Plato, Sophokles oder wer auch 
immer) tatsächlich der Neuzeit entstammt und erst ab etwa der Mitte des 
letzten Jahrhunderts immer wieder falsch zitiert wird.

Dennoch ist die im Moment zu beobachtende flächendeckende 
Totalverblödung etwas neues.

von Gerhard O. (gerhard_)


Lesenswert?

Gregor J. schrieb:
> Gerhard O. schrieb:
>> Aus meiner Sicht hätte man mit dem "Loslassen in die Welt" noch warten
>> sollen, bis genug effektive Sicherheitsmaßnahmen erfunden worden sind,
>> um "Informations-Terrorismus" in Schach zu halten. (...)
>> GPT hat das Potenzial einer Informationsbombe. Abgesehen davon sprachen
>> sich schon einige Industriegrößen gegen eine zu schnelle Verbreitung aus.
>
> Immer locker bleiben, denn auch damit wird die Population des Homo
> sapiens im Kern schon fertig und es – der Wahrscheinlichkeit nach – sehr
> gut überleben. Dass einige am Rande von solchen Dingen Panikattacken
> bekommen, durchdrehen, Ängste schüren oder gar Verschwörungstheorien
> daraus konstruieren, ist leider auch normal und Teil des Programms im
> Gehirn von Homo sapiens – der Zahn der Zeit wird es schon glätten, dann
> ist im Mittelwert alles wieder halbwegs normal, was auch immer unter
> 'normal' in der jeweiligen Epoche verstanden werden kann, denn auch das
> unterliegt einer ständigen Verformung wie das Kneten einer Knettmasse.
> Die richtige, belebte AI atomar aufgebaut ist eh noch nicht auf der Erde
> – sie wird in der Zukunft noch von jemandem geschrieben/gebaut, denn was
> im Moment da ist, könnte man im Vergleich dazu nur als Spielereien von
> Kindern bezeichnen – auch das sagt die Wahrscheinlichkeit voraus oder
> die extrapolierte Vergangenheit, die als Zukunft in dieser Wirklichkeit
> mit dem begrenzten Bewusstsein verstanden werden kann und von allen auch
> so erlebt wird.

Moin,

Deine Argumente sind natürlich stichhaltig. Aber bedenke, in den USA 
stehen bald Wahlen an und viele Amerikaner sind dafür bekannt alles zu 
glauben was sie von der Glotze und Internetseiten ohne gesunde Kritik 
und Menschenverstand leichtgläubig einsaugen. Das kann, je nachdem wie 
man die augenblickliche Welt sieht, zu unglücklichen Wahlergebnissen 
führen, wenn man z.B. das Großmaul bevorzugt. Andere sehen das 
möglicherweise als die richtige Entscheidung.

Es ist klar abzusehen, daß KI in allen ihren Inkarnationen als 
politische Waffe eingesetzt werden wird. Das kann zu empfindlichen 
Störungen der Demokratieideologie führen. Deep Fakes u.ä. sind schwierig 
zu erkennen und können viel Verwirrung stiften und zu ungesundes 
Mißverstehen führen.

Ich bin der Meinung, daß öffentliche Informationen von professionellen 
Mitarbeitern begutachtet und moderiert sein sollen, anstatt einer wilden 
Meute von politischen Möchtegerns zu überlassen. Ich bin der Meinung, 
daß, so wie KI oft mißbraucht wird, die Fundamente unserer modernen 
globalen Gemeinschaft angegriffen werden. Man mag das sehen, wie man 
will, ich finde, daß trotz aller Unzulänglichkeiten unser globalen 
Institutionen, wie z.B die UNO, dieser Zustand besser ist, als die zu 
erwartenden Alternativen. Es ist traurig, daß Konventionen wie z.B. die 
Genfer Kriegsregeln total mißachtet werden. Aber genug von der Politik. 
Jedenfalls sollte man sich "Wie" des "Loslassen" der KI in die 
Allgemeinheit gut überlegen und sich im Klaren sein, inwieweit sie von 
kriminellen und politisch motivierten Bösewichten und deren Agendas 
mißbraucht werden wird. Es ist oft sehr schwierig Fälschungen zu 
erkennen und ist in der volatilen, unserer Gegenwart , vielleicht nicht 
unbedingt wünschenswert.

Man mag mich für meine Vorbehalte kritisieren, finde aber trotzdem, daß 
Bedacht und Vorsicht keine schlechten Prinzipien in der Verbreitung von 
KI sind. Vorsicht und Vernunft hat noch nie jemand geschadet. Und Eile 
tut wirklich nicht not, damit leichtsinnig umzugehen. Die Welt gerät 
schließlich deswegen nicht aus ihren Fugen.

Werden wir damit fertig werden? Wir müssen. Ganz gleich, welche Fehler 
Homo Sapiens machen wird. Wird es unnötige Nackenschläge geben? 
Bestimmt. Würde es schaden, aufzupassen und voraussehbare Fehler zu 
vermeiden? Das soll jeder Maßgebliche selber entscheiden.

Seid Wachsam!

Gerhard

: Bearbeitet durch User
von Manfred P. (pruckelfred)


Lesenswert?

Gerhard O. schrieb:
>> 2-Kanal Akkutester
> Die Schalterstreifen auf der Oberseite gefallen mir.
> Sehen sehr solide aus.

Marquardt 80er Jahre, werden nicht mehr gefertigt. Dazu gibt es Bleche 
für 4, 8, 12 oder 16 Stück. Lochraster geht nicht, 19mm-Abstand.

> An sich hätte man die
> Kühlaggregate möglicherweise auch innen mit Lüfter unterbringen können.

Design follows stock. Wie immer, habe ich geschaut, was ich im Regal 
habe und mit vorhandenem Material bauen kann. Gehäuse kaufen ist immer 
teuer und Lüfter mag ich nicht.

Gerhard O. schrieb:
>> TWI ist für kurze Strecken gedacht, z.B. ICs innerhalb der Leiterplatte
>> eines Fernsehgerätes. ..
> Naja. Ich steckte ein 4x20 LCD in ein klares Hammond Gehäuse hinein

Wenn es Sinn macht, die abgesetzt zu betreiben.

> und
> verbinde es mit einem vier-adrigen 1.5m langen Telefonstrippe mit dem
> uC. Es gab noch nie Probleme. Scheint ausreichend zu übertragen.

Die flexiblen Telefonkabel sind weder geschirmt noch verdrillt, wird 
passen.

Gerhard O. schrieb:
>> Man sieht es ständig in anderen Threads: Da werden Projekte
>> zusammenkopiert, anstatt sich stückweise heran zu arbeiten.
> Ja. Ich mache das aber teilweise auch (Schäm).

Du kopierst nicht irgendwas doof zusammen, sondern hast erprobte Klassen 
oder schaust sie vorher an.

> Allerdings erarbeitete
> ich mir über 25 J uC genug Wissen, um mir meist selber helfen zu können.
> Abgesehen davon gab es das früher nicht. Ich fing mit PICs an und da gab
> es damals nichts zum Abschreiben. Da mußte man sich auch zwangsweise
> damit gründlich befassen.

Bei mir war es 6504 in Assembler, dann 6502 auf selbst entworfener 
Europakarte und dann MC68HC805 - auch in Assembler. Habe ich keine Lust 
mehr drauf und bastele mit Arduino.

Mein erstes A*-Projekt war die Lötstation mit Weller und 
1602-I2C-Display. Ich habe ein paar Stunden gebraucht, die passende 
I2C-LCD-lib zu finden und das Display zu bedienen. Danach fällt es mir 
schwer, warum andere Leute das nicht auch eigenständig lösen können, 
falsche Erwartung und fehlende Ausdauer?

Bevor ich das angegangen bin, habe ich einen China-Uno mit Tastern, 
Drehpoti, LEDs und Display zusammengelötet, erstmal Grundlagen 
ausgetestet.

Gerhard O. schrieb:
>> Ich dilettantiere seit einer Weile daran herum, DCF77 zuverlässig zu
>> decodieren. Eine fertige .lib will ich nicht einsetzen, weil ich deren
>> Art der Signalerkennung nicht sinnvoll finde. Da werde ich noch viele
>> Stunden dran sitzen

> Macht ja auch mehr Spaß, sich eigene Lösungen zu erarbeiten. Speziell,
> wenn es um klar dokumentierte umrissene Standards wie DCF geht. Ich
> würde es übrigens mit ISR over-sampling machen und dann mit Auf- und
> Ab-Zählern de-glitchen.

Meine Uhr von ca. 1990 (6502-ASM) pollt das Signal und ist damit 
ziemlich robust gegen Gewitter. In meinem Arduino-Aufbau läuft ein 
Interrupttimer mit 5ms und zählt zwei Variablen hoch, Port high / Port 
low. Low (100ms) gibt dann ca. 20 und high (200ms) etwa 40, das 
Empfängermodul liefert gemessene 120 / 220 ms. War ich vorhin wieder 2 
Stunden dran, ich bin auf dem richtigen Weg, habe aber noch 10..20% 
Fehlerkennungen.

Gerhard O. schrieb:
>> Ich werde auch nicht auf µC-net fragen. Das ist wieder eines dieser
>> Probleme, wo die Lösung über mir schwebt, ich sie aber noch nicht
>> greifen kann. Eine Weile nichts tun, wird sie mir irgendwann auf den
>> Teller fallen, während das Frühstücksei im Kocher steckt.
> Ja. Geht mir manchmal auch so. Macht aber mehr Spass die verschiedensten
> Möglichkeiten durchzugehen.

Es fehlt der Kollege aus dem Prüfmittelbau, wo wir unsere Probleme 
miteinander diskutieren konnten.

Peter D. schrieb:
> Eine fertige .lib will ich nicht einsetzen, weil ich deren
>> Art der Signalerkennung nicht sinnvoll finde.
> Was gefällt Dir denn daran nicht?
> Hier mal ein schon recht alter Code:
> Beitrag "DCF77 Uhr in C mit ATtiny26"
> Da sind auch ne Menge Fragen und Erläuterungen mit bei.

Die von mir gefundenen Arduino-libs lösen bei Pegelwechsel am Port einen 
Interrupt aus, gefällt mir nicht. Deinen habe ich nicht angeschaut.

von Joachim B. (jar)


Lesenswert?

Manfred P. schrieb:
> Deinen habe ich nicht angeschaut.

PeDas Code ansehen könnte aber nützlich sein, er schreibt wirklich 
schlanken und nützlichen Code obwohl der Code nicht immer sofort leicht 
zu verstehen ist, hält aber die grauen Zellen in Bewegung.

Manfred P. schrieb:
> In meinem Arduino-Aufbau läuft ein
> Interrupttimer mit 5ms und zählt zwei Variablen hoch, Port high / Port
> low. Low (100ms) gibt dann ca. 20 und high (200ms) etwa 40, das
> Empfängermodul liefert gemessene 120 / 220 ms. War ich vorhin wieder 2
> Stunden dran, ich bin auf dem richtigen Weg, habe aber noch 10..20%
> Fehlerkennungen.

so mache ich das auch aber werte in PeDas Subroutine in C on the fly 
aus.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.