We gaan in dit experiment een digitaal kompas maken. Met behulp van het ingebouwde kompas kunnen we een richting bepalen. De chip die hiervoor verantwoordelijk is, is heel gevoelig voor magnetisme en kan daardoor het magnetische veld van de Aarde meten. Door de gevoeligheid moeten we eerst het kompas kalibreren (of ijken). Dat klinkt moeilijk, maar het is eenvoudig te doen.
Het doel van dit experiment is het ontwerpen van een game waarbij je moet raden welke kant de naald opstaat. Je weet dus niet welke windrichting je moet meten. Door het laten knipperen van een LED weet je of je de juiste richting aanwijst. Sneller knipperen van de LED geeft aan dat je in de juiste richting wijst. Met een druk op de knop kun je een gokje wagen. Winner of try again zijn de uitkomsten. Echt verliezen is er dus niet bij 🙂
Doelen van dit experiment. Je leert hoe je
Zodra de Microbit is opgestart zal er gevraagd worden om een rondje te maken met de Microbit. Dit zorgt ervoor dat het kompas geijkt wordt. Zodra het ijken gelukt is verschijnt er een smiley in het LED display. Zoals je in de programmacode hieronder kunt zien maken we gebruik van meerdere variabelen. Zo zijn er variabelen voor de afbeelding (mage), het doel (goal) het verschil tussen gemeten en doel (difference). Ook zie je in onderstaande afbeelding een variabele die graden (degrees) is genoemd.
In de laatste do is een mooie if, then, else constructie gebruiken. ‘Doe als’ het verschil tussen ‘goal’ ‘difference’ kleiner is (<) dan 15. Winnaar! Else, Try Again!.
Met het uitvoeren van bovenstaande code wordt de Microbit een eenvoudig spelletjesplatform. Nadat het kompas is geijkt wordt er een willekeurig getal gegenereerd in ‘Goal’. Tussen de 0 en 360 graden. Dit is de winnende positie waarin de Microbit gedraaid moet worden. In de forever loop kun je de actuele waarde van de positie van de Microbit opslaan. Zodra deze in de buurt komt van de variabele ‘Goal’ gaat de LED op P0 sneller knipperen. Door ‘Goal’ van ‘Degrees te trekken kun je een negatieve waarde krijgen (bijvoorbeeld door net aan de verkeerde kant van Goal te zitten). Met de functie ABS voorkom je een negatieve waarde. -10 wordt dan automatisch +10. Door de beperkingen in de feedback (de LED gaat langzamer/sneller knipperen) zie je het verschil tussen -10 en + 10 toch niet. Op beide posities zal de LED even snel gaan knipperen.
<pre class="lang:js decode:true" title="Experiment 8 programmacode">from microbit import *
import random
Degrees = 0
Difference = 0
Goal = random.randrange(360)
Smiley = Image("05050:"
"05050:"
"00000:"
"50005:"
"05550")
compass.calibrate()
display.show(Smiley)
while True:
while button_a.is_pressed() == False:
Degrees = compass.heading()
Difference = abs(Goal - Degrees)
pin0.write_digital(1)
sleep(Difference * 5)
pin0.write_digital(0)
sleep(Difference * 5)
if Difference < 15:
display.scroll("Winner")
Goal = random.randrange(360)
else:
display.scroll("Try Again")
Goal = random.randrange(360)