das Ganze war bisher nicht wirklich zufriedenstellend für mich. Von einfrierenden Displays über nicht unterstützte Formate, SD-Karten und Betriebssysteme habe ich seit Veröffentlichung der Platine eigentlich nur Ärger gehabt. Dabei meine ich nicht nur euer Feedback. Dieselben Fehler, die ihr beobachtet habt, sind auch bei mir aufgetreten.
Nun muss ich zu meiner Verteidigung sagen, dass ich auf den Sketch überhaupt keinen Einfluss hatte, weil ich bisher nicht in der Lage war, so etwas zu schreiben. Ich habe lediglich die dazugehörige Platine gestaltet und habe mit Hilfe des Arduino-Forums die Unterstützung mehrerer Displays ergänzt. Umso ärgerlicher war es für mich, dass der Sketch einfach nicht zuverlässig mit allen Bildern laufen wollte, da ich bei auftretenden Fehlern selbst in der Luft hing.
Doch auch ich lerne dazu. Die Python-App zur Eingabe der Zugziele ist überwiegend mit der Hilfe von ChatGPT entstanden. Warum also nicht einfach einen neuen und hoffentlich zuverlässigen Sketch für den Werbemonitor auf dem selben Weg kreieren? Wenn man einigermaßen versteht, was da so im Sketch steht, kann man auch ganz gut mit ChatGPT interagieren, um zu einem vernünftigen Ergebnis zu kommen.
Also habe ich den Sketch heute zur Überprüfung an Microsoft Copilot übergeben und war eigentlich nicht überrascht, dass er fast alles verworfen hat. Vom ursprünglichen Sketch ist nicht wirklich viel übrig geblieben. Eigentlich nur der Teil, den die Jungs im Arduino Forum geschrieben haben und Jürgens "Wenn/Dann-Abfrage" für die drei unterschiedlichen Display-Typen. Alles andere ist Geschichte.
Um die Neuauflage zu prüfen, habe ich nun bewusst die SD-Karte mit dem Mac mit neuen Dateien bespielt. Darunter befindet sich neben neu überarbeiteter Bilder auch ein PNG, das da eigentlich gar nicht liegen dürfte. Zudem habe ich einige Dateien hinzugefügt, die bei Rüdiger zu Abstürzen führten. Das Ganze läuft jetzt seit 90 Minuten fehlerfrei. Auch bei Rüdiger läuft es bereits fehlerfrei (hier hing es ständig).
Der serielle Monitor informiert ständig über die übersprungenen Dateien und aufgetretenen Fehler.
So sieht man im folgenden Screenshot sowohl die ungültige PNG-Datei "CONTIN~5.PNG" sowie die dazugehörige versteckte Datei aus dem macOS Filesystem ("_CONTI~7.PNG").
Im Folgenden lädt der Sketch folgerichtig das BMP-File "CONTIN~8.BMP" nachdem er es auf alle technischen Parameter überprüft hat und überspringt dann dessen zugehörige versteckte Datei "_CONT~10.BMP".
Ich zitiere an der Stelle mal wieder den Helden meiner Kindheit: Ich liebe es, wenn ein Plan funktioniert (Hannibal Smith)
Wobei es im englischen irgendwie besser zum Titel der Serie gepasst hat: I love it when A plan comes together
Hier ein Auszug der Änderungen aus dem Sketch:
Bugfix "Einfrieren" behoben
Ursachen fuer das Einfrieren wurden beim ueberpruefen des alten Sketchs in folgenden Teilen gefunden
- die Zentrierung erzeugt negative Werte, wenn die Bilder breiter als 80px sind
- die Laenge der Dateinamen ist auf 15 beschraenkt
- unterschiedliche Schreibweise BMP, bmp, Bmp ist fehleranfaellig
- fehlende Pruefung ungueltiger BMP-Dateien
- versteckte Dateien anderer Betriebssysteme (z. B. macOS)
- Pin 10 nicht auf High gesetzt
- while (!Serial) { } blockiert
- Bilder werden nun links oben ausgerichtet, da die Zentrierung nicht mit jeder Hardware zuverlaessig laeuft.
Bilder sind im Grafikprogramm auf die entsprechenden Groeßen auszuschneiden (80x160px fuer 0,96"; 128x160px fuer 1,8") - die Laenge der Dateinamen wurde auf 63 Zeichen erhoeht
- unterschiedliche Schreibweisen der Dateiendung werden geprueft und in allen Formen akzeptiert
- Der Sketch verfuegt ueber eine neue Komponente, die die BMP-Dateien auf Richtigkeit prueft (Windows-BMP, 24 bit)
Entspricht die Datei nicht den Vorgaben, wird sie ignoriert.
JPG oder PNG-Dateien duerfen auf der SD-Karte gespeichert sein. Sie werden nicht gelesen. - versteckte Dateien, die z. B. von macOS geschrieben werden, filtert der Sketch ebenso aus
- alle Pins werden im Sketch auf High gesetzt, unabhaengig von der Nutzung als Display-Ausgang
- Arduino-Typ wird abgefragt
bisher gab es nur zwei Zustaende in der Rotation > 0 und 2
Bei unguenstiger Einbaulage fehlten die anderen beiden Zustaende
> nun kann man die Drehung in Grad angeben (0, 90, 180 oder 270)
> Portrait und Landscape ermittelt der Sketch nun automatisch aus der Rotation
Verbesserte Uebersichtlichkeit
Alle Funktionen verfuegen nun ueber geeignete Headlines (Dank an ChatGPT)
Neue Serial Prints
Die BMP-Pruefung gibt die Ergebnisse klar definiert am seriellen Monitor aus.
Auch wenn die Dateien uebersprungen werden, so kann man hier sehen, was falsch gemacht wurde.
Den neuen Sketch findet ihr wie gewohnt in meinem Github: https://github.com/raily74/MobaLedLib/b ... onitor.zip
Probiert es bitte aus und gebt mir fleißig Bescheid!

