Impulswoche - MysteryBox

Sammlung einfacher, kommentierter Beispielprogramme fuer den BBC micro:bit V2.2, programmiert in MicroPython. Entstanden fuer die Impulswoche an der Neuen Kantonsschule Aarau.

Jedes Sample ist eine in sich abgeschlossene Seite (README.md) mit:

  • Aufgabe, Materialliste und Verkabelung (Text + ASCII-Skizze)
  • dem vollstaendigen Programm - direkt in der README, automatisch aus main.py eingefuegt (siehe tools/)
  • einem Ordner wiring/ fuer das reale Foto der Schaltung (nach dem Test)

Dazu die Masse der Bauteile fuers CAD unter hardware/ (Panel-Ausschnitte fuer Taster, Displays usw.).

Editor

Alle Beispiele sind fuer den Online-Editor gedacht: https://python.microbit.org/v/3

Uebertragung Schritt fuer Schritt: docs/setup.md

Fester Einstiegsweg (Station fuer Station, Servo + Sensoren + Anzeige bis zur Codeeingabe): docs/workflow.md

Zeitplan der ganzen Woche (Tage, Meilensteine, Fristen): docs/ablaufplan.md

Tools

Anleitungen rund um den Bau, auf der Website im Menue Tools:

  • Loeten: Temperaturen, Schritte, Fehlersuche
  • LightBurn: Platte mit Loch zeichnen und als DXF exportieren, dazu Bedienung und alle Ausschnitt-Dateien
  • Fusion 360: 3D modellieren, zwei Uebungen (DXF fuer den Laser, STL fuer den 3D-Druck)

Repo-Struktur

Ordnerstruktur anzeigen
micro_bit/
├── README.md
├── docs/
│   ├── setup.md                     Editor + Uebertragung auf den micro:bit
│   ├── workflow.md                  Einstiegsweg Station fuer Station (Mo/Di)
│   └── ablaufplan.md                Agenda 2026 (Mo bis Fr)
├── tools/
│   └── build_readme.py              fuegt main.py in die Sample-READMEs ein
│
├── code-samples/                    kategorie / bauteil / sample
│   ├── onboard/                     eingebaut, KEINE Verkabelung, kein hardware/
│   │   ├── buttons/                 a-b-zaehler
│   │   ├── touch-logo/              logo-schalter                 (V2)
│   │   ├── pin-touch/               beruehr-toene
│   │   ├── accelerometer/           wasserwaage · shake-wuerfel
│   │   ├── compass/                 kompass-pfeil
│   │   ├── microphone/              lautstaerke-balken            (V2)
│   │   ├── temperature/             temperatur-anzeigen
│   │   ├── light-level/             nachtlicht
│   │   ├── display/                 bilder-und-text · einzelne-pixel
│   │   ├── speaker/                 melodie-und-sound             (V2)
│   │   └── radio/                   senden-empfangen         (2 micro:bits)
│   ├── input/
│   │   ├── ds425-pushbutton/
│   │   │   ├── ton-bei-druck/       main.py · README.md · wiring/
│   │   │   └── ton-solange-gedrueckt/
│   │   ├── ec11-encoder/
│   │   │   ├── drehen-zaehler/
│   │   │   ├── drehen-und-druck/
│   │   │   └── ton-hoehe-einstellen/
│   │   └── hc-sr04-abstandssensor/
│   │       ├── abstand-messen/
│   │       ├── naeherungsalarm/
│   │       └── entfernungsanzeige-tm1637/
│   ├── servo/
│   │   └── miuzei-9g-servo/
│   │       ├── a-b-drehen/
│   │       ├── zwei-stellungen/
│   │       ├── sweep/
│   │       ├── winkel-mit-encoder/
│   │       ├── endlagen-kalibrieren/
│   │       ├── bolzen-schalten/
│   │       └── box-startprogramm/
│   └── output/
│       ├── ws2812b-led-strip/
│       │   ├── erste-farben/
│       │   ├── lauflicht/
│       │   └── regenbogen/
│       └── tm1637-4digit/
│           ├── zahl-anzeigen/
│           ├── zaehler/
│           └── stoppuhr/
│
└── hardware/                        Masse fuers CAD, gleicher Pfad wie code-samples
                                     (nur fuer externe Bauteile, nicht fuer onboard/)
    ├── input/
    │   ├── ds425-pushbutton/        README.md · dimensions.json · bilder/
    │   ├── ec11-encoder/
    │   └── hc-sr04-abstandssensor/
    ├── servo/
    │   └── miuzei-9g-servo/
    └── output/
        ├── ws2812b-led-strip/
        └── tm1637-4digit/

Samples

onboard (eingebaut, kein Aufbau)

