Aus Raspberry Pi Geek 10/2019

Der BBC Micro:bit für Schüler und Elektronik-Einsteiger (Seite 2)

Das Programmbeispiel aus Listing 3 könnte einen Teil Ihrer Installation für Halloween stellen: Die Anlage fiepst unvermittelt, allerdings nur bei Dunkelheit. Die hohen Töne lassen sich nur schwer lokalisieren; schaltet man das Licht wieder ein, um die Schallquelle zu finden, bleibt das System stumm.

Listing 3

import microbit
import music
import random
BrightTrig = 50
while True:
  br = microbit.display.read_light_level()
  if br < BrightTrig:
    microbit.sleep(800 * (1+random.randrange(10)))
    music.pitch(900, 80 * (1+random.randrange(5)))

Die ersten drei Zeilen des Listings importieren die erforderlichen Python-Bibliotheken. Der Micro:bit bringt seine LEDs nicht nur zum Leuchten, er kann sie auch als Photodioden ansprechen. Je nach Helligkeit gibt der Befehl microbit.display.read_light_level() einen Wert zwischen 0 und 255 zurück. Bei einem Wert von 50 ist es schon recht dunkel (Zeile 5).

Die mit while True eingeleitete Dauerschleife legt die gemessene Helligkeit in der Variablen br ab. Ist sie größer als der Schwellwert BrightTrig, passiert nichts. Andernfalls ruft das Programm einen Wartebefehl auf, der mindestens 800 Millisekunden dauert, abhängig von der Zufallszahl random.randrange(10).

Der Befehl music.pitch erzeugt ein Rechtecksignal von 900 Hz auf Ausgang 0. Auch hier steuert ein Zufallsgenerator die Dauer. Schließen Sie einen kleinen Lautsprecher an die Kontakte 0 und GND an, beginnt der Streich – und die hoffentlich erfolglose Suche nach dem Störenfried.

In Abbildung 3 verbinden Krokodilklemmen einen Klinkenstecker mit dem Line-In-Eingang eines Verstärkers. Die Leistung des Moduls reicht gerade aus, um auch einen keramischen Lautsprecher anzuschließen – in Abbildung 1 sehen Sie ein Exemplar als kleinen schwarzen Zylinder. Ein Summer, also ein keramischer Lautsprecher mit eingebautem Tongenerator, funktioniert auch. Dann genügt es, den Ausgang ein- und anschließend wieder auszuschalten, statt ihn mit 900 Hz zu modulieren.

Abbildung 3: &Uuml;ber Krokodilklemmen l&auml;sst sich auch ein Klinkenstecker an den BBC Micro:bit anschlie&szlig;en.

Abbildung 3: Über Krokodilklemmen lässt sich auch ein Klinkenstecker an den BBC Micro:bit anschließen.

Funktionen

Die Tabelle “Die wichtigsten Befehle für den Micro:bit” fasst die wichtigsten Funktionen zusammen, mit denen sich die Sensoren des Micro:bit in MicroPython adressieren lassen. Es gibt passende Kommandos für das Matrix-Display (Abbildung 4), die Taster sowie den digitalen Ein- und Ausgang.

Funktion

Wirkung

microbit.display.show(Image.HAPPY)

zeigt auf der LED-Matrix ein Smiley

microbit.display.show(Image.SAD)

zeigt auf der LED-Matrix ein trauriges Gesicht

microbit.display.set_pixel(1, 2, 9)

schaltet die LED in Position (1,2) auf maximale Helligkeit

microbit.button_a.is_pressed()

stellt fest, ob der Taster a gedrückt wird

microbit.button_a.was_pressed()

stellt fest, ob der Taster nach dem Einschalten oder der letzten Abfrage gedrückt wurde

microbit.button_a.get_presses()

zählt, wie oft der Taster nach der letzten Abfrage gedrückt wurde

microbit.accelerometer.get_x()

liest die x-Koordinate des Lagesensors aus

microbit.pin0.read_digital()

liest den digitalen Eingang an Pin 0 aus

microbit.pin0.write_digital(1)

