MBLOCK + MBOT
INHOUD Inhoud... 2 De mbot aansluiten... 3 Voor je begint... 3 Verbinden via USB-kabel... 4 Verbinden via Bluetooth... 4 Let op!... 4 mblock vs Scratch... 5 Input - output... 7 output: besturen van de robot... 7 input: Meten met mbot... 8 Interactie tussen input en output... 10 Opdrachten... 11 Kleurwisselen... 13 Licht/donker-verklikker... 17 Gandalf the Great... 21 Lijn volgen... 25 Parkeren... 29 2
DE MBOT AANSLUITEN VOOR JE BEGINT 1. Steek de USB-kabel in je pc en aan de zijkant in de mbot en zet je mbot aan. 2. Start mblock en ga naar Extensies. Daar zou Makeblock moeten aangevinkt zijn. 3. Klik vervolgens op Boards en kijk of daar mbot (mcore) aangevinkt staat. 3
VERBINDEN VIA USB-KABEL 1. Ga naar Verbinden > Seriële Poort en klik de COM-poort aan. Normaal gezien staat daar maar 1 mogelijkheid, maar heb je (zoals in het voorbeeld) meerdere mogelijkheden, vink dan een voor een de COM-poorten aan en wacht telkens enkele seconden. 2. Bij de poort die bij je mbot past, zal je een korte piep horen die aanduidt dat er connectie gemaakt werd. VERBINDEN VIA BLUETOOTH 1. Klik op verbinden>bluetooth>zoek 2. Na enig zoekwerk van de computer komt dit venster tevoorschijn: 3. Klik op Makeblock (00:0D:19:08:3E:1E) (in het voorbeeld hiernaast, dat nummer kan verschillen): 4. Normaal zie je dan eerst dit 5. en kort daarna dit (klik niet op sluiten!) 6. Je bent verbonden (klik nu wel op sluiten) LET OP! Wil je met een rechtstreekse verbinding werken en de robot niet autonoom laten werken d.m.v. uploaden naar Arduino, klik dan eerst en vooral even op Zet standaard programma terug. 4
MBLOCK VS SCRATCH Aangezien mblock gebaseerd is op Scratch en er dus bijgevolg zeer gelijkend aan is, verwijs ik voor de basisbegrippen naar de bundels en fiches van Scratch. Hieronder zie je enkel de voornaamste verschillen tussen mblock en Scratch. 1 2 3 4 1. Bewerken Het tabblad bewerken geeft verschillende mogelijkheden om het uiterlijk van je programmeeromgeving aan te passen. Zo kan je het podium (= waar de panda nu staat) verbergen of kleiner maken om een grotere programmeeromgeving te hebben, zorgt Turbo mode ervoor dat je programma instant uitgevoerd wordt en geeft Arduino mode een extra scherm weer die je robot-programma automatisch vertaalt naar Arduino-code. 2. Verbinden Het tabblad verbinden gebruik je om je mbot (of Arduino) te verbinden met het toestel (pc of tablet) waarop je een programma geschreven hebt. Dat kan via een USB-kabel, bluetooth, of wifi. 5
3. Boards Bij boards geef je aan met welk type bord (= microcontroller) je werkt. Dat kan bijvoorbeeld mbot(mcore) zijn als je een mbot wil programmeren of Arduino wanneer je met Arduino gaat werken. 4. Robots Het grootste verschil met Scratch zijn de uitbreiding-blokken om de robot aan te sturen. Deze werken wel enkel wanneer de verbinding geslaagd is en het bolletje naast mbot groen is. Een rood bolletje zoals hiernaast geeft weer dat er geen verbinding is. 6
INPUT - OUTPUT OUTPUT: BESTUREN VAN DE ROBOT Om een beweging te programmeren heb je minstens een gebeurtenis en een robotactie nodig. Bijvoorbeeld dit: Dit werkt perfect maar heeft als nadeel dat de robot niet meer stopt met rijden nadat je pijl omhoog heb ingedrukt. Dat is namelijk niet geprogrammeerd. Daarom voeg je er best standaard nog een tweede script aan toe, met de omschrijving van wat er moet gebeuren wanneer je die knop niet meer indrukt. Doe dit nu ook voor de drie andere pijltjes en je kan je robot besturen met de pijltjes op je toetsenbord! 7
INPUT: METEN MET MBOT 1. Laat de panda op het scherm iets zeggen, bijvoorbeeld Hoi, ik ben een panda!. 2. Laat nu de panda iets variabel zeggen, bijvoorbeeld de x-waarde van de muis. a. Deze variabele muis x bestaat al en vind je bij Voelen. Je kan nu de panda die muis x laten zeggen in plaats van Hoi, ik ben een panda door Muis x op Hoi, ik ben een panda te slepen. 8
b. Wanneer je nu je programma uitvoert zegt de panda éénmaal de x-waarde van je muis. (Deze waarde zal trouwens altijd tussen de 180 en 200 liggen. Probeer het maar eens. Weet jij waarom?) Laat dit nu constant opnieuw meten zodat je telkens de nieuwste waarde ziet. Constant opnieuw iets laten doen, doe je door het herhaal voor altijd -blok te gebruiken. Dit vind je bij Bediening. 3. Laat de panda de waarde van een meting van de mbot zeggen. Vervang muis x door licht sensor op lichtsensor op het board. Aangezien dit een blok is dat de mbot bestuurt, vind je het bij Robots. 4. Pas nu zelf het programma aan zodat de afstand van de mbot tot een object voor de mbot gezegd wordt. (tip: hiervoor gebruik je de ultrasone sensor) 9
INTERACTIE TUSSEN INPUT EN OUTPUT 1. Laat de mbot reageren op de metingen. Bijvoorbeeld rijden tot iets zijn weg verspert waardoor hij moet stoppen. Hiervoor gebruiken we ook een als dan -voorwaarde die je vindt bij bediening en een vergelijkingsblok dat bij operatoren zit. 2. Zorg dat de mbot enkel stopt wanneer er iets voor staat. Dat wil zeggen dat hij terug verder rijdt wanneer er niks meer voor staat. Hiervoor gebruiken we een als dan anders -voorwaarde. 10
OPDRACHTEN 1. Kleurwisselen 2. Licht/donker-verklikker 3. Gandalf the Great 4. Lijn volgen 5. Parkeren 11
12
KLEURWISSELEN Opdracht: Laat de LED s op de mbot wisselen tussen rood, groen en blauw telkens je op de spatiebalk drukt. 1. We proberen eerst de Panda te laten tellen van 0 t.e.m. 2 wanneer op de spatiebalk gedrukt wordt. Hiervoor creëer je eerst een variabele (bijvoorbeeld teller ) waarbij, telkens gedrukt wordt, eentje bijgeteld wordt ( wijzig teller met 1 ). Vervolgens stel je voorwaarden: Als teller = 0, zeg 0, als teller = 1, zeg 1 en als teller = 2, zeg 2. 2. Dat werkt perfect zolang de teller 0, 1 of 2 is. Wanneer je echter verder op spatie drukt, doet zich een probleem voor. De teller telt verder naar 3, 4 enz., terwijl jij enkel 0, 1 of 2 wil kunnen bekomen. We moeten de teller dus resetten op het juiste moment. Dat moment is wanneer de teller groter wordt dan 2. 3. Nu we kunnen wisselen tussen 0, 1 en 2, moeten we enkel nog de mbot erbij betrekken. Gebruik set led on board alles red green blue en vul waarden in van 0 tot 255 om aan de juiste kleuren te komen. 13
Uitbreiding 1: Maak eenzelfde programma voor 6 (of zelfs meer) kleuren. Uitbreiding 2: Wissel tussen rood, groen, blauw en knipperend wit. Uitbreiding 3: Zorg dat je deze handeling onafhankelijk van een computer kan doen. Gebruik daarvoor de on board button op de mbot in plaats van de spatiebalk. Aanpassing 1: Start met mbot Programma om een programma te maken dat je kan uploaden op je mbot. Hierdoor verlies je wel je gebeurtenis en moeten we dus ietsje anders te werk gaan: enerzijds heb je een extra als-voorwaarde nodig, die bekijkt of de knop ingedrukt is, anderzijds moet die voorwaarde constant gecheckt worden en heb je dus ook herhaal voor altijd nodig. Aanpassing 2: Er zijn blokken die niet herkend worden door je mbot. Zo kan hij niets zeggen. Die blokken moeten dus weggehaald worden. 14
Aanpassing 3: De knop reageert zó snel dat er heel vlug iets bij je variabele geteld wordt. Té vlug soms. Om dat tegen te gaan, zorgen we voor een rustmoment tussen het indrukken van de knop en de volgende keer dat de lus doorlopen wordt. Dit doen we door op het einde een wacht 0.5 seconden ertussen te zetten. Aanpassing 4: Om dit programma op de mbot te zetten, open je Bewerken> Arduino mode (1) en klik je op Upload naar Arduino (2) Als je kijkt naar de code zie je trouwens hoe de vertaling van jouw blokjes naar code gebeurt. 1 2 15
16
LICHT/DONKER-VERKLIKKER Opdracht: Laat je mbot zijn LEDlichten aanspringen voor 10seconden wanneer het te donker is én er iets of iemand in de buurt is gekomen. 1. We hebben hiervoor twee sensoren nodig: licht sensor op licht sensor op het board en ultrasonische sensor op Poort 3 meet. Laten we die eerst en vooral al deze twee gemeten waarden weer te geven. Aangezien we twee variabele waarden willen weergeven, moeten we die verbinden met elkaar en om het leesbaar te houden verbinden we deze ook met een toepasselijke omschrijving. (zie ook de opdracht Lijn volgen > aanpassing 1 > uitbreiding 1) De verbinding van deze twee uitdrukkingen laten we zeggen door de panda. En aangezien we constant de nieuwste waarden willen kennen, zetten we er een herhaal voor altijd -lus rond uiteraard. Tenslotte wordt het een stuk duidelijker wanneer je je afstandswaarden laat afronden tot op de centimeter. Hiervoor bestaat het afgerond -blok dat je simpelweg rond Ultrasonische sensor op Poort 3 meet afstand zet. 17
2. De eerste voorwaarde is dat het licht aanspringt wanneer iets of iemand voor de mbot staat. Hiervoor gebruiken we ultrasonische sensor op Poort 3 meet en een als-dan. Als die ultrasonische sensor een afstand meet van minder dan bijvoorbeeld 30cm, dan zet je alle LEDs aan en wacht je 10 seconden. In programma-taal ziet dat er bijna hetzelfde uit. De tweede voorwaarde zegt dat dit alleen maar mag gebeuren als het donker genoeg is. (bijvoorbeeld <900) We doen dus eigenlijk hetzelfde als hierboven rond de vorige voorwaarde: Uitbreiding: Laat je robot verklikken zonder kabel. Aanpassing 1: Start met mbot Programma in plaats van Wanneer groene vlagje wordt aangeklikt om een programma te maken dat je kan uploaden op je mbot. Aanpassing 2: Er zijn blokken die niet herkend worden door je mbot. Zo kan hij niets zeggen. Die blokken moeten dus weggehaald worden. Indien je dat niet doet en je gaat naar aanpassing 3, dan krijg je volgende melding: 18
Aanpassing 3: Om dit programma op de mbot te zetten, open je Bewerken> Arduino mode (1) en klik je op Upload naar Arduino (2) Als je op de juiste plaats kijkt in de code zie je trouwens hoe de vertaling van jouw blokjes naar code gebeurt! 19
20
GANDALF THE GREAT Opdracht: - Laat de mbot vooruitrijden terwijl zijn LEDs groen zijn - Wanneer je je hand ervoor houdt, stopt hij en zijn de LEDs geel. (vb: afstand < 30 cm) - Wanneer je terugduwt, gaat hij achteruit en zijn de LEDs rood. (vb: afstand < 20 cm) - Wanneer je je hand weg doet, rijdt hij terug vooruit. (vb: afstand > 30 cm) 1. We moeten afstanden vergelijken, dus gebruiken we ultrasonische sensor op Poort 3 meet en gaan die waarden koppelen aan bewegingen. Om te beginnen zorgen we ervoor dat we de waarden die gemeten worden door de ultrasonische sensor kunnen lezen. Je laat de panda dus constant (= herhaal voor altijd ) de waarden zeggen van de ultrasonische sensor. 2. Vervolgens delen we de opdracht op in twee stukken. Het eerste stuk is laat de mbot vooruit rijden met groene LEDs, meet de sensor waarden kleiner dan 30cm, dan rijdt de mbot achteruit met rode LEDs Dit is perfect te programmeren met een als dan anders -voorwaarde. Als de sensor waarden meet kleiner dan 30cm, dan rijdt de mbot achteruit met rode LEDs en anders (dus als de waarde groter zijn dan 30cm) rijdt hij vooruit met groene LEDs. 21
En aangezien we in een herhaal voor altijd -lus werken, worden deze voorwaarden constant gecontroleerd en zal de robot dus ook altijd meteen reageren. 3. Nu is het de kunst om de extra voorwaarde er ook nog in te krijgen, met name dat hij stopt bij een afstand kleiner dan 30cm en pas achteruit rijdt bij een gemeten afstand kleiner dan 20cm. Die extra voorwaarde (het woord zegt het bijna zelf) is opnieuw een als dan anders. Meerbepaald als de sensor waarden meet kleiner dan 20cm, dan rijdt de mbot achteruit met rode LEDs en anders (dus als de waarde groter zijn dan 20cm) staat hij stil met gele LEDs. Deze voorwaarden geldt uiteraard wel enkel wanneer we in de zone kleiner dan 30cm zitten. Dus nieuwe als dan anders -voorwaarde zit binnenin het als <30 dan -stukje zoals hieronder. 4. Probeer het maar eens. Je robot rijdt gewoon vooruit. Wanneer je er iets voorhoudt stopt hij want bij een afstand kleiner dan 30 moet hij stilstaan. Wanneer je nu het object dichter naar de robot schuift, zal hij achteruitrijden wanneer het op minder dan 20cm voor hem staat. Doe je het terug weg, dan rijdt hij weer vooruit. 22
Vandaar de naam Gandalf the Great : jij hebt nu, net als een tovenaar, de kracht om een robot zonder er aan te komen, te laten stoppen en zelfs terug te duwen. 23
Uitbreiding: Zorg dat je Gandalf the Great kan zijn bij een robot zonder kabel. Aanpassing 1: Start met mbot Programma in plaats van Wanneer groene vlagje wordt aangeklikt om een programma te maken dat je kan uploaden op je mbot. Aanpassing 2: Er zijn blokken die niet herkend worden door je mbot. Zo kan hij niets zeggen. Die blokken moeten dus weggehaald worden. Indien je dat niet doet en je gaat naar aanpassing 3, dan krijg je volgende melding: Aanpassing 3: Om dit programma op de mbot te zetten, open je Bewerken> Arduino mode (1) en klik je op Upload naar Arduino (2) Als je op de juiste plaats kijkt in de code zie je trouwens hoe de vertaling van jouw blokjes naar code gebeurt! 1 2 24
LIJN VOLGEN Opdracht: Programmeer je robot zo dat hij een lijn volgt. 1. Er bestaat een lijnvolg module voor mbot die we gaan gebruiken. Deze module heeft 2 sensoren die het verschil zien tussen zwart en wit. Dit geeft dus 4 verschillende standen die kunnen aangeven in welke richting de lijn gaat. 0 = allebei zwart = de lijn gaat vooruit 1 = links zwart, rechts wit = de lijn gaat links 2 = links wit, rechts zwart = de lijn gaat rechts 3 = allebei wit = de lijn is weg Eerst even kijken of alles werkt zoals we het verwachten. Laat de Panda de waarde van de lijnvolg module op poort 2 zeggen, zet hier een herhaal voor altijd rond, zodat je steeds de meest geüpdatete waarde krijgt (= in realtime) en test het uit. 2. Als de lijnvolg module op poort 2 gelijk is aan 0, wil je dus dat de robot vooruit rijdt. Als de lijnvolg module op poort 2 gelijk is aan 1, wil je dat hij naar links draait. Als de lijnvolg module op poort 2 gelijk is aan 2, wil je dat hij naar rechts draait. Als de lijnvolg module op poort 2 gelijk is aan 3, wil je dat hij achteruit rijdt. Dit giet je in een programma dat er verdacht veel uitziet als hoe je het gewoon zou zeggen. Tip: maak de snelheid niet té hoog, vooral niet in de bochten. 25
3. Zorgt voor een zwarte lijnen die breed genoeg zijn (tussen 2 en 3 cm is ideaal) en die voldoende weerkaatsend zijn (isolatietape is ideaal hiervoor) Zet je mbot op de tape, klik op vlagje en kijk wat er gebeurt. Uitbreiding 1: Laat mbot de lijn volgen, maar als er iets in de weg staat moet hij stoppen. Aanpassing 1: We laten de Panda 2 sensorwaarden zeggen i.p.v. 1 Om twee woorden of waarden tegelijk te laten zeggen, gebruiken we het groene verbind-blok. Wanneer we dan de twee variabelen muis x en muis y in de plaats van hello en world slepen, zien we de panda deze waarden tegelijk zeggen. Leesbaar is het wel niet, de waarden worden helemaal tegen mekaar geplakt. Om de boel een stuk leesbaarder te maken, verbind je best een woord, bijvoorbeeld en met muis y en verbind je dat geheel dan met muis x Dit doen we nu ook met de twee sensoren in plaats van muis x en muis y 26
Aanpassing 2: De mbot laten stoppen wanneer er op 20 cm iets voor zijn neus staat. Al het bovenstaande blijft gelden. Alleen komt er een als-dan-anders-voorwaarde bij waarop dit al dan niet uitgevoerd wordt. 27
Uitbreiding: Laat je robot de lijn volgen zonder kabel. Aanpassing 1: Start met mbot Programma in plaats van Wanneer groene vlagje wordt aangeklikt om een programma te maken dat je kan uploaden op je mbot. Aanpassing 2: Er zijn blokken die niet herkend worden door je mbot. Zo kan hij niets zeggen. Die blokken moeten dus weggehaald worden. Indien je dat niet doet en je gaat naar aanpassing 3, dan krijg je volgende melding: Aanpassing 3: Om dit programma op de mbot te zetten, open je Bewerken> Arduino mode (1) en klik je op Upload naar Arduino (2) Als je op de juiste plaats kijkt in de code zie je trouwens hoe de vertaling van jouw blokjes naar code gebeurt! 28
PARKEREN Opdracht: Laat de mbot op zoek gaan naar een geschikte parkeerplaats en laat hem daar achteruit inparkeren. 1. Allereerst zorg je dat je je robot kan laten stoppen na een test. De mbot heeft namelijk de niet zo handige gewoonte het laatste stukje programma te blijven uitvoeren, zelfs wanneer je al op de stopknop drukte. Daarom maak je een scriptje dat er altijd kan voor zorgen dat de mbot stopt. 2. De bedoeling is om de robot te laten zoeken of er (voldoende) ruimte is om te parkeren. Hiervoor gebruik je de ultrasone sensor die naar de zijkant gedraaid staat. Op deze manier kan die meten of er objecten (muren of auto s) in de weg staan of niet. Dat zijn metingen die je wil kunnen zien uiteraard: Laat de Panda de waarde van de Ultrasonische sensor op Poort 3 meet afstand zeggen, zet hier een herhaal voor altijd rond, zodat je steeds de meest geüpdatete waarde krijgt (= in realtime) en test het uit. Wil je het wat duidelijker maken én een waarde in centimeter zonder cijfers na de komma? Zet er dan nog een omschrijving voor door verbind met te gebruiken en afgerond rond de waarde van de ultrasone sensor. 29
3. De robot ruimte laten zoeken is op zich niet zo moeilijk. Als de ultrasone sensor een waarde opmerkt die groter dan pakweg 10 cm naast de robot, dan wil dat zeggen dat er ruimte is en dat de robot moet stoppen, anders moet hij doorrijden. > 10cm < 10cm Geen parkeerplaats. Parkeerplaats! Bovenstaande zin is eigenlijk het programma al: Een mooi begin, op dit moment zou je hem kunnen laten inparkeren. Maar Hoe weet de robot dat de parkeerplaats ruim genoeg is? 4. De robot moet voldoende ruimte vinden om te parkeren. Dat houdt in dat er een tijdlang een afstand van meer dan 10cm gemeten moet worden om zeker te zijn dat de parkeerplaats lang genoeg is. Als er lang genoeg een open ruimte gemeten wordt, werd er een geschikte plaats gevonden en moet de robot stoppen en inparkeren. Als er niet lang genoeg een open ruimte gemeten wordt, moet de robot doorrijden en verder zoeken. Parkeerplaats! Te kort 30
(Dit heeft uiteraard rechtstreeks te maken met de snelheid waaraan de robot rijdt. Hoe sneller hij rijdt, hoe minder tijd nodig is om de gepaste lengte te vinden. Er wordt evenwel voor het gemak gewerkt met een snelheid van 100 en het is de bedoeling dat er empirisch getest wordt welke tijd voldoende is. In volgende voorbeelden wordt gewerkt met een snelheid van 100, waarbij 1 seconde een parkeerplaats met voldoende lengte aangeeft.) Om tijd te meten, gebruik je de timer die je vindt onder Voelen. Je reset de timer op het moment dat hij moet beginnen tellen en dat is wanneer de ultrasone sensor een afstand opmerkt die groter is dan 10cm. Pas wanneer de teller 1 seconde bereikt én de afstand is nog steeds groter dan 10 cm, werd er voldoende plaats gevonden en mag de robot stoppen. Wordt niet aan beide voorwaarden voldaan, dan blijft de robot rijden en reset hij constant de timer naar nul. Wanneer je dit programma uitvoert, merk je wel nog een foutje. De timer blijft tellen wanneer de parkeerplaats te klein blijkt te zijn en hij eigenlijk terug zou moeten resetten. Dat lossen we op door een extra voorwaarde voor de timer in te voegen: 31
5. Je robot weet nu wanneer hij kan parkeren. Nu moet je hem nog instructies hoe hij kan parkeren. Om dit overzichtelijk te doen, maken we best een nieuw blok Parkeren aan. (Wanneer je opties openklikt, zie je dat je nog veel meer dan enkel een naam kan toevoegen aan het nieuwe blok. Dat is in dit geval niet nodig, maar experimenteren hiermee wordt ten zeerste aangemoedigd! Zo zou je bijvoorbeeld de snelheid van inparkeren kunnen laten ingeven wanneer je kiest voor voeg cijferveld toe ) Dat blok plaats je daar in het programma waar je robot al weet dat hij kan parkeren en dus al stilstaat. En dan komt het enkel nog neer op je robot de juiste instructies te geven onder Definieer Parkeren. 32
1 2 Opmerking 1: Vergeet niet dat je, wanneer je je robot wil laten rijden, je enkel richtingen kan aangeven en geen afstanden. Vandaar dat je na iedere richtingsverandering een wacht-blok moet zetten dat aangeeft hoe lang die beweging moet uitgevoerd worden voor er overgegaan wordt naar de volgende beweging. Opmerking 2: Eindig met stop alles, anders gaat de robot terug naar zijn hoofdprogramma en begint hij terug te rijden. 33