Soek Kode

Les 98-6: Wipplank LED-speletjie met Arduino

Les 98-6: Wipplank LED-speletjie met Arduino

Die wippende LED-projek is 'n klassieke beginnersoefening wat een van die belangrikste konsepte in Arduino-programmering leer: om twee uitsette in 'n getimede ritme te laat afwissel. Deur net twee LEDs, twee resistors en 'n handjievol jumperdrade te gebruik, sal jy 'n stroombaan bou waar 'n groen LED en 'n rooi LED om die beurt verlig, wat die op-en-af beweging van 'n speelgrondwipplank naboots. Dit is 'n eenvoudige bou, maar dit stel die kernboustene bekend — pen-definisies, tydkonstantes, en opeenvolgende digitalWrite()-oproepe — wat in byna elke Arduino-skets verskyn wat jy ooit sal skryf.

twee LEDs met resistor op broodbord gekoppel aan Arduino
twee LEDs met resistor op broodbord gekoppel aan Arduino

Omdat die wippatroon eintlik net "sit een ding aan, sit dit af, sit die ander ding aan, sit dit af, herhaal" is, skaal dieselfde struktuur in dosyne praktiese gebruike. Hier is 'n paar idees om jou verbeelding aan te wakker:

  • Afwisselende aanwyserligte — 'n "veilig / waarskuwing"-paar op 'n beheerpaneel wat heen en weer wissel.
  • Spoorwegoorgang-simulasie — twee lampe wat afwisselend flikker soos 'n trein naderkom.
  • Twee-ryrigting-teken — 'n "gaan hierdie kant toe / gaan daardie kant toe"-pylvertoning vir 'n oprit of parkeerterrein.
  • Vakansieversiering — rooi en groen LEDs wat plekke ruil vir 'n feestelike flikkereffek.
  • Leerbasis — die tydsberekening- en volgordebestuursvaardighede hier is dieselfde dié wat jy later sal gebruik vir verkeersligte, wandelligte, en multi-LED-animasies.

Hoe die Wipplank-effek Werk

'n LED is 'n diode wat lig uitstraal, en sy simbool is 'n driehoek wat na 'n lyn wys. Die plat lyn is die katode (negatief), en die agterkant van die driehoek is die anode (positief). Op 'n fisiese LED is die langer been die anode en die korter, platkantige been is die katode. Stroom vloei van anode na katode, so die anode verbind na jou Arduino-pen en die katode verbind deur 'n resistor na grond (in video by 02:29).

Die resistor maak saak. 'n Tipiese klein LED wil ongeveer 2 V oor hom hê en ongeveer 10 mA stroom. As jou Arduino 5 V verskaf, moet die oorblywende 3 V deur die resistor gedaal word. Deur Ohm se wet te gebruik, R = V / I = 3 V / 0.01 A = 300 Ω. Enigiets van ongeveer 300 Ω tot 1000 Ω sal werk — hoër waardes maak die LED eenvoudig dowwer (in video by 03:49).

Vir die wipplank is die twee LEDs identies bedraad: elke anode gaan na sy eie Arduino-pen, en elke katode gaan deur sy eie resistor na 'n gedeelde grondrelings. Die enigste verskil tussen die twee is aan watter pen hulle geheg is.

Hardeware en Komponente

  • 1 × Arduino-bord (Uno, Nano, Mega, of soortgelyk)
  • 2 × LEDs — een rooi, een groen (enige twee kleure werk)
  • 2 × resistors, 300 Ω tot 1000 Ω (220 Ω of 330 Ω is algemene keuses)
  • 1 × broodbord
  • Jumperdrade (DuPont-drade)
  • USB-kabel vir programmering en krag

Dis dit — geen drukknoppies, geen potensiometers, geen sensors nie. Dit is doelbewus die skraalste moontlike onderdelenlys sodat jy heeltemal op die kodelogika kan fokus.

Bedradingsgids

Arduino-skematiese diagram vir twee LEDs wipplank
Arduino-skematiese diagram vir twee LEDs wipplank
Arduino-bedrading vir twee LEDs wipplank
Arduino-bedrading vir twee LEDs wipplank

Die bedrading is simmetries en maklik om te volg. Plaas beide LEDs in die broodbord. Verbind die anode (langer been) van die groen LED aan Arduino pen 2 en die anode van die rooi LED aan Arduino pen 3. Elke katode (korter been) verbind aan een kant van sy eie resistor, en die ander kant van beide resistors sluit aan by 'n gemeenskaplike relings wat na die Arduino se GND-pen loop (in video by 27:45).

