Inkplate 6PLUS SD card file operations and directory reading

Customer:

I need to read and write .TXT files on my Inkplate 6PLUS using an 8 GB SDHC SD card. I’ve been trying for more than two days without success. I would ideally like an example showing the full command set for SD card handling.

I’ve tried the SDFat library, the SD library, and the recommended SD-Fat-beta library with their example sketches. Compilation fails with an unspecified error message and nothing uploads to the board. Your provided examples don’t work either.

Original message (German)

ich muss mit meinem InkPlate6Plus und einer 8 GB SDHC SD-Karte

.TXT-Dateien lesen und schreiben, eine sonst ganz einfache Sache. Seit

nunmehr mehr als zwei Tagen versuche ich, dieses Vorhaben in die Tat

umzusetzen. Ideal wäre ein Beispiel, welches den vollen Befehlsumfang

für das Handling mit SD-Karten beinhaltet.

Versucht habe ich es mit derLibrary SDFat, der Lib SD und der

empfohlenen Library SD-Fat-beta und den resultierenden Beispielen.

Die Kompilierung wird mit einer nicht näher beschriebenen Fehlermeldung

abgebrochen, zu einem Upload auf das Board kommt es nicht. Und

diesbezügliche Muster und Beispiele von Ihnen fünktionieren leider nicht.

Ich weiss echt nicht mehr weiter, bitte Hilfe …

Originally submitted via email support on 4 February 2024. Migrated to the forum for community visibility.

Soldered Support:

The Inkplate library already includes SD card code and a library built-in. You don’t need to include or install any additional ones, and doing so could break compilation.

Try the SD card examples within the Inkplate library. Can they compile without problems?

If they don’t compile, send the compilation error logs and I’ll take a look. There’s almost always a relevant compilation error somewhere in that log. Also check that you upload the code in ‘Verbose’ mode in File→Preferences.

Original message (German)

es tut mir leid zu hören, dass du diese Probleme hast. Also, wir haben bereits SD-Karten-Code und eine Bibliothek innerhalb unserer Inkplate-Bibliothek. Du musst keine zusätzlichen einschließen oder installieren, und dies zu tun könnte die Kompilierung potenziell durcheinanderbringen.

Schau dir die SD-Karten-Beispiele innerhalb der Inkplate-Bibliothek an, können sie ohne Probleme kompiliert werden? Hier sind sie zu finden:

Wenn sie nicht kompiliert werden können, lass es mich wissen und sende die Kompilierungsfehler-Logs, ich werde versuchen, einen Blick darauf zu werfen. Fast immer gibt es irgendwo in diesem Log einen relevanten Kompilierungsfehler. Überprüfe auch, dass du den Code im ‘Verbose’-Modus in Datei->Einstellungen hochlädst.

Attachment omitted in migration: image.png

Customer:

I’m missing an example for Inkplate 6PLUS/SD that shows how to read a directory on the SD card (DIR). I also have a question about SDFAT: how should the CS pin be handled in the setup - can it simply be ignored?

Original message (German)

Es gibt noch etwas, was ich vermisse: Bei den Beispielen für
InkPlate 6Plus/SD fehlt ein Sketch zu auslesen eines
Verzeichnisses auf der SD-Karte (DIR).
Dankbar wäre ich noch für die Beantwortung der SDFAT-Frage, wie
mit dem Pin CS im Setup umzugehen ist, kann das einfach ignoriert
werden ?
Lieber [name removed], bitte nicht böse sein wegen meiner Fragen.
Aber wo sonst kann ich mit der Lösung meiner Probleme vorstellig
werden. Im Internet habe ich nichts gefunden, was sich mit
InkPlate 6Plus u n d z.B. meiner Fragen befasst. Und von
InkPlate-Literatur ist weit und breit nichts zu sehen.

Attachment omitted in migration: image.png

Soldered Support:

There is an Inkplate6PLUS SD example - I used an older screenshot that showed it for Inkplate6, my apologies. They are in the menu at the same location, just under Inkplate 6PLUS.

For reading .txt files where each record ends with 0D0A, you can do this with different code. The examples serve only as a starting point - I often use them that way when making Inkplate projects.

For reading a directory on SD, look at this example: https://github.com/SolderedElectronics/Inkplate-Arduino-library/blob/master/examples/Inkplate6PLUS/Projects/Inkplate6PLUS_Image_frame_From_SD/Inkplate6PLUS_Image_frame_From_SD.ino

This is a project that displays images from a directory on the SD card. It has some code you can adapt for your needs. We cannot provide specific code modifications through support, but that’s why we have detailed examples.