setzt den digitalen Ausgang an Pin 0

music.play(music.RINGTONE)

spielt eine Tonfolge, sofern ein Lautsprecher an Pin 0 angeschlossen ist

Vor dem Kommando steht immer der Name der zugehörigen MicroPython-Bibliothek.

Abbildung 4: Die LEDs im Matrix-Display des Micro:bit lassen sich unterschiedlich hell ansteuern.

Abbildung 4: Die LEDs im Matrix-Display des Micro:bit lassen sich unterschiedlich hell ansteuern.

Der Beschleunigungssensor dient, wenn sich das Modul in Ruhe befindet, gleichzeitig als Lagesensor. Um nicht mit den Orientierungswinkeln seiner drei Achsen hantieren zu müssen, gibt es den Befehl microbit.accelerometer.current_gesture(). Er versteht die Orientierungen up, down, left, right, face up, face down und shake.

Einen Kompass mit drei Achsen gibt es auch. Theoretisch wäre er empfindlich genug, um die Richtung des Erdmagnetfelds zu erkennen; in der Praxis tut er sich damit schwer. Ähnlich verhält es sich mit dem Temperatursensor: Er misst auch die Prozessortemperatur. Sie sollten also keinesfalls die Platine mit einem Föhn aufheizen, sondern sich mit der Messung der Umgebungstemperatur zufriedengeben.

Der Befehl microbin.pin0.is_touched() verbindet den Digitaleingang über einen 10-MOhm-Pullup-Widerstand. Darüber erkennt der Micro:bit, wenn ein nicht zu großer Widerstand gegen Masse anliegt. Typischerweise genügt dazu ein Finger, während ein anderer Finger gleichzeitig die Masseleitung des Micro:bit berührt – also GND, den rechten großen Kontakt auf der Platine.

Interface

Einmal geflasht, nimmt der Mikrocontroller keine Kommandos mehr entgegen. Dafür zeigt er sich selbst gesprächig und gibt seine Informationen seriell über die USB-Verbindung aus. In Abbildung 5 reicht der angeschlossene Micro:bit über den print()-Befehl den Helligkeitswert in das REPL-Command-Fenster des Mu-Editors weiter. Schließen Sie das Programm, erhalten Sie Direktzugriff auf die Daten.

Abbildung 5: Ausgabe der Helligkeit im REPL-Command-Fenster des Mu-Editors.

Abbildung 5: Ausgabe der Helligkeit im REPL-Command-Fenster des Mu-Editors.

Aus Listing 1 kennen Sie den Gerätenamen für die serielle Schnittstelle, in unserem Fall ttyACM3. Die Befehle aus Listing 4 leiten die Ausgabe des Micro:bit in das Terminalfenster um. Der Befehl cat gibt den Helligkeitswert als Dezimalzahl aus, od -x liefert ihn als Hexadezimalzahl (Abbildung 6).

Listing 4

$ cat /dev/ttyACM3
$ od -x < /dev/ttyACM3
Abbildung 6: So pr&auml;sentiert sich die Ausgabe der vom Micro:bit produzierten Daten im Terminalfenster.

Abbildung 6: So präsentiert sich die Ausgabe der vom Micro:bit produzierten Daten im Terminalfenster.

Hex-Datei

Der Mu-Editor konvertiert den Programmcode in eine sogenannte Hex(adezimal)-Datei. Trennt man vor dem Flashen die Verbindung zum Micro:bit, gibt der Editor den Zugriff auf die Datei frei und fragt nach, wo er sie ablegen soll.

Die Datei besteht zum einen aus einem 8 KByte großen MicroPython-Interpreter. Bei MicroPython handelt es sich um einen reduzierten Python-Befehlssatz, der sich in den Grundfunktionen wie ein richtiges Python anfühlt. Zum anderen enthält der Code die Byte-Sequenz des Programms, die der MicroPython-Interpreter dann ausführt. Zu guter Letzt enthält der Hex-Code auch eine komprimierte Fassung des eigentlichen Programmtexts samt Kommentaren.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben