Waarom delay() alles blokkeert
Zie hoe pauzeren ervoor zorgt dat uw board niet meer reageert.
Waarom delay() alles blokkeert is een gratis Arduino & IoT Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Arduino & IoT Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Arduino & IoT Academy bevat in totaal 4 lessen.
De eenvoudige pauze
De functie delay pauzeert je sketch gedurende een ingesteld aantal milliseconden. Dit is de eenvoudigste manier om alles te vertragen en een knippering zichtbaar te maken.
delay(1000);Wat 1000 betekent
delay(1000) wacht precies één seconde, omdat de waarde in milliseconden staat. delay(500) is dus een halve seconde en delay(2000) is twee seconden.
Het bord bevriest
Het nadeel: delay bevriest alles. Terwijl het bord wacht, doet het helemaal niets anders, als iemand die zijn adem inhoudt. 😮
Gemiste druk op de knop
Tijdens een delay kan je bord een druk op een knop niet opmerken. Druk je tijdens de pauze op de knop, dan wordt die druk simpelweg genegeerd. Voor een gebruiker lijkt dat defect.
Zie het probleem
Hier staat er tussen de controles een delay van één seconde. Elke druk die in die hele seconde plaatsvindt, gaat verloren voordat de volgende uitlezing gebeurt.
digitalRead(buttonPin);
delay(1000);Steeds maar één taak
Omdat delay blokkeert, kun je niet tegelijk een led laten knipperen en een sensor uitlezen. De hele sketch wacht als één taak.
Opgestapelde vertragingen tellen op
Twee aanroepen van delay na elkaar worden gewoon bij elkaar opgeteld. Verspreid je er meerdere, dan is je bord het grootste deel van de tijd bevroren en reageert het niet.
Prima voor eenvoudige sketches
delay is niet slecht. Voor één knipperende led, waarbij verder niets gebeurt, is het volkomen duidelijk en prima om te gebruiken.
Het echte doel
Het echte doel is een niet-blokkerende sketch die blijft reageren terwijl hij ook gebeurtenissen timet. Dat betekent dat je de lus nooit bevriest met een lange pauze.
Denk in plaats daarvan aan tijd
In plaats van te pauzeren, kun je vragen hoeveel tijd er is verstreken en pas handelen wanneer er genoeg tijd voorbij is. Intussen blijft de lus draaien.
Er komt een beter hulpmiddel aan
Straks maak je kennis met millis, een klok waarmee je verstreken tijd kunt meten zonder iets te bevriezen. Zo blijven echte projecten reageren.
Korte controle
Wat is het belangrijkste nadeel van delay in een sketch?
Samenvatting
Je hebt gezien dat delay eenvoudig is, maar het bord bevriest, invoer mist en andere taken blokkeert. Hierna ga je gebeurtenissen timen zonder de lus te stoppen. ✨
Leer C++ met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “Waarom delay() alles blokkeert” gratis?
Ja — de volledige tekst van “Waarom delay() alles blokkeert” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Arduino & IoT Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Arduino & IoT Academy bevat in totaal 4 lessen.
Wat leer ik in “Waarom delay() alles blokkeert”?
Zie hoe pauzeren ervoor zorgt dat uw board niet meer reageert. Je oefent met Arduino & IoT Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Arduino & IoT Academy te beginnen?
Ervaring vooraf is niet nodig. Arduino & IoT Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Waarom delay() alles blokkeert”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Arduino & IoT Academy?
Ja. Elke les over Arduino & IoT Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- int, float, bool op Arduino
- Waarom delay() alles blokkeert
- Knipperen zonder delay met millis
- Twee dingen tegelijk uitvoeren