Een naam voor je blokken
Je programma uit Mikken werkt, maar het is lang geworden. Als je er snel naar kijkt, zie je niet meteen wat de robot doet. Daarom geef je een groepje blokken een naam: een subprogramma. Daarna zet je in je programma alleen nog die naam.
Een subprogramma maken
Je maakt twee subprogramma's: mikken en slaan. Sleep je een blok, dan gaan alle blokken eronder mee. Daarom werk je van onder naar boven.
- Klik op de groep Eigen blokken en sleep twee keer het blok Subprogramma naar een lege plek. Noem het ene
mikkenen het andereslaan. - Sleep duurt 2000 ms, het onderste blok in als … dan, even opzij naar een lege plek.
- Sleep Servo 9 op 90 in het subprogramma
slaan. duurt 500 ms eronder gaat vanzelf mee. - Sleep stel hoek in op 0 in het subprogramma
mikken. De twee herhaal 50 keer-blokken gaan vanzelf mee. - Klik met de rechtermuisknop op het subprogramma
mikkenen kies Maak "mikken". Je krijgt een blok mikken. Doe hetzelfde voorslaan. - Zet in als … dan, onder duurt 500 ms: eerst het blok mikken, dan slaan, en dan duurt 2000 ms terug.
Het programma
De sensor zit nog op A0 en de servo op D9.
De blokken worden geladen.
Lees nu alleen het Leaphy-blok: als er een bal ligt, dan de servo op 0, mikken, slaan, en wachten. Zo lees je in één keer wat de robot doet. Wil je weten hoe hij mikt, dan kijk je in het subprogramma mikken.
Voorspel: doet je robot nu iets anders dan bij Mikken?
Nee. De robot voert precies dezelfde blokken uit, in dezelfde volgorde. Komt hij het blok mikken tegen, dan doet hij alles wat in het subprogramma mikken staat, en gaat daarna verder met slaan.
Klik op Upload naar robot en kijk of je voorspelling klopt.
Probeer het zelf
Maak ook een subprogramma achter, voor de blokken die de arm naar 0° zetten.
Tip
Het gaat om de twee blokken bovenaan in als … dan: Servo 9 op 0 en duurt 500 ms. Sleep je Servo 9 op 0, dan gaat alles eronder mee. Sleep daarom eerst het blok mikken, met alles eronder, even opzij.
Antwoord
- Sleep het blok mikken in als … dan opzij. slaan en duurt 2000 ms gaan mee.
- Maak een subprogramma
achteren sleep Servo 9 op 0 erin. duurt 500 ms gaat mee. - Kies met de rechtermuisknop Maak "achter", zet het blok achter in als … dan, en zet het opzij gezette stapeltje eronder.
De blokken worden geladen.
Het Leaphy-blok leest nu als een zin: achter, mikken, slaan.
Er gaat iets mis
Je hebt het subprogramma slaan gemaakt, maar de arm slaat niet meer.
Oorzaak: een subprogramma doet pas iets als het blok met zijn naam in je programma staat. Je sleepte de servo-blokken naar het subprogramma, maar zette het blok slaan niet terug.
Oplossing: klik met de rechtermuisknop op het subprogramma slaan, kies Maak "slaan", en zet het blok onder mikken.
In het subprogramma mikken staan ook de blokken van het slaan.
Oorzaak: je sleepte stel hoek in op 0 naar mikken terwijl de blokken van het slaan er nog onder zaten. Alles wat onder een blok vastzit, gaat mee.
Oplossing: sleep Servo 9 op 90 uit mikken naar slaan. De blokken eronder gaan weer mee. Sleep duurt 2000 ms daarna terug onder slaan in als … dan.
Controlevraag
Je wilt de slag harder maken. Waar verander je de 90, en hoe vaak?
Antwoord
Eén keer, in het subprogramma slaan. Je hoeft niet in het lange programma te zoeken welk Servo-blok de slag is: het staat onder de naam slaan. Gebruik je slaan later op meer plekken, dan geldt de nieuwe stand overal.
Klaar? Kijk dan bij de Extra's wat je er nog bij kunt maken.