Code zoeken

Les 98-6: Wipwap LED-spel met Arduino

Les 98-6: Wipwap LED-spel met Arduino

Het seesaw-LED-project is een klassieke beginnersoefening die een van de belangrijkste concepten in Arduino-programmering leert: twee uitgangen in een getimd ritme laten afwisselen. Met slechts twee LED's, twee weerstanden en een handvol jumperdraden bouw je een circuit waarin een groene LED en een rode LED om de beurt oplichten, als de op-en-neergaande beweging van een wip op een speelplaats. Het is een eenvoudige build, maar het introduceert de kernbouwstenen — pindefinities, timingconstanten en sequentiële digitalWrite()-aanroepen — die in bijna elke Arduino-sketch voorkomen die je ooit zult schrijven.

twee LED's met weerstand op breadboard verbonden met Arduino
twee LED's met weerstand op breadboard verbonden met Arduino

Omdat het seesaw-patroon eigenlijk gewoon "zet het ene aan, zet het uit, zet het andere aan, zet het uit, herhaal" is, schaalt dezelfde structuur naar tientallen praktische toepassingen. Hier zijn een paar ideeën om je verbeelding te prikkelen:

  • Afwisselende indicatorlampjes — een "veilig / alarm"-paar op een bedieningspaneel dat heen en weer schakelt.
  • Simulatie van een spoorwegovergang — twee lampen die afwisselend knipperen wanneer een trein nadert.
  • Richtingbord met twee rijstroken — een "deze kant op / die kant op"-pijlweergave voor een oprit of parkeerplaats.
  • Feestdecoratie — rode en groene LED's die van plaats wisselen voor een feestelijk knipperend effect.
  • Leerbasis — de timing- en sequentievoorbeelden hier zijn dezelfde die je later zult gebruiken voor verkeerslichten, looplichten en multi-LED-animaties.

Hoe het seesaw-effect werkt

Een LED is een diode die licht uitzendt, en het symbool is een driehoek die naar een lijn wijst. De platte lijn is de kathode (negatief), en de achterkant van de driehoek is de anode (positief). Bij een fysieke LED is het langere pootje de anode en het kortere, platte pootje de kathode. Stroom loopt van anode naar kathode, dus de anode wordt verbonden met je Arduino-pin en de kathode wordt via een weerstand met aarde verbonden (in video op 02:29).

De weerstand is belangrijk. Een typische kleine LED wil ongeveer 2 V over zich en ongeveer 10 mA stroom. Als je Arduino 5 V levert, moet de resterende 3 V door de weerstand worden opgenomen. Met de wet van Ohm, R = V / I = 3 V / 0,01 A = 300 Ω. Alles van ongeveer 300 Ω tot 1000 Ω werkt — hogere waarden maken de LED eenvoudigweg dimmer (in video op 03:49).

Voor de seesaw zijn de twee LED's identiek bedraad: elke anode gaat naar zijn eigen Arduino-pin, en elke kathode gaat via zijn eigen weerstand naar een gedeelde aardrail. Het enige verschil tussen de twee is aan welke pin ze zijn aangesloten.

Hardware en componenten

  • 1 × Arduino-bord (Uno, Nano, Mega of vergelijkbaar)
  • 2 × LED's — één rode, één groene (elke twee kleuren werken)
  • 2 × weerstanden, 300 Ω tot 1000 Ω (220 Ω of 330 Ω zijn gangbare keuzes)
  • 1 × breadboard
  • Jumperdraden (DuPont-draden)
  • USB-kabel voor programmering en voeding

Dat is alles — geen drukknoppen, geen potentiometers, geen sensoren. Dit is bewust de meest minimale onderdelenlijst mogelijk, zodat je je volledig kunt richten op de codelogica.

Bedradingsgids

Arduino-schema voor twee LED's seesaw
Arduino-schema voor twee LED's seesaw
Arduino-bedrading voor twee LED's seesaw
Arduino-bedrading voor twee LED's seesaw

De bedrading is symmetrisch en gemakkelijk te volgen. Plaats beide LED's in het breadboard. Verbind de anode (langere pootje) van de groene LED met Arduino-pin 2 en de anode van de rode LED met Arduino-pin 3. Elke kathode (kortere pootje) wordt verbonden met één uiteinde van zijn eigen weerstand, en het andere uiteinde van beide weerstanden komt samen op een gemeenschappelijke rail die naar de GND-pin van de Arduino loopt (in video op 27:45).

