Opgave
We maken een spel voor 2 personen. De ene persoon is mens, de andere een 'robot'. De mens struurt opdrachten via de GamePad door. In de basisversie zijn de opdrachten: Vooruit, achteruit, links en rechts. De 'robot' krijgt deze commando's door op het scherm van zijn Micro:bit en voert deze uit.
Let op: Deze oefening kan je enkel maken als je weet hoe de 'radio' (communicatie) bij micro:bits werkt. Als je dit niet kan, maak je best eerst de oefening ja/nee. |
|
Benodigheden2x Micro:bit
1x GamePad |
We leren:
|
Uitleg
Het filmpje volgt later. Wat moet je weten:
1. Je hebt geen uitbreiding nodig. We werken blokken binnen de categorie 'pinnen'.
2. Er zijn 2 soorten knoppen:
1. Je hebt geen uitbreiding nodig. We werken blokken binnen de categorie 'pinnen'.
2. Er zijn 2 soorten knoppen:
- Digitaal: De 4 gekleurde knoppen en de witte knoppen aan de zijkant.
Het signaal die je krijgt kan enkel 0 of 1 zijn.
Je moet hier blokken gebruiken met het woord 'digitaal' in. - Analoog: De Joystick
Het signaal kan waarden aannemen van 0 tot 1024. In zijn ruststand is de waarde ongeveer 500.
Je moet hier blokken gebruiken met het woord 'Analoog' in.
3. Het pinschema kan je hieronder vinden. Het staat ook op de GamePad zelf geschreven.
4. Het schema hiernaast is een handig schema om te gebruiken voor de Joystick. Je kan dit kopiëren en plakken in een reactie in je code. 5. Voor de analoge joystick zijn volgende waarden handig als grenzen:
6. De gekleurde knoppen moeten we bij het opstarten eerst instellen! Als je een sensor of knop aanstuurt, moet je de micro:bit vertellen wat voor soort knop/sensor het is (pull up of Pull down). Maar sommige upgrades regelen dit zelf.
|
Y-as (P2)
+/-1024 | X-as(P1) + /- 0 --- +/-512 --- +/-1024 | +/- 0 Knoppen (Pin): Rood (P15) Geel (P14) / ) Blauw (P16) Groen (P13 Joystick (P8) |
Stappenplan oefening starten
- Surf naar Makecode
- Helemaal onderaan de pagina kan je eventueel de taal wijzigen naar Nederlands (Dutch).
- Klik op "Nieuw Project" bij "Mijn projecten".
- Vervang bij titel "zonder titel" door "UGP01 menselijke robot - zender ".
- Sla je bestand op.
- Herhaal deze stappen en maak in een nieuw tabblad het bestand "UGP01 menselijke robot - ontvanger".
1 - Zender: Montage + instellingen op voorhand.
Schuif één van de micro:bits in de GamePad.
Daarna moeten we zorgen dat onze gekleurde knoppen en drukknop op de joystick juist ingesteld worden. Dit doen we per knop eenmalig bij het opstarten. Zoek op het pinschema over welk pinnen het gaat en stel ze in met de blokken hieronder. Elke pin moet op "geen" staan. Twijfel je of je dit juist hebt ingesteld? Kijk dan even onder de knop 'Help'. Hou er wel wel rekening mee dat dit dan telt alsof je een tip van de leraar krijgt.
|
|
2 – Zender: De eerste opdracht (Vooruit)op eigen scherm laten verschijnen.
Voor we verder gaan een beetje uitleg:
We gaan nu de joystick leren 'uitlezen'. Dit wilt zeggen dat ons programma reageert bij een bepaalde stand van de joystick. Zoals je kan zien in het schema hiernaast zie je dat je joystick 2 assen heeft: De X-as en de Y-as. Elke as zit op een pin van de micro:bit. In wiskunde is in een getallenas het snijpunt van de 2 assen het punt (0,0). Naar rechts/boven zijn positieve coördinaten, naar links/onder zijn negatieve coördinaten. Bij een Joystick werkt dit gelijkaardig. Het enige verschil is dat we geen negatieve getallen hebben. Helemaal links/onder is de waarde 0 en helemaal rechts is de waarde 1024. Het midden is dus niet 0 zoals in de wiskunde, maar 512. Dit maakt het soms een beetje verwarrend. Maar op het schema hiernaast zou jullie moeten helpen |
Y-as (P2) +/-1024 | X-as(P1) + /- 0 --- +/-512 --- +/-1024 | +/- 0 |
Er is nog een groot verschil tussen elektronica en wiskunde. De waarden zijn nooit perfect. Er is dus altijd kans dat de joystick in rust niet perfect de waarden voor X-as en Y-as 512 heeft. Daarom werken we beter in zones. Voor deze opdracht kozen we volgende grenzen:
Elke beweging die je kan maken met de joystick levert een combinatie van die getallen op. In het voorbeeld hiernaast zie je alle mogelijke posities van de joystick. We hebben ook de waarden van 2 posities ingevuld. Kan je de andere aanvullen? Je kan dit controleren door de volgende afbeelding te selecteren. Dit telt dan wel als een tip. |
|
We beginnen met de opdracht "vooruit" die een pijl naar boven is. Deze opdracht verschijnt als we de joystick naar boven bewegen. Bij deze opdracht moet onze waarden liggen tussen:
|
Probeer met deze blokken de code te maken. Je kan hiernaast stap per stap zien hoe je dit stukje code best maakt. Dit telt dan wel als een tip.
|
|
In de laatste stap moeten we zorgen dat ons scherm weer naar zijn basisscherm terugkeert als we de joystick los laten. We gaan hiervoor de ruimte 'anders' gebruiken in onze 'Als/Anders-blok'.
Voor deze opdracht kiezen we er voor om als 'basisscherm' een puntje te toon op onze LED-scherm van de Micro:bit. Vergeet je niet om er voor te zorgen dat we ook het opstartscherm zien bij het opstarten van ons programma? Programmeer dit en test je programma uit. Als dit niet werkt, kan je een tip hiernaast krijgen. |
|
3 - Zender: De andere opdrachten (Rechts, Achteruit en links) maken.
Op zich zou je nu moeten kunnen de andere 3 opdrachten ook kunnen maken.
Het enige wat je moet weten is dat je de 'Als/ Anders -blok' kan uitbreiden door op het + te drukken onderaan de blok. Dan schuift er een voorwaarde tussen je laatste 'Als' en 'Anders'. Telkens een opdracht klaar is, moet je zeker testen of alles nog goed werkt. Als je hier niet in slaagt, kan je de volledige code hier bekijken. Dit telt dan wel als een tip(s). |
4 – Zender: Opdrachten laten doorsturen
We hebben nu een programma gemaakt waarbij alle opdrachten enkel verschijnen op de eigen micro:bit. Nu moeten we deze opdrachten ook rond ons doorgeven aan micro:bits.
Nu gaan we letters versturen naar onze 2e Micro:bit.
We doen dit zo snel mogelijk wanneer de joystick zo beweegt dat er een opdracht moet worden door gegeven. We versturen de volgende letters:
|
Tip: Kies consequent als je hoofdletters of kleine letters gebruikt voor het doorsturen van de code. Fouten hiertegen zijn de meest voorkomende!
|
Dit telt dan wel als een tip(s).
Deze code kunnen we voorlopig nog niet testen, want er is nog geen Micro:bit die deze signalen kan ontvangen. Onze zender is nu helemaal klaar.
Werkt iets niet helemaal zoals gepland. Dan kan je hier een voorbeeldcode zien. Dit telt dan wel als een tip(s).
Deze code kunnen we voorlopig nog niet testen, want er is nog geen Micro:bit die deze signalen kan ontvangen. Onze zender is nu helemaal klaar.
Werkt iets niet helemaal zoals gepland. Dan kan je hier een voorbeeldcode zien. Dit telt dan wel als een tip(s).
5 - Ontvanger: Opdrachten ontvangen en tonen op LED-scherm
We hebben nu een eerste programma geschreven voor de zender. Nu moeten we nog een afzonderlijk programma schrijven voor de Micro:bit. Maak dus eerst een nieuw programma aan met de naam: "UGP01 menselijke robot - ontvanger".
Het maken van de ontvanger zou je eigenlijk al zelf moeten kunnen. We zetten alle stappen nog eens kort op een rijtje.
Het maken van de ontvanger zou je eigenlijk al zelf moeten kunnen. We zetten alle stappen nog eens kort op een rijtje.
C - Je programma past 'toon lichtjes' aan
Hierbij moet hij anders reageren afhankelijk van welke letter hij ontvangt. Wanneer de Micro:bit een tekst ontvangt, plaatst hij die tekst in een variabel 'ReceivedString'. Je kan deze variabel snel plukken ui de blok [Wanneer de radio ontvangt (ReceivedString)] door (ReceivedString) te slepen uit zijn blok. Deze kan je dan gebruiken in een 'Als/Anders-blok'. Met alle blokken die je hiernaast ziet staan, zou je moeten in staat zijn om zelf de zender te maken. Let op: Voor een programma zijn tekst en getallen 2 verschillende dingen. Je zal merken dat er 2 logische blokken zijn met "=". Zorg dat je zeker de juiste gebruikt warabij er "en in de witte velden staan. Tip: Vergeet niet tussendoor heel regelmatig je programma uit te testen. |
Werkt iets niet helemaal zoals gepland. Dan kan je hier een voorbeeldcode zien. Dit telt dan wel als een tip(s).
Upgraden niveau
|
Tips
|
Proudly powered by Weebly