Week 11 · Invoer: de drukknop

Tot nu toe kon de Arduino alleen práten (LED's aan en uit). Deze week leert hij lúisteren: digitale invoer met de drukknop. In drie stapjes omhoog — LED zolang de knop is ingedrukt, dan een toggle, dan een teller met een echte variabele — naar de missie van de week: een voetgangerslicht dat pas wisselt als iemand op de knop drukt. En zoals afgesproken: flowchart eerst.

LPD 17 · 20 missie: 40 XP · logboek: 10 XP

Lesdoelen

Lesverloop (5 lesuren)

BlokDuurFaseWat gebeurt er
115 minInstapFoto van een Vlaams voetgangerslicht met drukknop: hoe "weet" het licht dat jij daar staat? Demo: de leerkracht drukt op een knop en een LED reageert — vandaag bouwt iedereen dit zelf.
125 minInstructieDigitale invoer op het bord: een pin kan ook lúisteren (INPUT). Het zwevende-pin-probleem en de oplossing: de pull-down-weerstand. Live-demo met de seriële monitor: mét en zónder weerstand.
110 minBegeleidIedereen sluit de knop aan (pin 7, 10 kΩ naar GND) en controleert via de seriële monitor: losgelaten = 0, ingedrukt = 1.
250 minZelfstandigStap 1: LED aan zolang de knop is ingedrukt (als-dan-anders in de eeuwige lus). Stap 2: de toggle — één druk = aan, nog een druk = uit. Wie de toggle ziet "stotteren" ontdekt contactdender (en de oplossing: even wachten).
350 minZelfstandigStap 3: de teller — een variabele telt hoe vaak er gedrukt is en toont dat via de seriële monitor. Daarna: flowchart van het voetgangerslicht tekenen en laten aftekenen (zonder afgetekende flowchart geen blokken!).
450 minZelfstandigMissie: het voetgangerslicht bouwen en programmeren: knop indrukken → auto's van groen via oranje (3 s) naar rood → voetgangers 8 s groen → alles veilig terug naar de beginstand.
535 minVerdiepingAfwerken en testen (drie keer na elkaar foutloos!). Wie klaar is: uitbreidingen of side quest Reactiespel. Wie vastzit: mini-debug-dojo met de checks van week 10.
515 minAfsluitingLogboek: foto van de opstelling + flowchart erbij; "welke bouwsteen was deze week nieuw?" (antwoord: selectie mét invoer + variabele). Opruimen, XP-moment.

Instructie: de Arduino leert luisteren

1 · De knop aansluiten — waarom die extra weerstand?

Een pin die nergens mee verbonden is, "zweeft": hij vangt ruis op als een antenne en geeft willekeurig 0 of 1. Daarom trekken we de pin in rust naar 0 met een pull-down-weerstand:

  1. Van 5 V naar het ene been van de knop.
  2. Van het andere been van de knop naar pin 7.
  3. Van pin 7 óók via een weerstand van 10 kΩ naar GND.

Rust: de pin "hangt" via 10 kΩ aan GND → hij leest 0. Knop ingedrukt: 5 V wint het van de zwakke weerstand → de pin leest 1. Zo simpel is het — maar zonder die weerstand wordt je knop een dobbelsteen.

Breadboard-valkuil: de drukknop heeft 4 pootjes die per twee al intern verbonden zijn. Zet hem altijd óver de middengoot van het breadboard, anders "drukt" hij permanent.

2 · Stap 1: LED aan zolang je duwt

Selectie in het echt: de voorwaarde wordt élke ronde van de lus opnieuw gecheckt.

Als-dan-anders: knop ingedrukt → LED aan, anders uit
wanneer Arduino Uno opstart
herhaal voortdurend
als lees digitale pin 7 = 1 dan
zet digitale pin 9 op hoog
anders
zet digitale pin 9 op laag

Klassieke fout uit week 10, patiënt 3: staat het als-blok búiten de lus, dan checkt het maar één keer. Voorwaarden horen ín de lus.

3 · Stap 2: de toggle (met geheugen!)

Eén druk = aan, nog een druk = uit. Daarvoor moet het programma onthóuden of de lamp brandt — dat doet de variabele lampstatus (0 = uit, 1 = aan).

Toggle: de variabele lampstatus onthoudt de toestand
wanneer Arduino Uno opstart
zet lampstatus op 0
herhaal voortdurend
wacht tot lees digitale pin 7 = 1
als lampstatus = 0 dan
zet digitale pin 9 op hoog
zet lampstatus op 1
anders
zet digitale pin 9 op laag
zet lampstatus op 0
wacht 0.3 seconden
wacht tot lees digitale pin 7 = 0

De laatste twee blokken vangen contactdender op: een knop "stuitert" mechanisch enkele milliseconden. Zonder die blokken schakelt één druk soms drie keer.

4 · Stap 3 en de missie

De teller: vervang in de toggle het als-blok door "verander teller met 1" + "schrijf teller naar seriële monitor". Let op het verschil: zet vervangt de waarde, verander telt erbij — met "zet teller op 1" blijft je teller eeuwig 1.

Missie voetgangerslicht — de flowchart die je laat aftekenen bevat minstens deze stappen:

  1. Beginstand: auto's groen, voetgangers rood.
  2. Wacht tot de knop wordt ingedrukt.
  3. Auto's: groen uit → oranje 3 s → rood.
  4. 1 s veiligheidspauze (alles rood — net als in het echt!).
  5. Voetgangers 8 s groen, dan terug rood.
  6. 1 s pauze → auto's weer groen → terug naar stap 2.

Vijf LED's dus: rood/oranje/groen voor de auto's (pins 8/9/10 van week 7) + rood/groen voor de voetgangers (pins 11/12), elk met 220 Ω. De knop blijft op pin 7.

Waarom een veiligheidspauze? Bij echte Vlaamse kruispunten zit tussen "auto's rood" en "voetgangers groen" een ontruimingstijd van 1 à 2 seconden, zodat de laatste auto het kruispunt kan verlaten. Wie die pauze in de flowchart zet en kan verantwoorden, denkt als een echte verkeersingenieur (en dat is precies LPD 5-materiaal voor de boss-pitch in week 15).

Opdrachten

Kernopdracht (iedereen)

  1. Sluit de knop aan (pin 7, pull-down 10 kΩ) en test via de seriële monitor: 0 in rust, 1 bij druk.
  2. Stap 1: LED aan zolang de knop is ingedrukt (als-dan-anders).
  3. Stap 2: de toggle met de variabele lampstatus.
  4. Stap 3: de teller — toon op de seriële monitor hoe vaak er gedrukt is.
  5. Teken de flowchart van het voetgangerslicht en laat ze aftekenen.
  6. Bouw en programmeer het voetgangerslicht; test de cyclus 3× foutloos. Foto + flowchart in het logboek!

Basis-pad

Stap 1 (LED zolang knop) + het voetgangerslicht met drie LED's (auto's rood/groen + voetgangers groen) volgens een aangereikte flowchart waarop alleen de tijden zelf ingevuld worden. De toggle mag overgeslagen worden; de teller wordt samen met de leerkracht gebouwd.

Uitbreidingen

  • Lang drukken: het licht wisselt pas als de knop 2 s ingedrukt blijft (tegen "even plagen").
  • Voetgangersteller: de teller uit stap 3 telt de overstekers en toont ze op de monitor.
  • Tik-geluid: heb je al een buzzer? Laat hem tikken tijdens voetgangers-groen (officieel leerstof in week 14 — dit is een voorproefje).
  • Slagboom-preview: een servo als slagboom bij het rode licht (level 3 komt eraan!).

Materiaal deze week

Leerkracht-hoek
Side quests die hier mooi bij passen Reactiespel (knop + LED + variabele — exact de techniek van deze week) · Muziekdoos (wie de buzzer-uitbreiding deed) · Morse-Meester (seinen met de knop: korte en lange drukken).
Week 10 · Programmeer-bootcamp Week 12 · Sensoren & de eerste regeling