Het Blokkenboek

Alle mBlock-blokken die we dit jaar gebruiken, per kleur-familie uitgelegd: wat doet het blok, waar moet je op letten, en een mini-oefening per blok. Onderaan staan de blokpuzzels: sleep de blokken in de juiste volgorde en controleer jezelf. Dit is het naslagwerk voor élke programmeerles — van het eerste knipperlichtje (week 6) tot de spellogica van je flipperkast (week 31-32).

20 blokken in 7 families 6 interactieve puzzels + 4 denkvragen
Zo lees je een blokkenprogramma Een programma is een stapel blokken die de Arduino van boven naar onder uitvoert, één voor één. Het begint altijd bij het gele startblok. Witte ovalen zijn invulvelden (daar typ je een getal), donkere velden met een pijltje zijn keuzemenu's. Blokken met een "mond" (zoals herhaal) voeren de blokken in hun mond uit.

Gebeurtenissen — hier start alles

Het startblok

wanneer Arduino Uno opstart

Wat doet het? Alles wat je hieronder vastklikt, wordt uitgevoerd zodra de Arduino stroom krijgt (of na een upload). Zonder dit blok gebeurt er níets — het is het dak van je programma.

Veelgemaakte fout: losse blokken naast het startblok laten zweven. Alleen wat áán het startblok hangt, draait mee.
Probeer dit: upload een leeg programma met alleen het startblok. Wat doet de Arduino? (Juist: helemaal niets — maar de upload lukt wel!)

Herhaal voortdurend

herhaal voortdurend
zet digitale pin 13 op hoog

Wat doet het? Voert de blokken in zijn mond eindeloos opnieuw uit. Bijna elk Arduino-programma heeft er precies één: een verkeerslicht stopt nooit, een flipperkast ook niet.

Veelgemaakte fout: blokken onder de lus hangen in plaats van erin — die worden dan nooit bereikt, want de lus stopt nooit.
Probeer dit: zet een "wacht"-blok in de lus en één eronder. Welke van de twee heeft effect?

Pinnen — praten met LED's en knoppen

Zet digitale pin ... op hoog/laag

zet digitale pin 9 op hoog

Wat doet het? Zet 5 V (hoog) of 0 V (laag) op een pin. Hoog = LED aan, buzzer piept, relais schakelt. Dit is hét blok van level 1: je verkeerslicht is drie van deze blokken.

Parameters: het pin-nummer (kijk waar je draadje zit!) en hoog of laag.

Veelgemaakte fout: het pin-nummer in het blok komt niet overeen met het gaatje waar de draad écht zit. Controleer altijd eerst je bedrading, dan pas je code.
Probeer dit: laat drie LED's (pin 8, 9, 10) tegelijk aangaan met drie blokken onder elkaar.

Lees digitale pin (is de knop ingedrukt?)

lees digitale pin 7

Wat doet het? Kijkt of er spanning op een pin staat: ingedrukte knop = 1 (hoog), losgelaten = 0 (laag). Je gebruikt het altijd ín een als-blok of vergelijking, nooit los.

Veelgemaakte fout: de knop "zweeft" zonder pull-down-weerstand en geeft willekeurige waarden. Bouw de knop altijd zoals op het schema van week 11.
Probeer dit: LED aan zolang je de knop indrukt (als-blok + dit leesblok).

Zet pwm-pin ... op ... (dimmen)

zet pwm-pin 5 op 128

Wat doet het? Geen aan/uit maar een waarde van 0 (uit) tot 255 (vol): een LED dimmen of een motor trager laten draaien. Werkt alleen op pinnen met een ~golfje (3, 5, 6, 9, 10, 11).

Veelgemaakte fout: pwm proberen op pin 8 of 13 — daar kan het niet.
Probeer dit: laat een LED "ademen": waarde 50 → wacht → 255 → wacht, in een lus.

Lees analoge pin (sensorwaarde)

lees analoge pin A0

Wat doet het? Meet een spanning als getal van 0 tot 1023. Zo lees je de LDR (licht), een draaiknop of andere analoge sensoren. Donker ≈ laag getal, fel licht ≈ hoog getal (afhankelijk van je schakeling).

Veelgemaakte fout: vergeten kalibreren. Eerst waarden bekijken via de seriële monitor, dán pas je drempelwaarde kiezen (week 12!).
Probeer dit: stuur de LDR-waarde elke seconde naar de seriële monitor en dek de sensor af. Wat gebeurt er met het getal?

