Physical computing/microPython
microPython [1] is een versie van Python speciaal bedoeld voor microcontrollers met beperkte mogelijkheden. Voor steeds meer microcontrollers is dit een alternatief voor de Arduino IDE.
De voorbeelden die we hier geven zijn bedoeld voor de micro:bit.
- we gebruiken bij voorkeur de Mu-editor op de desktop: https://codewith.mu
- een alternatief is de online editor: https://python.microbit.org/v/2.0 (online editor)
- documentatie: micro:bit: https://microbit-micropython.readthedocs.io/en/latest/
microPython voor andere microcontrollers
Varianten van microPython zijn onder meer beschikbaar voor:
- ESP8266: http://docs.micropython.org/en/latest/esp8266/quickref.html
- ESP32: http://docs.micropython.org/en/latest/esp32/quickref.html
- PyCom bordjes (IoT):
- Adafruit Express bordjes: CircuitPython
Er zijn kleine verschillende tussen deze versies van microPython, vooral in het interface met de hardware (hardware-API).
- Deze verschillen zijn in de praktijk wel zo lastig dat je niet zomaar een programma op een andere microcontroller kunt uitvoeren: de oorspronkelijke versie van microPython maakt andere keuzes dan de microbit-versie.
Structuur van een programma
Een microPython-programma is een gewoon Python-programma.
Een gebruikelijke opzet is: eerst de nodige imports
,
dan de definities van classes, functies, en variabelen;
en tenslotte de uitvoerbare opdracht(en).
Bij het aanzetten van het apparaat (in dit geval: de microbit) of bij het uitvoeren van een "reset" wordt eerst een "boot" programma uitgevoerd, en daarna het eigenlijke besturingsprogramma.
Een besturingsprogramma eindigt in principe nooit: er kan altijd een volgende input komen. Alleen als je het apparaat uitzet, stopt het programma.
Hieronder zie je een voorbeeld van een microbit-programma dat wacht op het indrukken van button A: dan verandert het "sad face" in "happy face".
from microbit import *
while True:
if button_a.is_pressed():
display.show(Image.HAPPY)
else:
display.show(Image.SAD)
En het traditionele "Blink" programma:
from microbit import *
while True:
if button_a.is_pressed():
display.show(Image.HAPPY)
else:
display.show(Image.SAD)