Micro:bit

Micro:bit

Unboxing

Eerst gaan we de micro:bit uitpakken.

micro:bit

In de doos vind je de microcontroller, een usb-kabel om de microcontroller te verbinden met een computer, een batterijhouder en twee AAA batterijen.

Plaats de batterijen in de batterijhouder en sluit de batterijen aan op de microcontroller. De batterijhouder gebruik je op momenten dat de microcontroller niet verbonden is met een computer. De controller laat meteen Hello zien en je kunt nu meteen al enkele voorgeprogrammeerde spelletjes spelen, bijvoorbeeld Chase The Dot waarbij je de knipperende led moet zien te pakken met de led die altijd aan is door de microcontroller te kantelen.

Haal de batterijen er maar weer af en sluit de microcontroller nu aan met de usb kabel. Trek aan de witte stekker om de snoertjes van de batterijhouder uit de microcontroller te halen. Trek dus niet aan het zwarte en rode draadje maar aan de stekker!

In de doos zit ook een GET STARTED papier en een SAFETY GUIDE. Die zullen we verder niet meer gebruiken.

Links

www.microbit.co.uk/app
Website om code te maken voor de micro:bit

Github van Shawn Hymel (antwoorden)
GitHub is een online client voor het Git-versiebeheersysteem en een hostingprovider voor vrije software, die alle mogelijkheden van Git en eigen toevoegingen aanbiedt. Het beschikt onder ander over toegangscontrole en verschilde samenwerkingsfuncties, zoals een issue tracker, een forum voor het aanvragen van functies, takenlijsten en wiki's voor ieder project. GitHub biedt zowel gratis en privé-repositories voor opensourceprojecten. Om privé-projecten te kunnen hosten op Github is een betaald abonnement nodig.

documentation
Documentatie van de bibliotheek.

www.draw.io
Flowcharts maken met draw.io

Bluetooth
Bluetooth blog. Sluit je micro:bit aan op je telefoon.

The IET Collection
Een serie lessen van de IET (Institution of Engineering and Technology).

1: Getting Started

Filmpje: Hello World!

Filmpje: Hello World!

Theorie

Theorie: Hello, World!
Lees de theorie na over het maken van "Hello World!" met de micro:bit.

Aan de slag

Elk script begint met de volgende regel:

from microbit import *

Je kunt meteen gebruik maken van een aantal functies, zoals sleep(), running_time(), panic(error_code) en reset().

# sleep for the given number of milliseconds.
sleep(ms)
# returns the number of milliseconds since the micro:bit was last switched on.
running_time()
# makes the micro:bit enter panic mode (this usually happens when the DAL runs
# out of memory, and causes a sad face to be drawn on the display). The error
# code can be any arbitrary integer value.
panic(error_code)
# resets the micro:bit.
reset()

De rest van de functionaliteit zit in de objecten en klassen die gebruikt worden. Als je wil weten wat er mogelijk is met die objecten en klassen, kun je zoeken in de API (Application Programming Interface). Ga naar http://microbit-micropython.readthedocs.io/en/latest/ en vul een zoekterm in.

Zoeken
Zoeken in de API

Zoek bijvoorbeeld naar de term "display" en klik op de bovenste link van de zoekresultaten. Je krijgt dan alle informatie over alle functions die het object display heeft.

http://microbit-micropython.readthedocs.io/en/latest/display.html?highlight=display

show en scroll zul je het vaakst gebruiken. show gebruik je om tekst of een afbeelding te tonen en met scroll kun je tekst over het scherm van links naar rechts laten scrollen.

En nu echt beginnen!

Ga naar http://microbit.co.uk/app.

Kies Create Code en daarna MicroPython.

Verwijder alle voorbeeldcode.

Nogmaals: bij alle programma's voor de micro:bit moet je eerst de bibliotheek van micro:bit importeren. De eerste regel van je programma is dan ook altijd:
from microbit import *

Daarna laat je een regel open begin je met het maken van code.

Als je klaar bent met de code, kies je bovenaan voor Download. De code zal worden gedownload naar de download map op je computer.

Zorg dat de micro:bit is aangesloten op de computer. Klik op Downloads weergeven (of blader naar de downloads map) en lopieer het hex bestand naar de micro:bit. Op de micro:bit wordt meteen de tekst Hello! getoond.

 

String

Een string is een verzameling van alfanumerieke tekens, zoals letters, cijfers, interpunctietekens en spaties. Het is dus een blok tekst zoals je die met je toetsenbord zou kunnen maken. Met strings kun je niet rekenen en ze staan tussn dubbele aanhalingstekens.

Integer

Een integer is een geheel getal, dus zonder dat er een decimale komma wordt gebruikt. Het getal kan wel negatief zijn, als het maar een geheel getal is.

Het display kan geen integers tonen. Als je toch een integer wil tonen, moet je die eerst omzetten naar een string met het commando str.

Bijvoorbeeld:

display.show(str(3))

Opdracht Countdown:

Maak een programma waarbij de micro:bit terugtelt van 9 naar 1 met steeds 1 seconde als tussenpauze. Als het programma bij 0 komt, wordt er een afbeelding naar keuze getoond.

Float

Floats zijn kommagetallen, dus bijvoorbeeld 1,2 of 3,4. Wij schrijven die met een komma maar in programmeertaal wordt de scheiding meestal aangebracht met een punt, dus bijvoorbeeld 1.2 in plaats van 1,2. Met random.random maak je een willekeurige float (kommagetal).

Array

Een array is een lijst met informatie. Een array heeft een naam en je herkent een array aan de rechte haken.

Antwoorden

Make the micro:bit scroll the phrase "Hello!"
Laat de micro:bit "Hello!" tonen.

micro:bit Tutorial Series Part 1: Getting Started - My Name
Laat je eigen naam zien op de micro:bit

Oefentoets

Oefening: Oefentoets na 1

Start

2: Images, Buttons, and Conditionals

Filmpje: Images

Filmpje: Images

Theorie: Images

Theorie: Images
Lees de theorie over Images met de micro:bit. Tot aan DIY Images.

Buttons

Maak een programma waarmee je kunt uitlezen hoe vaak button_a is ingedrukt. De opbouw van het programma is als volgt:

  1. Maak een variabele "aantal" en stel die op 0.
  2. Daarna maak je een while True met de volgende dingen:
    1. Toon de afbeelding ARROW_W.
    2. Maak een if waarbij telkens de variabele aantal met 1 wordt opgehoogd als er op button_a wordt gedrukt. Zoek op in de documentatie met welke functie dat kan.
    3. Met een elif bepaal je dat het aantal keren dat er op button_a is gedrukt, kan worden uitgelezen door op button_b te drukken.
    4. Als er zowel op button_a als op button_b wordt gedrukt, wordt de variabele gereset naar 0 en komt er RESET op het display te staan.

Lever deze opdracht in op itslearning.

Aan de slag

Toon de HAPPY afbeelding op je microcontroller.

HAPPY

Zoek in de documentatie op welke ingebouwde afbeeldingen er zijn en probeer er een paar.

De micro:bit heeft twee knoppen (buttons):

button_a
button_b

Met de methode is_pressed() kun je controleren of die knop is ingedrukt of niet.

button_a.is_pressed() kan True of False zijn.

Met een conditional statement zoals if kunnen we controleren of er aan de voorwaarde is voldaan.

Daarvoor wordt vaak een flowchart gebruikt.

 

 

Flowcharts

Flowchart
Flowchart

Een flowchart, is een schematische voorstelling van een proces. Het wordt over het algemeen gebruikt om een proces makkelijker te visualiseren, of om fouten in het proces te kunnen vinden.

Flowcharts worden heel vaak gebruikt bij het ontwikkelen van software. Wij gaan ook gebruik maken van flowcharts voor het ontwikkelen van onze programma's van de micro:bit.

Bovenstaande flowchart is misschien al iets te moelijk om mee te beginnen. Daarom zullen we eerst een eenvoudigere flowchart maken. We maken een flowchart als we de stappen in beeld willen brengen om een probleem op te lossen. Zo'n opeenvolging van stappen noemen we een algoritme.

Neem het volgende voorbeeld

Een vriend die ver weg woont wil bij je langs komen. Hij komt met de trein naar het station dat bij jou in de buurt is. Nu zijn er verschillende manieren voor die vriend om vanaf het station bij jouw huis te komen. Ik noem er een paar:

  1. Het taxi algoritme
    • zoek een taxi
    • stap in de taxi
    • geef de taxichauffeur het adres waar je naar toe moet
  2. Het bellen algoritme
    • als de trein aankomt bel dan mijn mobiel
    • wacht op mij op de parkeerplaats bij het station
  3. Het bus algoritme
    • neem bus 12 naar de wijk Langdonk
    • stap uit bij de halte Langdonk
    • loop naar nummer 21

Met elk algoritme bereik je hetzelfde doel, maar je ziet dat je altijd op verschillende manieren het probleem op kunt lossen.

Flowcharts hebben verschillende onderdelen en regels.

Regels

  • Elke flowchart heeft een naam.
  • Er zijn geen losse onderdelen die rondzweven (behalve de naam). Alle componenten zijn verbonden door pijlen of lijnen.
  • Er is één startpunt en één eindpunt.
  • Een proces (rechthoek) heeft altijd één inkomende en één ujitgaande pijl.
  • Een beslissing (diamant) heeft tenminste één inkomende en tenminste twee uitgaande pijlen. De uitgaande pijlen zijn gelabeld met de mogelijke antwoorden van de beslissing.
  • Houd de flowchart zo kort mogelijk,

Onderdelen

  • Ovaal: begin (start) en einde (stop)
  • Rechthoek: proces
  • Parallellogram: invoer/uitvoer
  • Diamant: beslissing
  • Pijlen: tonen de richting van het proces

Eerst teken je de flowchart met potlood en papier. Daarna kun je de flowchart prima tekenen met behulp van draw.io.

Loops en if-statements komen in een diamant te staan. Vanuit de diamant komt er een True en een False pijl.

Voorbeeld van een flowchart

Neem het volgende proces. Je weet niet zeker of je een paraplu moet meenemen als je naar buiten gaat. Daarvoor moet je eerst even het huidige weer controleren. Als het droog blijft, kun je de paraplu thuis laten. Als het niet droog blijft, neem je een paraplu mee.

Teken de flowchart met een potlood op een blanco vel A4. Zet je naam er bij en maak een foto van de flowchart met je telefoon.

 

flowchart

 

Daarna ga je naar www.draw.io en teken je dezelfde flowchart met draw.io. We gaan een hele les samen werken met het tekenen van flowcharts en de uitwerking ervan in draw.io.

Paraplu
Moet ik mijn paraplu meenemen?

 

Antwoorden

Have the micro:bit show a happy face when A is pressed, a sad face when B is pressed, and a meh face when no buttons are pressed.
Toon een happy face als knop A wordt ingedrukt, een sad face als knop B wordt ingedrukt en een meh face als er geen knop wordt ingedrukt.

Just like the example code, but it shows a confused face when the buttons are pressed simultaneously
Hetzelfde als de vorige, maar het toont een confused face als allebei de knoppen tegelijkertijd worden ingedrukt.

Shows a happy face by default but scrolls "A" when A is pressed and "B" when B is pressed
Toont een happy face maar scollt een "A" als A wordt ingedrukt en een "B" als B wordt ingedrukt.

Oefentoets

Oefening: Oefentoets na 2

Start

In te leveren opdrachten

Maak onderstaande opdrachten en lever ze in via itslearning. Je mag in tweetallen samenwerken maar iedereen levert zijn eigen werk in.

Opdracht 2.1
Maak een programma waarbij:

  • een spook getoond wordt als je op knop A drukt
  • een schedel getoond wordt als je op knop B drukt
  • een zwaard getoond wordt als er op geen enkele knop gedrukt wordt

Maak eerst een flowchart met potlood en papier. Teken de flowchart op een blanco vel A4. Op het vel staan ook je naam en "Opdracht 2.1". Als de flowchart klaar is, maak je er een foto van met je telefoon en je levert de jpg van die foto op je telefoon in. De naam van die foto is voornaam_21.jpg.

Daarna ga je naar www.draw.io en dan teken je met dat programma de flowchart. Exporteer de flowchart naar een png en noem de export voornaam_21.png.

Lever voornaam_21.jpg en voornaam_21.png in via de opdracht in itslearning.

Maak je eigen afbeeldingen

Je kunt je eigen images maken! Het display heeft 5x5=25 LEDs en elke LED kun je een waarde geven van 0 tot en met 9. Met de waarde 0 staat de LED helemaal uit en met de waarde 9 brandt die LED op zijn hardst. Met de waardes van 1 tot en met 8 kun je ze dus laten branden van zacht naar hard.

Als je dat weet kun je bijvoorbeeld een bootje tekenen op de volgende manier:

from microbit import *

boat = Image("05050:"
             "05050:"
             "05050:"
             "99999:"
             "09990")

display.show(boat)

Zo maak je dus je eigen afbeelding. Elke regel bestaat uit vijf cijfers van 0 tot en met 9 met daarachter een dubbele punt. En die regel staat weer tussen dubbele quotes. Elk cijfer geeft de felheid aan waarmee de LED moet branden. Bij 0 staat die LED uit en hoe hoger het cijfer, hoe harder de LED zal branden. Het hoeft niet met vijf regels. Het mag ook zo:

boat = Image("05050:05050:05050:99999:09990")

Animaties

We kunnen met de micro:bit ook animaties maken door een aantal afbeeldingen achter elkaar af te spelen. Er zitten al enkele lijsten met dezelfde afbeeldingen ingebouwd, nameleijk Image.ALL_CLOCKS en Image.ALL_ARROWS.

from microbit import *

display.show(Image.ALL_CLOCKS, loop=True, delay=100)

Net zoals bi jeen enkele afbeelding gebruiken we display.show om de afbeeldingen te tonen op het display. We geven de opdracht dat MicroPython Image.ALL_CLOCKS moet gebruiken en de micro:bit begrijpt dat hij die afbeeldingen één voor één moet afspelen. We geven ook de opdracht dat het afspelen eindeloos moet doorgaan met  loop=True. Tenslotte willen we een korte pauze tussen de verschillende afbeeldingen. Met delay=100 wordt er 100 ms gewacht.

Hetzelfde kun je proberen met  Image.ALL_ARROWS. Met loop=False zet je de eindeloze herhaling uit en met delay kun je de snelheid van de animatie aanpassen.

Je kunt dus je eigen plaatjes maken, die in een array zetten en dat array tonen op het display. Hieronder zie je hoe je een bootje kunt laten zinken.

from microbit import *

boat1 = Image("05050:"
              "05050:"
              "05050:"
              "99999:"
              "09990")

boat2 = Image("00000:"
              "05050:"
              "05050:"
              "05050:"
              "99999")

boat3 = Image("00000:"
              "00000:"
              "05050:"
              "05050:"
              "05050")

boat4 = Image("00000:"
              "00000:"
              "00000:"
              "05050:"
              "05050")

boat5 = Image("00000:"
              "00000:"
              "00000:"
              "00000:"
              "05050")

boat6 = Image("00000:"
              "00000:"
              "00000:"
              "00000:"
              "00000")

all_boats = [boat1, boat2, boat3, boat4, boat5, boat6]
display.show(all_boats, delay=200)

Maak een eigen animatie en lever die in met itslearning.

In te leveren opdrachten

1)
Maak een animatie van een ondergaande zon. De zon zakt schuin naar beneden en gaat steeds minder fel stralen. Let ook op de snelheid waarmee de animatie wordt afgespeeld. Plaats de code in een txt bestand en lever dat in bi itslearning.

2)
Maak een eigen animatie en lever die in bij itslearning.

3: Input/Output

Onder aan de micro:bit zie je een gouden strip met vijf gaten en daaronder 0, 1, 2, 3V en GND. Dat zijn pins die je kunt gebruiken om iets in te voeren. De rechtse pin met GND (ground/massa) houd je ingedrukt of sluit je aan. Als je dan ook één van de andere aansluit of aanraakt, kun je daar code op laten reageren. De eerste drie pins zijn genummerd 0, 1 en 2.

