AtTiny85 zur Ansteuerung von OLED-Infodisplays via USB

31.01.2026

Ich hatte neulich bemerkt, dass ich bei meinem Wechsel von Github zu Codeberg nicht alle meine Repositories erwischt hatte...

Ich hatte zwar das Repository migriert, das zeigt, wie man mittels eines Digispark oder allgemeiner mittels eines AtTiny85 Mikroprozessors ein zweizeiliges LCD-Infodisplay ansteuern kann um beliebige Nachrichten anzuzeigen. Vergessen hatte ich aber das Repo, mit dem meine Begeisterung für den AtTiny85 begann: Das zum Selberbauen von RGB Blinksticks. Ich habe das inzwischen korrigiert.

Damit ist es ja möglich, diverse Konfigurationen von smarten oder nicht so smarten RGB-LEDs als USB-Gadget an Rechner zu stecken und diese dann - zum Beispiel über MQTT - Signale abgeben zu lassen. Ich hatte eines dieser Gadgets mit einem Ring aus 12 NeoPixel-LEDs realisiert und es dann zweckentfremdet für eine Tastaturbeleuchtung meines Laptops.

Nun kam es mir aber zu umständlich vor, dafür jedesmal ein Skript zum Ein- und Ausschalten bemühen zu müssen, daher habe ich den entsprechenden Branch des Projektes nun noch um die Möglichkeit erweitert, einen Taster auszulesen. Dies, zusammen mit dem Code zum Entprellen war zu groß, um noch in den Flash des Mikroprozessors zu passen, daher wendete ich anderthalb Stunden intensiver Arbeit auf, diese 160 Bytes noch irgendwie einzusparen - in sehr übersichtlichem Code, in dem jede einzelne Zeile etwas zur Funktion beitrug!

Das war eine interessante Erfahrung, denn viele Wege, die ich versuchte hatte der Compiler offenbar bereits selbst entdeckt und bereits vorweggenommen. Denn oft, wenn ich eine neue Variante ausprobierte stellte sich heraus, dass sich an der Grüße des finalen Produkts nichts geändert hatte.

Ich habe es dennoch geschafft - das Ergebnis lässt sich jetzt nicht nur in AtTinys flashen, die den Mikronukleus-Bootloader verwenden - es ist klein genug, um auch in solchen mit dem DigiSpark-Bootloader verwendet zu werden.

Nachdem ich an diesem Punkt angekommen war und im Zuge dieser Operationen auch nochmal mit dem Projekt zur Kopplung eines I2C-LCD-Displays an USB mittels AtTiny85 herumgespielt hatte fiel mir ein, dass ich ja noch ein I2C-OLED-Display in der Grabbelkiste gesehen hatte.

Also verdrahtete ich das ganze fix und wollte analog dasselbe erreichen wie mit dem LCD: Verbinden mittels USB mit PC und alles, was an die entstehende serielle Schnittstelle geschickt wird, wird auf dem OLED angezeigt.

Hier stieß ich dann wirklich auf einen Endgegner: Es dauerte Ewigkeiten, bis ich den Code so sehr eingedampft hatte, dass er wenigstens mit dem Micronucleus.Bootloader in einen AtTiny85 zu quetschen war. Aktuell denke ich, dass es unnmöglich sein dürfte, dies mit einem Digispoark-Bootloader zu schaffen.

Immerhin habe ich jetzt in diesen winzigen Flash die Funktionalität zur

  • seriellen Kommunikation,
  • Abbildung des USB-Protokolls,
  • I2C-Kommunikation,
  • OLED-Ansteuerung und
  • meinen eigenen Kode für den Kommandointerpreter
integriert, wie das Bild hier zeigt:

Screenshot Prototyp zeigt eine Message an

Zum Abschluss noch einige unsortierte Links, die mir bei der Minimierung der Codegröße geholfen haben:

Alle Artikel rss Wochenübersicht Monatsübersicht Codeberg Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • GeoJSON in EBMap4D

    31.07.2021

    Ich habe die Anwendung EBMap4D einer Generalüberholung unterzogen und neue Features hinzugefügt...

    Weiterlesen

Neueste Artikel

  • Automatische Konvertierung von JavaScript nach Java

    Ich halte mich von den Themen Artificial Intelligence und Machine Learning (Large Language Models) ja fern so gut es geht - vor allem, weil ich das mal studiert habe. Manchmal überkommt mich aber die Neugierde - das Resultat war bisher immer schlechte Laune.

    Weiterlesen
  • OCR Workflow in der sQLshell

    Wie bereits in einem früheren Artikel beschrieben habe verfügt die sQLshell über eine Integration zur Erfassung von Daten aus Dokumentendirekt per Optical Character Recognition. Ich habe diese Integration weiter verfeinert und möchte hier einen exemplarischen Workflow für diese Möglichkeit zeigen

    Weiterlesen
  • Docker-Services im Homelab

    Diese Seite wird mit allen derzeit in meinem Self-Hosting Homelab betriebenen Services auf Docker-Basis befüllt (Eigenentwicklungen werden nicht genannt, sofern sie keine öffentlich verfügbaren Open-Source-Lösungen darstellen).

    Weiterlesen

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen Codeberg-Repositories findet man hier.