Regarding the CS pin: it is connected to SPI_CS on the ESP32, which is IO15. It’s also wired in the library so you can use it, but since it’s the only device connected over SPI, it’s not required.

Original message (German)

es gibt ein Inkplate6PLUS SD-Beispiel, ich habe lediglich einen älteren Screenshot verwendet, der es bei Inkplate6 zeigt, entschuldige bitte. Sie befinden sich im Menü am selben Ort, nur unter Inkplate 6PLUS. Später in deiner E-Mail beschreibst du, dass es letztendlich funktioniert hat, worüber ich mich freue zu hören. Könntest du mir bestätigen, dass du die SD-Beispiele in Ordnung zum Laufen bekommen hast?

Was die nächste Frage angeht - das Lesen von .txt-Dateien, bei denen jeder Datensatz mit 0D0A beendet wird - bin ich sicher, dass du dies mit einem anderen Code bewerkstelligen kannst. Die Beispiele dienen nur als solche. Ich verwende sie oft als Ausgangspunkt, wenn ich Inkplate-Projekte mache.

Das Lesen eines Verzeichnisses auf SD - schau dir dieses Beispiel an: https://github.com/SolderedElectronics/Inkplate-Arduino-library/blob/master/examples/Inkplate6PLUS/Projects/Inkplate6PLUS_Image_frame_From_SD/Inkplate6PLUS_Image_frame_From_SD.ino

Dies ist ein Projekt, das Bilder aus einem Verzeichnis auf der SD-Karte zeigt, es hat einige Codes, die du für deine Bedürfnisse umfunktionieren kannst. Wir können über den Support keine spezifischen Code-Änderungen bereitstellen, aber deshalb haben wir die detaillierten Beispiele.

Was den CS-Pin angeht, ist er mit SPI_CS am ESP32 verbunden, welches IO15 ist. Er ist auch in der Bibliothek verbunden, sodass du ihn verwenden kannst, aber da er das einzige über SPI angeschlossene Gerät ist, ist es nicht erforderlich.

Wir werden ein Forum für Inkplate-Fragen haben, es wird derzeit entwickelt. Also, du bist hier beim Kundensupport genau richtig.

Schön zu hören, dass du mit Inkplate und mit der Hilfe, die wir hier über den Kundensupport bieten können, zufrieden bist.

Customer:

I attempted the Inkplate6PLUS_Image_frame_From_SD.ino sketch, but it failed because my Inkplate 6PLUS no longer responds to me. Even my own program no longer compiles on the Inkplate 6PLUS - there’s not even an error message.

The sketch Inkplate6PLUS_Image_frame_From_SD.ino did not upload to the device. My own program is still displayed but no longer runs. There are also no responses when pressing the Wake button or the Reset button. The device appears to be defective and I need a return label and replacement.

Original message (German)

die Anlässe meiner Schreiben werden immer trauriger. Der Versuch
Inkplate6PLUS_Image_frame_From_SD.ino
hat nicht geklappt, weil mein Inkplate6Plus nichts mehr von mir
wissen will. Selbst das von mir geschriebene Programm lässt sich
nicht mehr auf den Inkplate6Plus kompilieren, es gibt nicht einmal
eine Fehlermeldung. Anbei dennoch die während der Kompilierung von
inkplate6PLUS_Image_frame_From_SD.ino
generierte Datei.
Aber noch viel wichtiger: Ich benötige einen Schein zum
Zurücksenden des defekten Inkplate6Plus. Schon das kompilieren von
inkplate6PLUS_Image_frame_From_SD.ino
wurde nicht auf das Gerät übertragen, deshalb ist immer noch das
von mir geschriebene Programm zu sehen. Nur laufen tut es nicht
mehr. Es gibt auch keine Reaktionen beim Drücken der Wake-Taste
oder des Reset-Knopfes.
Sobald das mit der Rücksendung klappt, möchte ich auch um Ersatz
für das defkte Gerät bitten. Dies alles bitte recht zügig, die
Zeit wird mir langsam knapp.
Immer noch einen versöhnlichen Gruß, alles Gute,
[name removed]

Am 06.02.2024 um 08:08 schrieb [name removed] ([name removed]):

Attachment omitted in migration: Kompilierung.7z

Soldered Support:

Your upload log shows that the code compiled and uploaded to the Inkplate successfully. If nothing changes on the display, check whether you’re using the correct board definition. There are ‘e-Radionica’ Inkplates and ‘Soldered’ Inkplates. Can you verify which one you have? In short: if your Inkplate is a newer model with a purple PCB and without touchpads, it’s the ‘Soldered’ Inkplate; if it’s older, it’s probably the ‘e-Radionica’ Inkplate. More info here: Inkplate Features — Inkplate docs documentation