Met de volgende code kun je bijvoorbeeld een HAPPY plaatje laten zien als je GND vasthoudt en pin 0 aanraakt aan de boven- of onderkant. Probeer onderstaande code maar eens. Als je niets doet, wordt er een SAD afbeelding getoond. Probeer eens!

from microbit import *

while True:
    if pin0.is_touched():
        display.show(Image.HAPPY)
    else:
        display.show(Image.SAD)

 

Theorie: Input/Output

Lees de theorie van de pins. We doen nog even niets met Bleeps and Bloops.

Aan de slag

Maak een programma waarmee je met de drie pins drie verschillende afbeeldingen worden getoond. Als er geen enkele pin wordt aangeraakt, wordt er weer een andere afbeelding getoond.

4: Music

Met pin 0 en de GND kun je muziek afspelen.
Met pin 0 en de GND kun je muziek afspelen.

Probeer onderstaande code van Vader Jacob.

import music

tune = ["C4:4", "D4:4", "E4:4", "C4:4", "C4:4", "D4:4", "E4:4", "C4:4",
        "E4:4", "F4:4", "G4:8", "E4:4", "F4:4", "G4:8"]
music.play(tune)

Als je nu een luidspreker aan zou sluiten op pin 0 en op GND, dan zou je dit kunnen afspelen. Er ligt een luidspreker in het lokaal om dingen uit te proberen.

Lees de theorie over wat je met muziek en de micro:bit kunt doen.

5: Random

Lees de theorie over random tot aan de Seeds of Chaos.

Met de functie random kun je een willekeurig getal maken.

from microbit import *
import random

display.show(str(random.randint(1, 6)))

Hiervoor moet je wel de klasse random importeren. Dat doe je op de tweede regel. Op de eerste regel importeer je microbit zoals je gewend bent. Vervolgens importeer je op de tweede regel de klasse random.

De functie show aangeroepen worden om iets te laten zien op het object display. Nu is het zo dat dit object enkel maar strings (tekst) kan laten zien en geen integers (gehele getallen). De uitkomst moet dan ook worden omgezet van een integer (geheel getal) naar een string (tekst) en dat doe je met str.

De functie die gebruikt wordt voor het willekeurig getal, is randint() en je geeft het kleinste getal en het grootste getal op, dus in het voorbeeld van een dobbelsteen is dat random.randint(1,6). Van de klasse random gebruik je de functie randint() en die functie heeft twee parameters, een minimum en een maximum.

Probeer deze code!

Willekeurige string

MicroPython heeft een module Random waarmee je een willekeurige string kunt laten tonen uit een reeks van strings in een array. Bekijk het volgende voorbeeld.

from microbit import *
import random

names = ["Mary", "Yolanda", "Damien", "Alia", "Kushal", "Mei Xiu", "Zoltan" ]

display.scroll(random.choice(names))

Je ziet dat op de tweede regel de module random apart wordt geïmporteerd. Daarna volgt er een rijtje met namen.

names = ["Mary", "Yolanda", "Damien", "Alia", "Kushal", "Mei Xiu", "Zoltan" ]

Zo'n rijtje met gegevens noemen we een array. En een array heeft een naam, in dit geval names. De namen in het array hebben een index waarmee je ze kunt vinden. Het eerste item in het array heeft als index 0, het tweede 1, het derde 2, enzovoorts. De index begint dus met 0.

Van het object display gebruik je de methode scroll. Vervolgens toon je van het array de naam met een willekeurige index.

dobbelsteenMaak nu een dobbelsteen met je eigen afbeeldingen op de volgende manier:

  1. Maak een lijst met als naam "dobbelsteen".
  2. Maak nu zes eigen afbeeldingen zoals ze ook op een echte dobbelsteen staan. Voor de zes branden bijvoorbeeld de eerste en de laatste pixel van de eerste rij, de eerste en de laatste pixel van de derde rij en de eerste en de laatste pixel van de onderste rij.
    Dit zou dus de zes zijn:
    Image("90009:"
                 "00000:"
                 "90009:"
                 "00000:"
                 "90009")
    De andere maak je zelf.
  3. Het programma begint met het tonen van de afbeelding HAPPY.
  4. In de while True meet je of de gesture 'shake' is.
  5. Daarna gebruik je deze twee regels:
    display.show(dice, loop=True, wait=False, delay=100)
    sleep(4000)
  6. Op de volgende regel wordt dan een willekeurige afbeelding getoond.
  7. Het programma wordt afgesloten met een sleep(10).

Lever deze opdracht in op itslearning.

Nog meer willekeur

In een array kun je elementen stoppen die van een verschillend type zijn.

mixed_up_list = ["hello!", 1.234, Image.HAPPY]

Het array met als naam mixed_up_list heeft drie elementen. Het eerste is een string "hello", het tweede is een float (kommagetal) 1.234 en het derde is een afbeelding. Die kun je gewoon willekeurig tonen.

from microbit import *

display.show(Image.ALL_CLOCKS, loop=True, delay=100)

Commentaar in de code

Het is gebruikelijk boven in je code de naam van de maker te zetten. Je plaatst een # voor een regel zodat de regel niet als code becshouwqd wordt maar als informatie over de code.

Aan de slag

De Postcodeloterij

Bij de Postcode Loterij wint er altijd een postcode.  Het numerieke gedeelte van de Nederlandse postcode kan een getal van 1000 tot en met 9999 zijn. Maak een programma voor de micro:bit waarbij een postcodegebied geloot wordt.

In te leveren opdrachten

Liefdesmeter

Maak twee arrays met namen van klasgenoten. In het ene array zitten vijf jongens en in het andere array zitten vijf meisjes. Als je op de linkerknop drukt, wordt er een willekeurige naam van een jongen getoond. Als je op de rechterknop drukt, komt er een willekeurige naam van een meisje door het beeld.

Opdracht 5.1
Lever het tekstbestand van deze opgave in met itslearning. Dus niet het hex bestand, maar het bestand dat je op internet hebt gemaakt voor je de download hebt gedaan. Je mag samenwerken, maar iedereen levert zijn eigen bestand in. Je naam staat als commentaar in de code.

Opdracht 5.2
dobbelsteenMaak nu een dobbelsteen met je eigen afbeeldingen op de volgende manier:

  1. Maak een lijst met als naam "dobbelsteen".
  2. Maak nu zes eigen afbeeldingen zoals ze ook op een echte dobbelsteen staan. Voor de zes branden bijvoorbeeld de eerste en de laatste pixel van de eerste rij, de eerste en de laatste pixel van de derde rij en de eerste en de laatste pixel van de onderste rij.
    Dit zou dus de zes zijn:
    Image("90009:"
                 "00000:"
                 "90009:"
                 "00000:"
                 "90009")
    De andere maak je zelf.
  3. Het programma begint met het tonen van de afbeelding HAPPY.
  4. In de while True meet je of de gesture 'shake' is.
  5. Daarna gebruik je deze twee regels:
    display.show(dice, loop=True, wait=False, delay=100)
    sleep(4000)
  6. Op de volgende regel wordt dan een willekeurige afbeelding getoond.
  7. Het programma wordt afgesloten met een sleep(10).

Lever deze opdracht in op itslearning.

5: Movement

De micro:bit heeft een accelerometer. Dat is een versnellingsmeter waarmee je beweging kunt detecteren. In verschillende gsm's, smartphones en sommige iPods zit een versnellingsmeter die wordt gebruikt om te registreren wanneer de gebruiker ermee schudt, zodat bijvoorbeeld de afspeellijst wordt geshuffeld. Ook in de Wii remote en de PlayStation 3 controller zit een versnellingsmeter om bewegingen van de gebruiker waar te nemen.

De accelerometer meet langs drie assen:

  • X - beweging van links naar rechts
  • Y - beweging voorwaarts en achterwaarts
  • Z - beweging op en neer

Voor elke as is er een methode om de accelerometer uit te lezen. De waarde 0 is de basiswaarde.

Zet onderstaand script op de micro:bit en probeer het uit. Als de micro:bit precies waterpas wordt gehouden, zie je drie puntjes (een streepje) in het midden van het display. Beweeg de accelerometer van links naar rechts en andersom en je ziet dat er een L en een R tevoorschijn komen. Probeer deze code.

from microbit import *

while True:
    reading = accelerometer.get_x()
    if reading > 20:
        display.show("R")
    elif reading < -20:
        display.show("L")
    else:
        display.show("-")

De y en z as kun je op dezelfde manier uitlezen.Het apparaat moet constant die waardes uitlezen en daarom wordt er een eindeloze lus gebruikt. De waarde van een as wordt in een variabele gezet. In bovenstaand voorbeeld stop je de waarde van de x as dus in de variabele reading.

Op deze manier kan je telefoon bijvoorbeeld bepalen hoe een afbeelding getoond moet worden, rechtop met de korte zijdes boven en onder of met de lange zijdes boven en onder.

Aan de slag

Lees de x uit van de accelerometer en zorg dat die wordt getoond wordt met display.scroll. Let op: het uitlezen van de x geeft een getal terug en je wil een string laten zien op het display. De variabele naam die je gebruikt is x_acc.

6: Gestures

Met de accelerometer kun je detecteren of de micro:bit bewogen wordt en op welke manier. MicroPython kan de volgende gestures detecteren: up, down, left, right, face up, face down, freefall, 3g, 6g, 8g, shake. Gestures worden weergegeven als strings.

Om het huidige gesture uit te lezen, gebruik je de volgende methode: accelerometer.current_gesture

Probeer het volgende voorbeeld te begrijpen. Zet het op je micro:bit.

from microbit import *

while True:
    gesture = accelerometer.current_gesture()
    if gesture == "face up":
        display.show(Image.HAPPY)
    else:
        display.show(Image.ANGRY)

We gebruiken weer een while loop om constant te meten. In de loop gebruiken we een variabele gesture en daar stoppen we het huidige gesture in. Als de gesture gelijk is aan "face up" wordt de afbeelding HAPPY getoond en anders de afbeelding ANGRY.

Let op het dubbele is gelijk teken om te bepalen of de waarde van de variabele gelijk is aan iets!

Neem de theorie door.

Magic-8

Probeer de code. Zet het op je micro:bit.

from microbit import *
import random

answers = [
    "It is certain",
    "It is decidedly so",
    "Without a doubt",
    "Yes, definitely",
    "You may rely on it",
    "As I see it, yes",
    "Most likely",
    "Outlook good",
    "Yes",
    "Signs point to yes",
    "Reply hazy try again",
    "Ask again later",
    "Better not tell you now",
    "Cannot predict now",
    "Concentrate and ask again",
    "Don't count on it"
    "My reply is no",
    "My sources say no",
    "Outlook not so good",
    "Very doubtful",
]

while True:
    display.show("8")
    if accelerometer.was_gesture("shake"):
        display.clear()
        sleep(1000)
        display.scroll(random.choice(answers))

Er wordt een array met antwoorden ingelezen. De naam van het array is answers. Pas bij de while begint het eigenlijke programma. Standaard wordt er een 8 getoond. Als er geschud wordt met de micro:bit wordt eerst het scherm leeggemaakt, dan 1000ms gewacht en tenslotte wordt er een random antwoord getoond.

In te leveren opdrachten

Opdracht 1:

Maak een dobbelsteen. Telkens als je schudt met de micro:bit komt er een willekeurig getal tussen de 1 en de 6 op het display.

Opdracht 2:

Maak het spel Rock, Paper, Scissors na. Je schudt met de micro:bit en één van de drie afbeeldingen komt tevoorschijn.

Deze twee opdrachten lever je in op itslearning bij opdracht 6.

Je levert de tekstcode in. Dus de code in een txt bestand. Géén Word bestand of hex bestand.

