Verdieping Mirco:bit met micropython
Je kan de Micro:bit ook met een echte programmeertaal programmeren. De Micro:bit ondersteund daarvoor Python. Je kan dit net als met de Scratch taal online doen (https://python.microbit.org/v/2.0), maar je kan ook een editor installeren op je computer. De editor heet Mu en daarmee kan je Python code programmeren (https://codewith.mu/en/download). Dit programma kan je ook op een usbstick zetten met PortaMu.
Kies hier voor BBC micro:bit
Hierboven zie je een programma die Hallo allemaal! op het ledschermje laat zien. Deze code is vergelijkbaar met onderstaande code in blokjes:
De onderstaande regel moet er altijd zijn:
from microbit import *
Deze regel zorgt ervoor dat de Micro:bit jou kan begrijpen. Je haalt daarmee code in jouw applicatie die die al door de programmeurs van de Micro:bit geschreven zijn zodat de code weet dat bij display.scroll(“”) het ledscherm wordt bedoeld.
Let op: elke typefout maakt dat de code NIET werkt. Dus ook het gebruik van kleine en hoofdletters moet je zeer precies doen. In Python is het ook heel belangrijk dat je alle code netjes in de linkerkantlijn onder elkaar staat. Dus geen extra spaties!
Uitleg van display.scroll(“Hallo allemaal!”)
De code display is een zogenaamd object. Dit object bedient het led scherm op de Micro:bit. Je kan via allerlei methodes dit object bewerken. In dit geval met de methode scroll(). Let op de open en sluit haak achter de methode. Dit geeft aan dat het een methode is. Het is een soort functie die aan de hand van attributen (die tussen de haakjes staat) een eigen stukje code weer uitvoert. In dit geval geef je een tekst mee. Alles wat een waarde is (zoals tekst) en geen Python commando moet tussen de hoge komma’s staan. In dit geval geef je de tekst “Hallo allemaal!” mee. De functie scroll zorgt ervoor dat deze tekst vervolgens over het scherm wordt gerold.
Codevoorbeelden op een rij
boat = Image("05050:"
"05050:"
"05050:"
"99999:"
"09990")
display.show(boat)
Bedienen ledscherm Je kan elk ledje een helderde kleur geven. 0 is uit en 9 is het felste licht.
Met het voorbeeld hiernaast kan je dit per led instellen.
boat is een variabele in Python.
display.show(Image.HAPPY)
Deze code laat een ingebouwde afbeelding zien.
Er is een hele lijst met alle mogelijke afbeeldingen.
sleep(10000)
display.scroll(str(button_a.get_presses()))
Dit script wacht 10000 miliseconden (= 10 seconden) en toont dan hoe vaak er is gedrukt op knop a.
while running_time() < 10000:
display.show(Image.ASLEEP)
display.show(Image.SURPRISED)
Dit script toont 10 seconden de ASLEEP afbeelding en daarna de SUPRISED afbeelding.
while True:
# Do stuff
Deze code zorgt voor een continu loop (de hele tijd zoals we die kennen van het blokken programmeren).
while True:
if button_a.is_pressed():
display.show(Image.HAPPY)
elif button_b.is_pressed():
break
else:
display.show(Image.SAD)
display.clear()
Hier zie je het afvangen van het drukken op knop a (HAPPY afbeelding) of knop b (stoppen van de continu loop). Anders wordt SAD afbeelding getoond.
if something is True:
# do one thing
elif some other thing is True:
# do another thing
else:
# do yet another thing.
Dit is de als dan, anders dan uit de blokjes code. Let goed op het inspringen (een tab), anders werkt de code niet goed.
while True:
if pin0.is_touched():
display.show(Image.HAPPY)
else:
display.show(Image.SAD)
Deze code staat ook een een continu loop (de hele tijd) en controleert of er op pin0 een knop (of iets anders) wordt ingedrukt.
pin0.write_digital(1)
sleep(20)
pin0.write_digital(0)
sleep(480)
Dit is digitaal schrijven (zie opdracht 8 met het led lampje aan en uit).
import random
display.show(str(random.randint(1, 6)))
Dit is de dobbelsteen, let op dat als je het object random gebruikt je deze wel moet importeren.
while True:
if button_a.was_pressed():
display.show(str(random.randint(1, 6)))
De dobbesteen actief onder knop a (gooien).
while True:
reading = accelerometer.get_x()
if reading > 20:
display.show("R")
elif reading < -20:
display.show("L")
else:
display.show("-")
Hier zie je de accelerometer actief.
while True:
gesture = accelerometer.current_gesture()
if gesture == "face up":
display.show(Image.HAPPY)
else:
display.show(Image.ANGRY)
Hier nog een voorbeeld met bewegingsdetectie.
compass.calibrate()
while True:
needle = ((15 - compass.heading()) // 30) % 12
display.show(Image.ALL_CLOCKS[needle])
Het kompas in werking.