Der PicoBoy Color in MicroPython

Die angepasste MicroPython-Version aufspielen und das erste Programm starten.

Achtung: Die MicroPython-Version, die Thonny dir zur Installation anbietet, läuft auf dem PicoBoy Color nicht richtig – in ihr fehlt der Treiber für das Farbdisplay.

Du brauchst stattdessen eine angepasste MicroPython-Version, in der der Display-Treiber schon enthalten ist. Gehe dazu wie folgt vor:

  1. Lade dir aus dem Python-Ordner des Repositorys die Datei MicroPython_1_23_0.uf2 herunter – bzw. die neueste MicroPython-Datei, die dort liegt.
  2. Verbinde den PicoBoy mit dem PC und versetze ihn in den Bootloadermodus, indem du die Taste „BOOT“ gedrückt hältst, während du kurz die Taste „RES“ drückst.
    Rückseite des PicoBoy Color mit den Tasten BOOT und RES
  3. Der PicoBoy meldet sich nun wie ein USB-Stick am PC. Schiebe die heruntergeladene *.uf2-Datei darauf.
  4. Installiere die Entwicklungsumgebung „Thonny“ auf deinem Rechner. Du kannst sie hier herunterladen.
  5. Stelle beim ersten Start die Sprache auf Deutsch und lasse die „Initial settings“ auf „Standard“.
  6. Wähle in der Menüzeile unter „Extras“ den Punkt „Optionen…“ und wechsle zum Reiter „Interpreter“.
  7. Wähle dort „MicroPython (Raspberry Pi Pico)“, setze den Port auf „< Versuche den Port automatisch zu erkennen >“ und klicke auf „OK“.

Hinweis: Die *.uf2-Datei ersetzt das vorinstallierte Spielepaket. Du kannst es jederzeit neu aufspielen: Die Datei PicoPacC liegt unter Links & Downloads.

Der erste Schritt ist geschafft, MicroPython ist installiert. In der Kommandozeile unten in Thonny sollte jetzt eine Ausgabe von MicroPython erscheinen:

Thonny mit der MicroPython-Kommandozeile des PicoBoy Color

Als letzten Schritt der Vorbereitung kopierst du eine Datei auf den PicoBoy, die dir den Zugriff auf Display, Joystick, Taster und LEDs erleichtert.

  1. Speichere diese Datei auf deinem Rechner.
  2. Lade die heruntergeladene Datei über „Datei“ → „Öffnen…“ in Thonny.
  3. Speichere sie auf dem PicoBoy über „Datei“ → „Speichern unter…“.
  4. Wähle im folgenden Dialog die Option „Raspberry Pi Pico“.
    • Wenn „Raspberry Pi Pico“ nicht zur Auswahl steht, klicke auf das Stoppschild oben in Thonny, um die Verbindung neu herzustellen.
  5. Speichere die Datei unter dem Namen „pbc.py“. Beachte dabei unbedingt die Kleinschreibung!

Fertig. Du kannst den PicoBoy Color nun in MicroPython programmieren.

Kopiere für einen ersten Test den Inhalt von hallo_welt.py in ein neues Fenster in Thonny und klicke auf den grünen Pfeil („Aktuelles Skript ausführen“). Auf dem Display sollte „Hallo Welt“ in wechselnden Farben erscheinen; mit dem Taster B beendest du das Programm.

Meldet Thonny stattdessen ImportError: no module named 'pbc', liegt pbc.py nicht auf dem PicoBoy oder hat einen anderen Namen. Wiederhole dann die Schritte zum Speichern der Datei.

Eigene Programme auf dem PicoBoy speichern

Ein Programm, das du nur in Thonny geöffnet hast und mit dem grünen Pfeil startest, liegt danach nicht auf dem Gerät. Damit es dort bleibt, speicherst du es wie pbc.py über „Datei“ → „Speichern unter…“ auf dem „Raspberry Pi Pico“, mit einem Namen, der auf .py endet. pb.menu() zeigt dir diese Dateien später zur Auswahl an. Soll ein Programm direkt beim Einschalten starten, nenne es main.py. Diese Datei führt MicroPython beim Start von selbst aus.

Das Display in MicroPython

Die Programmierung des PicoBoy Color unterscheidet sich nicht von der des PicoBoy. Einzig die Ansteuerung des Displays ist eine andere: Sie läuft über eine Bibliothek von Russ Hughes, die in der oben installierten MicroPython-Version bereits enthalten ist.

Wie schon beim PicoBoy ist es sinnvoll, Grafiken zuerst in den Speicher zu zeichnen und sie erst am Ende der Berechnung zum Display zu senden. Diesen Zwischenspeicher stellt pbc.py als pb.canvas bereit – ein MicroPython-Framebuffer mit 240 × 280 Pixeln. Du zeichnest also in pb.canvas und schickst das Ergebnis mit pb.draw() zum Display.

Sieh dir dazu diese beiden Beispiele an:

Eine Übersicht zu den Funktionen des MicroPython-Framebuffers findest du hier.

Was pbc.py mitbringt

Nach import pbc und pb = pbc.PBC() stehen dir unter anderem diese Dinge zur Verfügung:

  • pb.canvas – Zwischenspeicher zum Zeichnen (240 × 280 Pixel, RGB565)
  • pb.draw() – überträgt den Zwischenspeicher auf das Display
  • pb.pressedUp(), pressedDown(), pressedLeft(), pressedRight(), pressedCenter() – Joystick abfragen
  • pb.pressedA(), pb.pressedB() – die beiden Taster abfragen
  • pb.delay(millis) – Pause in Millisekunden
  • pb.LED_RED, pb.LED_YELLOW, pb.LED_GREEN, pb.SPEAKER – die fertig eingerichteten Pin-Objekte
  • pb.setHardBoundary(x, y, radius) – hält eine Position im sichtbaren Bereich
  • pb.setPeriodicBoundary(x, y) – lässt eine Position am Rand auf der anderen Seite wieder auftauchen
  • pbc.color565(…) – erzeugt einen Farbwert für das Display; passende Werte zeigen die Beispiele oben
  • pb.menu() – zeigt alle .py-Dateien auf dem Gerät zur Auswahl an und startet die ausgewählte

Ein kurzes Beispiel ohne Display zeigt, wie das zusammenspielt. Die grüne LED leuchtet, solange du Taster A drückst, und Taster B beendet das Programm:

import pbc

pb = pbc.PBC()

while not pb.pressedB():        # läuft, bis du Taster B drückst
    if pb.pressedA():           # Taster A gedrückt?
        pb.LED_GREEN.on()
    else:
        pb.LED_GREEN.off()
    pb.delay(20)

pb.LED_GREEN.off()              # zum Schluss ausschalten

Die Programme aus dem MicroPython-Tutorial zum PicoBoy kannst du als Vorlage nehmen, wenn du sie anpasst: Statt from picoboy import PicoBoy und pb = PicoBoy() steht hier import pbc und pb = pbc.PBC(). Gezeichnet wird in pb.canvas, und statt pb.show() rufst du pb.draw() auf.

Weitere Beispiele – Hintergrundbeleuchtung, Schriftarten, Turtle-Grafik und einige Spiele – liegen im Python-Ordner des Repositorys.

Wenn du Fragen hast oder Unterstützung brauchst, melde dich per Mail an info@picoboy.de oder über Discord.