Opdracht 3:
Maak een stappenteller. Maak gebruik van een variabele die begint met 0 stappen. Telkens als er een "shake" plaatsvindt, wordt de variabele met 1 opgehoogd.
Werk in groepjes van twee of drie. Ga als volgt te werk:
1) Praat eerst in het algemeen in het groepje hoe je denkt dat je dit kunt maken. Maak daar een tekening of een schets van zonder echte code te gebruiken.
2) Maak samen één flowchart met potlood en papier op een blanco vel. Maak met je telefoon een foto van de flowchart en lever ook de flowchart in als jpg.
3) Iedereen maakt de code op zijn eigen micro:bit en levert die in als tekstbestand.

Herhalingsopdrachten

Toon een letter

Toon de eerste letter van je voornaam op het display.

Toon een naam

Toon je voornaam op het display. De letters komen achtereenvolgens op het display zonder dat ze scrollen.

Laat een woord één keer scrollen

Laat je voornaam één keer over het scherm scrollen.

Zorg dat een woord oneindig blijft scrollen

Maak je voornaam in hoofdletters en zorg dat die naam voortdurend blijft scrollen.

Toon een afbeelding

Laat een hartje zien.

Toon een cijfer

Toon het cijfer 3 op het display.

Toon de uitkomst van een berekening

Toon de uitkomst van de berekening zien van 2x3. De uitkomst daarvan is 6. Je mag geen 6 als antwoord in de code typen, maar je laat de micro_bit dit zelf uitrekenen.

Werken met button_a

Als button_a wordt ingedrukt, komt er een hartje op het display.

Werken met button_a en button_b

Als je button_a indrukt, krijg je de afbeelding HAPPY en als je button_b indrukt, krijg je de afbeelding SAD.

Werken met button_a, button_b en een derde afbeelding

Als je button_a indrukt, krijg je de afbeelding HAPPY. Als je button_b indrukt, krijg je de afbeeldingt SAD. Bij het opstarten van het programma wordt de afbeelding HEART getoond.

Werken met een pin

Als je pin 0 aanraakt, verschijnt de afbeelding HEART.

Werken met meerdere pins

Als je pin 0 aanraakt, verschijnt de afbeelding HEART, als je pin 1 aanraakt, verschijnt de afbeelding HAPPY en als je pin 2 aanraakt, verschijnt de afbeelding SAD.

Werken met random

Laat een random getal zien tussen de 6 en de 9, dus er komt een 6, 7, 8 of 9 in beeld.

Werken met random en buttons

Als je op button_a drukt, komt er een random getal van 1 tot en met 4. En als je op button_b drukt, komt er een getal van 5 tot en met 9.

Een random string uit een array

Van onderstaand array moet een willekeurige naam scrollen.

namen = ["Jan","Piet","Kees"]

Test verschillende keren met de reset knop.

Werken met gestures

Standaard komt er de afbeelding SAD in beeld. Als je met de micro:bit schudt, komt de afbeelding HAPPY.

7: Direction

Er zit een kompas op de micro:bit. Met onderstaande code kun je bijvoorbeeld het noorden bepalen. Probeer onderstaande code.

from microbit import *

compass.calibrate()

while True:
    needle = ((15 - compass.heading()) // 30) % 12
    display.show(Image.ALL_CLOCKS[needle])

Eerst komt de tekst in beeld: "DRAW A CIRCLE". En daarna wordt er één pixel opgelicht, precies in het midden van het display.

Voor je het kompas kunt gebruiken, moet het gecalibreerd worden. Als je dat niet doet, krijg je onzinnige resultaten. Het calibreren gebeurt met een spelletje waarmee het apparaat kan bepalen waar het zich bevindt ten opzichte van het magnetisch veld van de aarde.

Dat kalibreren doe je door een cirkel te maken van de losse punten die op het display komen. Telkens als er een puntje verschijnt, stuur je dat naar de rand van het display door het display een bepaalde kant op te tillen. Als alle pixels van de rand gevuld zijn (behalve de hoekpunten) is het kompas gekalibreerd.

Als je dat gedaan hebt, verschijnt er heel even een afbeelding en daarna zal de micro:bit het noorden aanwijzen met één van de afbeeldingen uit het array ALL_CLOCKS.

 

Opdracht: Flappy Bird

We gaan  Flappy Bird namaken. Volg de stappen zoals op deze website vermeld staat.

Flappy Bird