mBot-tutorial: Programmeren in mBlock
In een eerdere workshop bouwden we ons eigen Arduino-robotje, de mBot. Die lieten we standaard acties ondernemen via afstandsbediening en app. Nu is het tijd om zelf te programmeren met mBlock.
Lees eerst: mBot-tutorial: Bouw je eigen robot met Arduino
mBlock is een grafische programmeeromgeving gebaseerd op Scratch 2.0. Je programmeert er je robot mee door blokjes met opdrachten aan elkaar te klikken. Download eerst de nieuwste versie van mBlock. Voer het installatieprogramma uit en kies daarin je taal (Nederlands is beschikbaar). mBlock installeert onder andere Adobe AIR en de Arduino IDE.
De eerste keer dat je mBlock start, krijg je waarschijnlijk een melding van Windows Firewall. Klik op Toegang toestaan. Klik daarna op het kruisje om het splash screen van mBlock af te sluiten. Ga dan naar het menu Language en vink Nederlands aan om de taal van de interface te veranderen.
Overigens bestaat er ook een app-versie van mBlock, Makeblock.
mBot verbinden met pc
Om de mBot te programmeren, verbind je die eerst met je pc. Dat is mogelijk via Bluetooth, de draadloze seriële module (als je mBot ook zo’n module heeft) of usb. We tonen hoe dat gaat met usb. Gebruik je overigens usb, dan heb je de kabel alleen nodig tijdens het uploaden van je programma naar de mBot. Daarna kan de kabel er gewoon af en is de robot weer vrij.
Je mBot verbinden kan o.a. via Bluetooth en usb
Installeer eerst de usb-drivers. Dat doe je in het menu Verbinden / Arduino Stuurprogramma Installeren. Kijk daarna in het menu Boards na of mBot (mCore) staat aangevinkt. Sluit de usb b-connector aan de zijkant van de mCore op je robot aan. De a-connector steek je in je computer. Schakel je mBot in. Wacht even tot Windows de driver heeft geladen. Open dan in het menu Verbinden het onderdeel Seriële Poort en kies de poort die in het submenu staat, zoals COM3. Als alles goed gaat, piept je mBot nu.
De verbinding is er dus, maar nu moet mBlock nog met je pc kunnen communiceren. Daarvoor installeren we het communicatieprotocol op de mBot. Dat doen we in het menu Verbinden / Firmware Upgraden. Als het gelukt is, krijg je de melding Upload gelukt en geeft je mBot twee korte piepjes.
mBlock, de basics
Nu zijn we klaar voor ons eigen programma. We houden dit eerste programma simpel, gewoon om te tonen hoe je je mBot programmeert. Klik in het midden van het hoofdvenster van mBlock op Robots en sleep het blokje mBot Programma naar rechts, waar je programma komt te staan. Sleep ook het blokje Laat een C4 horen in Halve maat naar rechts en klik dat in het blokje mBot Programma. Verander de C4 in F4 en de Halve maat in Hele maat. Dubbelklik op het blokje dat je daar hebt geplaatst om de opdracht op je mBot uit te voeren. Je robot speelt de toon af.
Je hebt je eerste mBot-programma nu al uitgevoerd, maar de robot hangt nog altijd van je pc af. Daar gaan we iets aan doen door het programma naar het interne geheugen van de mBot te uploaden. Klik daarvoor eerst op het menu Bewerken / Arduino mode. Rechts krijg je nu de Arduino-code te zien die overeenkomt met je mBlock-programma. Klik bovenaan rechts op Upload naar Arduino. Als er Upload gelukt staat, staat het programma op je mBot. Om dat te controleren, verwijder je de usb-kabel, schakel je de mBot uit en weer in. Hij begroet dan de wereld door de gevraagde toon af te spelen.
©PXimport
mBot scripts
Ons ‘hello world’ programma bevat eigenlijk al veel wat in elk mBot-programma zit. Je begint altijd met een blok mBot Programma. Dit geeft de start van je programma aan. De bult onderaan het blokje klik je dan in een uitsparing van een volgend blokje. Elk blokje met een bult klik je terug in een uitsparing van het volgende blokje. Zo’n blokje met uitsparingen is een opdracht. Zo zijn er opdrachten om de robot te verplaatsen, om de snelheid van de motoren te wijzigen, om de leds in een bepaalde kleur te laten oplichten enzovoort.
Als je in de scripts van categorie Robots kijkt, zie je ook blokjes die geen bult en uitsparing hebben, maar een ovale vorm hebben. De lijnvolgmodule en ultrasone sensor, maar ook optionele modules zoals een temperatuur- of bewegingssensor zijn voorbeelden hiervan. Zo’n ovaal blokje geeft altijd een bepaald getal terug. Dit soort blokjes klik je op de plaats van een getal (in een ovaal) in een ander blokje.
©PXimport
Een laatste soort blokjes zijn zeshoekig. Zo’n blokje voert een test uit, bijvoorbeeld of de knop van de robot is ingedrukt. Zo’n testblokje klik je normaal in een blokje zoals als … dan …, wacht tot … en herhaal tot … …. Die laatste blokjes vind je in de scripts van categorie Bediening. Kijk tot slot ook eens in de categorie Operatoren. Daar vind je onder andere zeshoekige blokjes … en … of … of … om tests te combineren, of een ovaal blokje kies willekeurig van … tot … om een willekeurig getal te kiezen.
Lees verder op de volgende pagina om je mBot rond te laten rijden aan de hand van je eigen commando's.
Om de kracht van mBlock te tonen, creëren we een programma dat lijnen volgt. Daarvoor eerst even wat uitleg over de algemene aanpak in dit programma. De lijnsensor geeft drie mogelijke waardes terug: 0 als de robot midden op een lijn staat, 1 als de robot zich rechts van een lijn bevindt en 2 als de robot zich links van een lijn bevindt.
Wat de robot moet doen om de lijn te volgen, is dus eenvoudig. Als de robot op de lijn staat, blijft hij rechtdoor rijden. Als de robot zich rechts van de lijn bevindt, stuurt hij naar links. En als de robot zich links van de lijn bevindt, stuurt hij naar rechts. Dat links of rechts sturen doen we door beide motoren met een andere snelheid te bewegen.
Hoe zetten we deze redenering nu om in mBlock? Na het verplichte blokje mBot Programma gaan we eerst variabelen definiëren voor drie snelheden: traag, normaal en snel. Daardoor hoef je later niet op verschillende plaatsen in je programma de getallen te veranderen als je je robot sneller of trager wilt laten draaien.
Klik daarom op de categorie Data&Blokken en dan op Maak een Variabele. Geef als naam voor je variabele normaal en herhaal dit voor snel en traag. Voeg dan drie blokjes wijzig … naar … onder mBot Programma. Wijzig de vakjes in de blokjes zodat je achtereenvolgens de waarde van traag op 50 zet, van normaal op 150 en van snel op 250.
Lijnvolg module
Sleep dan uit de categorie Bediening een blokje herhaal voor altijd en klik daarin een blokje als … dan … anders. Voeg in de uitsparing van anders nog eens een blokje als … dan … anders en in de uitsparing van anders van die laatste een blokje als … dan. Je hebt nu drie tests waarin er als aan een bepaalde voorwaarde is voldaan, bepaalde opdrachten worden uitgevoerd.
Sleep uit de categorie Operatoren het blokje … = … achter de als, drie keer. Achter het gelijkheidsteken vul je de eerste keer 0 in, de tweede keer 1 en de derde keer 2. Vóór het gelijkheidsteken voeg je telkens het ovaal blokje Lijnvolg module op Poort 2 uit de categorie Robots toe.
We hebben nu de drie posities ten opzichte van de lijn gedefinieerd. Het enige wat er nu nog nodig is, zijn de motoracties in die drie situaties. Voeg daarom achter elke dan twee blokjes wijzig motor … naar snelheid … toe. Zorg dat het telkens om motor M1 en M2 gaat. Wat we nu nog moeten invullen zijn de snelheden van de motoren.