Code beter begrijpen
Op deze pagina oefen je met voorspellen wat code doet. Lees elke vraag, probeer eerst zelf het antwoord te bedenken, en kijk dan pas naar de tip of de oplossing.
Opdracht 1: simpele while-loop
from time import sleep
teller = 0
while teller < 3:
print("Hallo!")
teller = teller + 1
sleep(1)
Vraag: hoe vaak wordt "Hallo!" geprint?
Tip
Kijk goed naar teller. Deze begint bij 0 en wordt elke keer met 1 verhoogd. De loop stopt zodra teller < 3 niet meer waar is.
Oplossing
"Hallo!" wordt 3 keer geprint:
- 1e keer:
teller = 0(0 < 3 is waar) - 2e keer:
teller = 1(1 < 3 is waar) - 3e keer:
teller = 2(2 < 3 is waar) - Daarna:
teller = 3(3 < 3 is niet waar → loop stopt)
Tussen elke print zit 1 seconde pauze door sleep(1).
Opdracht 2: twee loops onder elkaar
from time import sleep
teller = 0
while teller < 2:
print("Eerste loop!")
teller = teller + 1
sleep(1)
teller = 0
while teller < 3:
print("Tweede loop!")
teller = teller + 1
sleep(1)
print("Klaar!")
Vraag: wat wordt geprint en in welke volgorde?
Tip
De tweede loop begint pas als de eerste helemaal klaar is. Let ook op dat teller weer op 0 wordt gezet.
Oplossing
Eerste loop!
Eerste loop!
Tweede loop!
Tweede loop!
Tweede loop!
Klaar!
De eerste loop draait 2 keer (teller 0 en 1), daarna wordt teller weer 0 en draait de tweede loop 3 keer (teller 0, 1 en 2). Tot slot komt "Klaar!".
Opdracht 3: while True met sensor
from leaphymicropython.sensors.linesensor import AnalogIR
from time import sleep
sensor = AnalogIR("A0", 2500)
while True:
kleur = sensor.black_or_white()
print(kleur)
sleep(0.5)
Vraag: wanneer stopt deze code met printen?
Tip
Wat betekent while True:?
Oplossing
Nooit, totdat je het programma handmatig stopt. while True: is een oneindige loop. Elke halve seconde wordt de kleur geprint.
Opdracht 4: while met voorwaarde
from leaphymicropython.sensors.linesensor import AnalogIR
from time import sleep
sensor = AnalogIR("A0", 2500)
while sensor.black_or_white() == "white":
print("Ik zie wit!")
sleep(0.1)
print("Ik zie zwart!")
Vraag: wanneer wordt "Ik zie zwart!" geprint?
Tip
De loop draait zolang de sensor "white" ziet. Wat gebeurt er als de sensor "black" detecteert?
Oplossing
Zodra de sensor zwart ziet stopt de while-loop, en dan komt "Ik zie zwart!" één keer onderaan in de Shell te staan.
Opdracht 5: teller met sensor
from leaphymicropython.sensors.linesensor import AnalogIR
from time import sleep
sensor = AnalogIR("A0", 2500)
zwarte_lijnen = 0
while zwarte_lijnen < 5:
if sensor.black_or_white() == "black":
zwarte_lijnen = zwarte_lijnen + 1
print("Lijn gevonden! Totaal:", zwarte_lijnen)
sleep(0.1)
print("Klaar! 5 lijnen gevonden!")
Vraag: wat moet je doen om dit programma te laten stoppen?
Tip
zwarte_lijnen houdt bij hoe vaak "black" is gedetecteerd. Wanneer wordt deze verhoogd?
Oplossing
Je moet de sensor 5 keer over een zwarte lijn bewegen. Pas dan is zwarte_lijnen gelijk aan 5 en stopt de loop.
Let op: als je de sensor te lang stil houdt boven dezelfde zwarte lijn, telt hij vaak meerdere keren omdat de loop elke 0,1 seconde checkt.
Opdracht 6: met of zonder sleep?
Code A:
from leaphymicropython.sensors.linesensor import AnalogIR
sensor = AnalogIR("A0", 2500)
while True:
kleur = sensor.black_or_white()
print(kleur)
Code B:
from leaphymicropython.sensors.linesensor import AnalogIR
from time import sleep
sensor = AnalogIR("A0", 2500)
while True:
kleur = sensor.black_or_white()
print(kleur)
sleep(1)
Vraag: wat is het verschil?
Tip
Let op de aan- of afwezigheid van sleep(). Wat doet die functie?
Oplossing
- Code A print de kleur duizenden keren per seconde. Onleesbaar snel.
- Code B print de kleur elke seconde — rustig en goed te volgen.
Gebruik altijd een kleine sleep() in je loop, anders rent het programma weg.
Opdracht 7: twee sensoren combineren
from leaphymicropython.sensors.linesensor import AnalogIR
from time import sleep
sensor_links = AnalogIR("A0", 2500)
sensor_rechts = AnalogIR("A1", 2500)
while True:
links = sensor_links.black_or_white()
rechts = sensor_rechts.black_or_white()
if links == "black" and rechts == "black":
print("Beide sensoren zien zwart!")
break
sleep(0.1)
print("Programma gestopt!")
Vraag: wanneer stopt dit programma?
Tip
Let op and in de if en het woord break.
Oplossing
Het programma stopt zodra beide sensoren tegelijk zwart zien.
andbetekent: allebei moeten waar zijn.breakstopt de while-loop direct.- Zolang minstens één sensor wit ziet, blijft de loop draaien.
Handig om bijvoorbeeld een kruising op de baan te detecteren.
Opdracht 8: alleen bij verandering
from leaphymicropython.sensors.linesensor import AnalogIR
from time import sleep
sensor = AnalogIR("A0", 2500)
vorige_kleur = "white"
while True:
huidige_kleur = sensor.black_or_white()
if huidige_kleur != vorige_kleur:
print("Verandering!", vorige_kleur, "->", huidige_kleur)
vorige_kleur = huidige_kleur
sleep(0.1)
Vraag: wanneer wordt er iets geprint?
Tip
Wat betekent !=?
Oplossing
Alleen wanneer de kleur verandert (van wit naar zwart of van zwart naar wit).
!=betekent niet gelijk aan.vorige_kleuronthoudt wat de sensor de vorige keer zag.- Blijft de kleur gelijk → niets gebeurt. Verandert hij → één regel print.
Voorbeeld output:
Verandering! white -> black
Verandering! black -> white
Verandering! white -> black
Veel handiger dan "black" of "white" duizenden keren per seconde te printen.
Klaar
Je hebt nu geoefend met:
- While-loops met een teller
- Oneindige loops (
while True:) - While-loops met een voorwaarde
sleep()om de snelheid te beheersen- IR-sensoren uitlezen in een loop
- Meerdere sensoren combineren
- Veranderingen detecteren
Dit zijn de bouwstenen voor een lijnvolgende robot.