Controle — wachten, herhalen, kiezen

Wacht ... seconden

wacht 1 seconden

Wat doet het? Pauzeert het programma. Zonder wachtblokken gaat alles zó snel dat je LED lijkt te blijven branden (hij knippert duizenden keren per seconde!).

Parameter: de tijd in seconden — kommagetallen mogen (0.5 = een halve seconde).

Veelgemaakte fout: tijdens een wachtblok is de Arduino "doof": een knop indrukken merkt hij dan niet. Houd wachttijden kort in programma's met knoppen.
Probeer dit: maak een knipperlicht dat 0,2 s aan en 0,8 s uit is.

Herhaal ... keer

herhaal 10 keer
wacht 0.1 seconden

Wat doet het? Voert zijn inhoud een vast aantal keer uit en gaat dan verder. Dé manier om "10× piepen" te bouwen zonder 10× dezelfde blokken te slepen.

Veelgemaakte fout: een "herhaal 10 keer" ín "herhaal voortdurend" vergeten — dan piept het maar één rondje en denk je dat het kapot is.
Probeer dit: een aftelling: 5 tikken met de buzzer, dan de LED aan ("lancering!").

Als ... dan (kiezen)

als lees digitale pin 7 = 1 dan
zet digitale pin 9 op hoog

Wat doet het? Voert zijn inhoud alléén uit als de voorwaarde in de zeshoek waar is. Dit is "selectie" — de machine kiest. Er bestaat ook een versie met anders: dan heb je twee monden (waar → bovenste, niet waar → onderste).

Veelgemaakte fout: het als-blok staat búiten de herhaal-lus en wordt dus maar één keer gecheckt — in de allereerste milliseconde. Voorwaarden checken hoort ín de lus.
Probeer dit: nachtlampje — als lichtwaarde < 300 dan LED aan, anders uit.

Wacht tot ...

wacht tot lees digitale pin 7 = 1

Wat doet het? Het programma blijft hier staan tot de voorwaarde waar wordt. Perfect voor "wacht tot de startknop wordt ingedrukt" of "wacht tot de bal de sensor raakt".

Veelgemaakte fout: wachten op een voorwaarde die nooit waar kán worden (verkeerde pin, kapotte sensor) — het programma lijkt dan vastgelopen.
Probeer dit: "wacht tot knop → speel deuntje" = de basis van je flipperkast-startknop in week 31.

Operatoren — vergelijken en rekenen

Groter dan / kleiner dan / gelijk aan

lichtwaarde > 500

Wat doet het? Vergelijkt twee waarden en zegt "waar" of "niet waar". Dit stop je in de zeshoek van een als-blok. Zo maak je drempelwaarden: "als de lichtwaarde < 300 → het is donker".

Veelgemaakte fout: > en < omwisselen. Onthoud: de open kant van het teken "eet" het grootste getal.
Probeer dit: parkeersensor — als afstand < 10 dan snelle piepjes.

Willekeurig getal tussen ... en ...

willekeurig getal tussen 1 en 6

Wat doet het? Geeft elke keer een ander getal binnen je grenzen — de dobbelsteen van de computer. Nodig voor de LED-dobbelsteen-quest en voor het reactiespel (willekeurige wachttijd).

Veelgemaakte fout: vergeten dat de grenzen meedoen: tussen 1 en 6 kan óók 1 of 6 opleveren.
Probeer dit: laat de LED een willekeurige tijd (1-5 s) branden.

Variabelen — het geheugen van je programma

Zet [score] op ...

zet score op 0

Wat doet het? Een variabele is een doosje met een naam waar één getal in past. Dit blok stopt er een nieuwe waarde in (en gooit de oude weg). Elk spel begint met "zet score op 0".

Veelgemaakte fout: "zet score op 0" ín de herhaal-lus zetten — dan wordt je score elke ronde gewist! Op nul zetten doe je één keer, vóór de lus.
Probeer dit: maak variabelen score en ballen aan — die heb je in week 31 allebei nodig.

Verander [score] met ...

verander score met 10

Wat doet het? Telt iets bij de huidige waarde op (of eraf met een negatief getal). "Verander score met 10" = 10 punten erbij; "verander ballen met -1" = een bal kwijt.

