Calliope I²C Erweiterung für OLED Displays 128x128 und 128x64 Pixel

Ich möchte die Erweiterung calliope-net/matrix zur Benutzung und Diskussion empfehlen.

Vielleicht will jemand Linien, Flächen, Text, Bilder, Animationen oder eine Echtzeit-Analoguhr programmieren. Anwendungsbeispiele nehme ich gern entgegen: Ein (animiertes) Calliope Logo, 3-D Grafik, Spiele, Sonderzeichen als 8x8 Pixel, Geometrie-Funktionen, …
Für Kunst und höhere Mathematik fehlt mir das Talent.

Alle Blöcke sind auf der GitHub README Seite beschrieben, ich beantworte auch Fragen.
Dort sind auch Bezugsquellen für Displays und EEPROM. Der EEPROM kostet z.B. unter 5€, das sollte bei Interesse kein Problem sein.

Diese Seite bei calliope-net.github.io/matrix/ öffnen.

  • speichert alle Pixel im RAM (2048 oder 1024 Byte), deshalb Calliope mini ab V2 erforderlich
  • zeichnet Linien, Rechtecke, Kreise oder eine analoge Uhr
  • Bilder verschiedener Größe 5x8 bis 64x64 Pixel mit Blöcken selbst malen
  • Text pixelgenau positionieren, drehen, spiegeln, in verschiedene Richtungen zeichnen
  • Bilder (auch Text-Zeichen sind Bilder) vergrößern (in x und y Richtung getrennt strecken)
  • mehrere Bilder als Animation anzeigen
  • zwei Displays mit verschiedenen I²C Adressen können verschiedene Bilder zeigen

optional: Qwiic EEPROM 64 KByte an I²C anstecken

  • speichert ASCII Zeichensatz + Umlaute und spart Programmspeicher
  • kann 256 Zeichen je 8x8 Pixel speichern (anstatt 96 Zeichen je 5x8 Pixel)
  • viele Bilder speichern und direkt aus dem EEPROM in die Matrix kopieren
  • umgekehrt den Inhalt der Matrix im EEPROM speichern und wieder verwenden
  • orange EEPROM Blöcke sind in der Erweiterung calliope-net/matrix enthalten

Hallo Lutz,

habe deine Erweiterung schon bewundert! Da ist ja wirklich alles dabei was man jemals gebrauchen könnte. Und sauber programmiert, im Gegensatz zu meinen Erweiterungen. Ich sollte mal alle auf Youtube vorstellen, damit noch mehr profitieren können.
Allerdings muss ich sagen dass die Erweiterung eher was für Fortgeschrittene ist. Z.B. wird irgendwo in den Anleitungen zu Makecode empfohlen, dass die Initialisierung idealerweise automatisch mit Standardwerten erfolgen sollte. (Außer man möchte z.B. eine andere I2C-Adresse angeben)
Aber ansonsten super, super, super!

Viele Grüße und viel Spaß beim programmieren

Michael

Hallo Michael,

na ja, ich habe am Anfang von Dir und anderen Beispielen abgeschrieben, weil ich keine Ahnung von JavaScript hatte. Die Deklaration der Blöcke ist für mich Zauberei. Da habe ich viel probiert. Und optionale Parameter verwendet. Die brauchst du nicht aufklappen.

Kann mir jemand „shim“ an einem Beispiel erklären? Wie kann ich ein Image Objekt variabler Größe (mit Parametern width und height) erzeugen?

Eine Initialisierung beim Start wird es bei mir immer geben, vor allem wenn Instanzen von Klassen verwendet werden. So wie beim 4-Digit-Display.

Für Fortgeschrittene soll es schon sein. Die Standardanwendung in der Schule, wo es schnell funktionieren muss, damit man nach 45 Minuten alles wieder vergessen hat, habe ich nicht als Zielgruppe. Eigentlich speichere ich bei GitHub, damit ich meinen eigenen Code wieder finde.

Und die Schüler bei mir wissen schon, dass Erweiterungen mit der Tastatur in die TextBox geschrieben werden.

Ich habe ja überhaupt erst angefangen es selbst zu machen, weil ich die bebilderten Erweiterungen länger benutzt habe und dann haben sich viele aufgehängt. Und so wird es wohl noch sein.

Und dann fiel mir auf, dass es so viele I²C Module (Qwiic mit 3,3V Logik) gibt, die sich ganz einfach (und gleichzeitig) an Calliope anstecken lassen (und preiswert und leicht verfügbar sind). Seit dem entstehen nicht nur funkferngesteuerte Fahrzeuge…
CalliBot mit Joystick fernsteuern - gab es das schon?

Viele Grüße
Lutz