Omdat beide LED's dezelfde aardrail delen, is er slechts één aarddraad nodig van het breadboard terug naar de Arduino. De twee signaaldraden — één naar pin 2, één naar pin 3 — zijn de enige verbindingen die veranderen tussen de twee LED's.

Uitleg van de code

De sketch is bewust kort zodat elke regel betekenisvol is. Dit zijn de onderdelen die je daadwerkelijk wilt aanpassen:

Pindefinities

const int greenLEDPin = 2;//definieer een pin voor groene LED
const int redLEDPin = 3;//definieer een pin voor rode LED

Deze twee constanten vertellen de Arduino met welke pinnen de LED's zijn verbonden. Als je je LED's op andere pinnen hebt aangesloten — bijvoorbeeld pin 8 en pin 9 — is dit de enige plek die je hoeft te wijzigen. Het trefwoord const betekent dat de waarde vaststaat voor de levensduur van het programma en later niet per ongeluk kan worden overschreven.

Timingconstante

const int ON_TIME = 500;

Deze enkele waarde bepaalt hoe lang elke LED blijft branden, in milliseconden. De standaardwaarde van 500 betekent dat elke LED een halve seconde aan is, dus een volledige groen-dan-rood-cyclus duurt één seconde. Verlaag het naar 200 voor een snel knipperen, of verhoog het naar 1000 voor een langzaam, bedachtzaam ritme van één seconde per LED (in video op 30:17). Omdat beide LED's deze constante delen, blijven ze altijd synchroon — de wip blijft in balans.

Setup

In setup() worden de twee pinnen gedeclareerd als uitgangen met pinMode(), en de seriële monitor wordt gestart op 9600 baud zodat je de LED-statusberichten voorbij kunt zien scrollen. Dit wordt één keer uitgevoerd, wanneer het board wordt ingeschakeld.

De Loop

De loop()-functie is waar de wip plaatsvindt. Het voert vier acties achter elkaar uit: zet de groene LED aan, wacht ON_TIME milliseconden, zet deze uit en doe hetzelfde voor de rode LED. Wanneer de loop het einde bereikt, begint deze automatisch weer bovenaan — dat is het volledige "wip"-gedrag. Er is geen statusvariabele en geen voorwaarde om te controleren, omdat het patroon puur sequentieel is.

Live project en demonstratie

Zodra de code is geüpload, zie je de groene LED een halve seconde branden, dan de rode LED, dan weer groen, eindeloos. Het openen van de seriële monitor (Extra → Seriële monitor, of Ctrl+Shift+M) toont "Green LED ON" en "Red LED ON" terwijl het patroon loopt, wat een handige manier is om te bevestigen dat de timing overeenkomt met wat je hebt ingesteld.

Probeer ON_TIME te wijzigen in 200 en opnieuw te uploaden — de LED's wisselen merkbaar sneller. Stel het in op 1000 en de wip wordt een langzame, bedachtzame afwisseling. Je kunt de Arduino ook loskoppelen van USB en hem van een batterij of een 5 V-adapter voorzien; de sketch werkt identiek omdat deze al is opgeslagen in het geheugen van het board.

Gerelateerde projecten uit deze video

Hoofdstukken

  • [00:00] Overzicht van de 10 Arduino LED-projecten
  • [01:22] Inleiding tot de stapsgewijze Arduino-cursus
  • [02:29] LED's begrijpen: symbool, anode en kathode
  • [03:49] De LED-seriewerstand berekenen met de wet van Ohm
  • [27:32] Introductie van het wip-LED-project
  • [27:45] Bedradingsschema voor het wip-project
  • [28:28] Uitleg van de wip-code
  • [30:06] Demonstratie van de wip met verschillende timings
  • [30:47] Overzicht van het looplichtproject
  • [36:41] Looplicht bestuurd door drukknop
  • [42:25] LED-spanningsbalkmeter met potentiometer
  • [49:25] Arduino-verkeerslichtproject

Afbeeldingen

Arduino wiring for two LEDs see saw
Arduino wiring for two LEDs see saw
Arduino schematic for two LEDs see saw
Arduino schematic for two LEDs see saw
330_ohm_resistor
330_ohm_resistor
twee LEDs met weerstand op breadboard aangesloten op Arduino
twee LEDs met weerstand op breadboard aangesloten op Arduino
938-Lessson 98-LED-6: Arduino code two LED, See-saw
Taal: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Bestanden📁

Arduino-bibliotheken (zip)

Gebruikershandleiding