I’m really not sure why the device would suddenly stop working. Understand that there’s a difference between code upload and code compilation. You can test code compilation with ‘Verify’ in Arduino. If the code won’t compile, it’s a software error and you need to check your Arduino configuration (board definition, is the Inkplate library correctly installed, is there an error in the program code itself that stops compilation - the compiler should warn you in the log). I emphasize this because the log you sent shows that the code compiled correctly and uploaded to your Inkplate device. If it’s not changing the screen - that’s a different issue.

Let’s try this: we’ll use the Serial Monitor to see where our code is executing. I’ve modified a sketch called Inkplate6PLUS Quotables slightly, here’s the link: https://pastebin.com/raw/66gyLrVn

To run this sketch, just enter your WiFi credentials on lines 34 and 35 so the Inkplate can connect to the internet and fetch some text. This will update the display with a new quote about every 5 seconds. Compile and upload this sketch (after entering your WiFi data), then open the Serial Monitor in Arduino and make sure it’s set to 115200 Baud. Then see what the Serial Monitor outputs and whether the display changes. Let’s try that.

I understand this is urgent. If we determine this problem cannot be solved through software and you have a defective unit, we will offer a replacement, but we need to go through the debugging process first.

Original message (German)

aus deinem Upload-Log geht hervor, dass der Code erfolgreich kompiliert und auf das Inkplate hochgeladen wurde. Wenn sich auf dem Display nichts ändert, könntest du überprüfen, ob du die richtige Board-Definition verwendest? Es gibt ‘e-Radionica’ Inkplates und ‘Soldered’ Inkplates. Kannst du überprüfen, ob du das richtige verwendest? Kurz gesagt, wenn dein Inkplate ein neueres Modell mit einer lila PCB und ohne Touchpads ist, handelt es sich um das ‘Soldered’ Inkplate, ist es älter, ist es wahrscheinlich das ‘e-Radionica’ Inkplate. Hier gibt es mehr Infos dazu: Inkplate Features — Inkplate docs documentation

Ich bin mir wirklich nicht sicher, warum das Gerät plötzlich aufhören würde zu funktionieren. Bitte verstehe, dass es einen Unterschied zwischen Code-Upload und Code-Kompilierung gibt. Du kannst die Code-Kompilierung mit ‘Überprüfen’ in Arduino testen. Wenn der Code nicht kompiliert werden kann, dann liegt es an einem Softwarefehler, und du müsstest deine Arduino-Konfiguration überprüfen (Board-Definition, ist die Inkplate-Bibliothek korrekt installiert, gibt es einen Fehler im Programmcodes selbst, der die Kompilierung stoppt - der Compiler sollte dich darüber im Log warnen). Ich betone dies, weil das Log, das du gesendet hast, zeigt, dass der Code korrekt kompiliert und auf dein Inkplate-Gerät hochgeladen wird. Wenn es den Bildschirm nicht ändert - das ist eine andere Sache.

Lass uns das versuchen - wir nutzen den Serial Monitor, um zu sehen, wo unser Code ausgeführt wird. Ich habe diesen Sketch namens inklplate6PLUS Quotables ein wenig modifiziert, hier ist ein Link: https://pastebin.com/raw/66gyLrVn

Um diesen Sketch auszuführen, gib einfach deine WLAN-Daten in den Zeilen 34 und 35 ein, damit Inkplate sich mit dem Internet verbinden und etwas Text abrufen kann. Dadurch wird das Display etwa alle 5 Sekunden mit einem neuen Zitat aktualisiert. Kompiliere und lade diesen Sketch hoch (nachdem du deine WLAN-Daten eingegeben hast), und öffne dann den Serial Monitor in Arduino, und stelle sicher, dass er auf 115200 Baud eingestellt ist. Sieh dann, was der Serial Monitor ausgibt und ob sich das Display ändert. Lass uns das versuchen.

Ich verstehe, dass dies dringend für dich ist, ich werde heute für alle zusätzlichen Anfragen zur Verfügung stehen und werde mein Bestes tun, schnell zu antworten. Natürlich, wenn wir feststellen, dass dieses Problem nicht über die Software behoben werden kann und du eine fehlerhafte Einheit hast, werden wir einen Ersatz anbieten, aber wir müssen zuerst den Debugging-Prozess durchlaufen, ich hoffe, du verstehst.