Bauteil Sample Beschreibung
buttons a-b-zaehler A zaehlt hoch, B runter, A+B = Reset
touch-logo logo-schalter Logo antippen schaltet ein Herz an/aus (V2)
pin-touch beruehr-toene P0/P1/P2 antippen spielt je einen Ton
accelerometer wasserwaage Leuchtpunkt zeigt die Neigung
accelerometer shake-wuerfel Schuetteln = Zufallszahl 1..6
compass kompass-pfeil Pfeil zeigt immer nach Norden
microphone lautstaerke-balken Lautstaerke als Balken (V2)
temperature temperatur-anzeigen Knopf A -> Temperatur scrollt durch
light-level nachtlicht wird es dunkel, leuchtet die Matrix
display bilder-und-text Bilderfolge und Lauftext
display einzelne-pixel Leuchtpunkt mit den Knoepfen bewegen
speaker melodie-und-sound Melodie, Soundeffekt, Ton per Logo (V2)
radio senden-empfangen zwei micro:bits funken sich Zahlen zu

input

Bauteil Sample Beschreibung
ds425-pushbutton ton-bei-druck Herz + kurzer Ton beim Druecken
ds425-pushbutton ton-solange-gedrueckt Dauerton, solange gehalten wird
ec11-encoder drehen-zaehler Wert 0..9 per Drehknopf
ec11-encoder drehen-und-druck zusaetzlich: Druck = Reset auf 0
ec11-encoder ton-hoehe-einstellen Drehen = Tonhoehe, Druck = an/aus
hc-sr04-abstandssensor abstand-messen Abstand als LED-Balken + Zahl seriell
hc-sr04-abstandssensor naeherungsalarm piept schneller, je naeher ein Hindernis ist
hc-sr04-abstandssensor entfernungsanzeige-tm1637 Abstand in cm auf der TM1637-Anzeige

servo

Bauteil Sample Beschreibung
miuzei-9g-servo a-b-drehen Knopf A/B drehen den Servo, A+B zurueck auf 0
miuzei-9g-servo zwei-stellungen Knopf A = 0 Grad, Knopf B = 180 Grad
miuzei-9g-servo sweep faehrt langsam hin und her, Knopf A haelt an
miuzei-9g-servo winkel-mit-encoder EC11-Drehknopf stellt den Winkel
miuzei-9g-servo endlagen-kalibrieren sichere Endpunkte einer eigenen Mechanik finden
miuzei-9g-servo bolzen-schalten zwischen zwei kalibrierten Endpunkten fahren (Endanschlag)
miuzei-9g-servo box-startprogramm Startprogramm fuer die eigene Box: A oeffnet, B schliesst, dazu Ideen mit den Sensoren

output

Bauteil Sample Beschreibung
ws2812b-led-strip erste-farben Strip zum Leuchten bringen, LEDs einfaerben
ws2812b-led-strip lauflicht ein Punkt wandert, Knopf A/B = Tempo
ws2812b-led-strip regenbogen Regenbogen laeuft ueber den Strip
tm1637-4digit zahl-anzeigen Grundfunktion, Treiber inklusive
tm1637-4digit zaehler Knopf A/B zaehlen 0..9999, A+B = Reset
tm1637-4digit stoppuhr MM:SS, Start/Pause/Reset, blinkender Doppelpunkt

Weitere Kategorien, Bauteile und Samples folgen.

Neues Sample hinzufuegen

Anleitung anzeigen
  1. Ordner code-samples/<kategorie>/<bauteil>/<sample>/ anlegen mit main.py und README.md. Bei externen Bauteilen zusaetzlich wiring/.
  2. Die README.md nach dem festen Abschnitts-Schema aufbauen (Details: code-samples/README.md). Kurz: Beschreibung -> Material -> Verkabelung -> Foto -> Wie der Code funktioniert -> ## Programm mit dem Code direkt darunter -> Uebertragen -> Erwartetes Verhalten -> Erweiterungen.
  3. Im Abschnitt ## Programm nur die zwei Marker setzen, den Code NICHT von Hand einfuegen:

    <!-- CODE:START -->
    <!-- CODE:END -->
    
  4. python tools/build_readme.py ausfuehren - fuegt main.py zwischen die Marker ein. Nach jeder Aenderung an main.py erneut laufen lassen; python tools/build_readme.py --check meldet veraltete READMEs.

Website (GitHub Pages)

Details anzeigen

Dieses Repo laesst sich unveraendert als Website veroeffentlichen: die _config.yml im Root aktiviert Jekyll (Theme minima) mit den GitHub-Pages- eigenen Plugins jekyll-readme-index und jekyll-relative-links - jede README.md wird automatisch zur passenden Seite, bestehende relative Links zwischen den Ordnern funktionieren dabei unveraendert weiter.

Einmalig aktivieren: Settings -> Pages -> Source: Deploy from a branch -> Branch main / (root). Danach ist die Seite unter https://masta-nksa.github.io/microbit-micropython-samples/ erreichbar und aktualisiert sich bei jedem Push automatisch. Lokale Vorschau: bundle exec jekyll serve.

Hinweise

  • micro:bit V2 hat einen eingebauten Lautsprecher und ein Mikrofon. Toene laufen mit music.pitch(freq, dauer, pin=None) ueber den Lautsprecher.
  • Die Pins P0/P1/P2 haben abschaltbare interne Pull-up-/Pull-down-Widerstaende.

© 2026 Martin Stangl (masta)