Omdat beide LEDs dieselfde grondrelings deel, is slegs een gronddraad nodig van die broodbord terug na die Arduino. Die twee seindrade — een na pen 2, een na pen 3 — is die enigste verbindings wat tussen die twee LEDs verander.

Kode-verduideliking

Die skets is doelbewus kort sodat elke reël betekenisvol is. Hier is die dele wat jy werklik sal wil aanpas:

Pen-definisies

const int greenLEDPin = 2;//definieer 'n pen vir groen LED
const int redLEDPin = 3;//definieer 'n pen vir rooi LED

Hierdie twee konstantes vertel die Arduino aan watter penne die LEDs gekoppel is. As jy jou LEDs aan verskillende penne bedraad het — sê pen 8 en pen 9 — is dit die enigste plek wat jy moet verander. Die const-sleutelwoord beteken die waarde is vas vir die leeftyd van die program en kan nie later per ongeluk oorgeskryf word nie.

Tydkonstante

const int ON_TIME = 500;

Hierdie enkele waarde beheer hoe lank elke LED aan bly, in millisekondes. Die verstekwaarde van 500 beteken elke LED is vir 'n halwe sekonde aan, so 'n volledige groen-dan-rooi siklus neem een sekonde. Verlaag dit na 200 vir 'n vinnige knip, of verhoog dit na 1000 vir 'n stadige, doelbewuste een-sekonde-per-LED ritme (in video by 30:17). Omdat beide LEDs hierdie konstante deel, bly hulle altyd in sinchronisasie — die wipplank bly gebalanseerd.

Opstelling

Binne setup() word die twee penne as uitsette verklaar met pinMode(), en die reeksmonitor word teen 9600 baud begin sodat jy die LED-toestandboodskappe kan sien verbyrol. Dit hardloop een keer, wanneer die bord aanskakel.

Die Lus

Die loop()-funksie is waar die wipplank gebeur. Dit voer vier aksies in volgorde uit: skakel die groen LED aan, wag ON_TIME millisekondes, skakel dit af, doen dan dieselfde vir die rooi LED. Wanneer die lus die einde bereik, begin dit outomaties weer van bo af — dit is die hele "wipplank"-gedrag. Daar is geen toestandveranderlike en geen voorwaarde om te kontroleer nie, want die patroon is suiwer sekwensieel.

Lewende Projek en Demonstrasie

Sodra die kode opgelaai is, sal jy sien die groen LED lig vir 'n halwe sekonde, dan die rooi LED, dan weer groen, eindeloos. Deur die reeksmonitor oop te maak (Gereedskap → Reeksmonitor, of Ctrl+Shift+M) wys "Green LED ON" en "Red LED ON" gedruk soos die patroon hardloop, wat 'n handige manier is om te bevestig die tydsberekening stem ooreen met wat jy gestel het.

Probeer om ON_TIME na 200 te verander en weer op te laai — die LEDs sal merkbaar vinniger wissel. Stel dit na 1000 en die wipplank word 'n stadige, doelbewuste afwisseling. Jy kan ook die Arduino van USB ontkoppel en dit van 'n battery of 'n 5 V-adapter aandryf; die skets hardloop identies omdat dit reeds in die bord se geheue gestoor is.

Verwante projekte uit hierdie video

Hoofstukke

  • [00:00] Oorsig van die 10 Arduino LED-projekte
  • [01:22] Inleiding tot die Arduino stap-vir-stap kursus
  • [02:29] Verstaan LEDs: simbool, anode, en katode
  • [03:49] Bereken die LED-reeksweerstand met Ohm se wet
  • [27:32] Stel die wipplank-LED-projek bekend
  • [27:45] Bedradingsdiagram vir die wipplank-projek
  • [28:28] Verduideliking van die wipplank-kode
  • [30:06] Demonstrasie van die wipplank met verskillende tydsberekeninge
  • [30:47] Oorsig van lopende lig-projek
  • [36:41] Lopende lig beheer deur drukknop
  • [42:25] LED-spanningstaafmeter met potensiometer
  • [49:25] Arduino-verkeerslig-projek

Beelde

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 broodbord wat aan Arduino gekoppel is
twee LEDs met weerstand op broodbord wat aan Arduino gekoppel is
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.

Lêers📁

Arduino Biblioteke (zip)

Gebruikershandleiding