Veelgemaakte fout: "zet" en "verander" verwarren. Zet = vervangen, verander = optellen. Met "zet score op 10" blijft je score eeuwig 10.
Probeer dit: een teller die bij elke knop-druk 1 hoger gaat en zijn waarde naar de seriële monitor stuurt.

Servo & geluid — beweging en muziek

Zet servo pin ... op hoek ...

zet servo pin 9 op hoek 90

Wat doet het? Draait de servo-arm naar een hoek tussen 0° en 180° — en hij "weet" zelf waar hij staat. Twee van deze blokken kort na elkaar = de FLIP van je flipperkast: rust op 20°, slaan op 65°, en weer terug.

Veelgemaakte fout: de servo voeden vanuit de Arduino terwijl er ook motoren draaien → alles reset. Grote bewegingen + veel servo's = aparte voeding (week 17).
Probeer dit: knop ingedrukt → hoek 65, losgelaten → hoek 20. Gefeliciteerd: je hebt een flipper.

Speel toon op pin ...

speel toon op pin 8 frequentie 440 duur 0.3

Wat doet het? Laat de buzzer een toon spelen: frequentie in hertz (hoger getal = hoger geluid), duur in seconden. Noten zijn frequenties: A = 440, C = 523... Zo bouw je jingles voor start, score en game-over.

Veelgemaakte fout: de passieve buzzer omgekeerd aansluiten of een actieve buzzer gebruiken (die kent maar één toon).
Probeer dit: speel 523-659-784 kort na elkaar — herken je het "punt gescoord!"-geluid?

Communicatie — tonen wat er gebeurt

Schrijf ... naar de seriële monitor

schrijf score naar seriële monitor

Wat doet het? Stuurt tekst of een waarde via de USB-kabel naar je computer. Dé debug-truc: je ziet live wat je sensor meet of wat je score doet. In week 23 is dit je eerste scorebord.

Veelgemaakte fout: de monitor niet openen (oogje/monitor-knop in mBlock) en denken dat het blok kapot is.
Probeer dit: stuur elke seconde de LDR-waarde — je eerste eigen meetinstrument.

Toon getal op display (TM1637-extensie)

toon 1234 op display

Wat doet het? Zet een getal op het 4-cijferige scorebord — zonder computer. Het display-blok komt uit een mBlock-extensie (eenmalig toevoegen via "extensies" onderaan het blokkenpalet). Vier draadjes: 5V, GND, CLK, DIO.

Veelgemaakte fout: CLK en DIO omwisselen — het display blijft dan donker of toont onzin. Even omdraaien en het werkt.
Probeer dit: toon je score-variabele en tel met de knop omhoog: een echt mini-scorebord.

Sleep de blokken van de blokkenbak naar "jouw programma" in de juiste volgorde (klikken werkt ook: klik = verplaats). Druk daarna op Controleer. De blokken staan telkens door elkaar!

Puzzel 1 · De flits ★☆☆

De LED op pin 13 moet kort flitsen (0,5 s aan) en dan lang uit zijn (2 s). Alles staat al in een "herhaal voortdurend"-lus — zet de vier blokken in de juiste volgorde.

Blokkenbak
zet digitale pin 13 op hoog
zet digitale pin 13 op laag
wacht 0.5 seconden
wacht 2 seconden
Jouw programma (in de lus)
Papierversie: nummer de blokken 1-4 in de juiste volgorde: aan (13 hoog) · uit (13 laag) · wacht 0,5 s · wacht 2 s. Antwoord: hoog → 0,5 s → laag → 2 s.

Puzzel 2 · Het verkeerslicht ★★☆

Bouw de volledige cyclus: groen 8 s → oranje 3 s → rood 10 s (en dan begint de lus opnieuw). Let op: een licht moet ook weer uít!

Blokkenbak
zet digitale pin 8 (rood) op hoog
wacht 3 seconden
zet digitale pin 10 (groen) op hoog
zet digitale pin 9 (oranje) op laag
wacht 10 seconden
zet digitale pin 10 (groen) op laag
zet digitale pin 9 (oranje) op hoog
zet digitale pin 8 (rood) op laag
wacht 8 seconden
Jouw programma (in de lus)
Papierversie: antwoord: groen aan → 8 s → groen uit → oranje aan → 3 s → oranje uit → rood aan → 10 s → rood uit.

Puzzel 3 · De score-teller ★★☆

Het spel start met score 0. Daarna: wacht tot de bal de sensor raakt, tel er 10 punten bij, toon eerst de score op het display en speel daarna het punt-geluid.

Blokkenbak
toon score op display
zet score op 0
speel toon op pin 8 frequentie 784 duur 0.2
verander score met 10
wacht tot sensor = ingedrukt
Jouw programma
Papierversie: antwoord: zet score op 0 → wacht tot sensor → verander score met 10 → toon score → speel toon.

Puzzel 4 · De flipper ★★★

De flipper rust op 20°. Wacht tot de flipperknop wordt ingedrukt, sla dan razendsnel naar 65°, houd dat héél kort vast (0,15 s) en keer terug naar rust.

Blokkenbak
zet servo pin 9 op hoek 65
zet servo pin 9 op hoek 20
wacht 0.15 seconden
zet servo pin 9 terug naar hoek 20
wacht tot flipperknop = ingedrukt
Jouw programma (in de lus)
Papierversie: antwoord: hoek 20 (rust) → wacht tot knop → hoek 65 → 0,15 s → terug naar 20.

Puzzel 5 · Spelstart flipperkast ★★★

De opstart van jouw kast: zet eerst het aantal ballen op 3, dan de score op 0. Wacht op de startknop, speel het startdeuntje en toon daarna de score op het display.

Blokkenbak
wacht tot startknop = ingedrukt
zet score op 0
toon score op display
zet ballen op 3
speel startdeuntje op pin 8
Jouw programma
Papierversie: antwoord: ballen op 3 → score op 0 → wacht op startknop → deuntje → toon score.

Puzzel 6 · De straatlantaarn ★★☆

Een regeling! Meet eerst het licht, kies dan: is het donker (waarde < 300) → lamp aan, anders → lamp uit. Zet de vijf stappen in de juiste volgorde (de als/anders-structuur is hier plat uitgeschreven).

Blokkenbak
→ dan: zet lamp-pin 9 op hoog
zet lichtwaarde op lees analoge pin A0
→ anders-tak: zet lamp-pin 9 op laag
als lichtwaarde < 300 dan
anders
Jouw programma (in de lus)
Papierversie: antwoord: meet lichtwaarde → als donker (<300) dan → lamp aan → anders → lamp uit.

Voorspel de uitvoer — wat gaat er gebeuren?

Lees het programma, voorspel wat de Arduino doet en klik je antwoord aan.

Vraag 1. In de eeuwige lus staat: pin 13 hoog → wacht 1 s → pin 13 laag. Er staat geen tweede wachtblok. Wat zie je?

Juist! Na "laag" springt de lus meteen terug naar "hoog" — de LED is maar een paar microseconden uit, veel te kort voor je ogen. Daarom heeft knipperen twéé wachtblokken nodig.

Vraag 2. "als lichtwaarde > 600 dan LED aan, anders LED uit". Je schijnt met je gsm-lamp op de LDR (waarde stijgt naar 900). Wat doet de LED?

Juist! Het programma doet exact wat er staat, niet wat je bedóélt. Voor een straatlantaarn (aan bij donker) moet er dus < staan in plaats van >.

Vraag 3. Score start op 0. Dan: "herhaal 5 keer → verander score met 2". Wat toont het display daarna?

Juist! Vijf keer 2 erbij = 10. "Verander met" telt óp bij wat er al in het doosje zit — dit is precies hoe je bonus-combo's in je flipperkast programmeert.

Vraag 4. "zet score op 0" staat per ongeluk ín de eeuwige lus, vóór de sensorcheck. Je scoort drie keer. Wat toont het display?

Juist! Elke ronde van de lus wist de score eerst. "Op nul zetten" hoort vóór de lus (één keer, bij de spelstart) — dé klassieke fout in week 31.
Voor de leerkracht De puzzels lopen op in moeilijkheid en volgen de leerlijn: puzzel 1 hoort bij week 6-7, puzzel 2 bij week 7-9, puzzel 6 bij week 12, puzzel 3 bij week 23, puzzels 4-5 bij week 21 en 31. Op papier (printversie) worden de puzzels automatisch nummeropdrachten met antwoord. Extra oefenmateriaal nodig? Elke lespagina bevat de bijhorende blokcode-voorbeelden.

← Jaarpad · Toetsen →