Soek Kode

Les 98-4: Laat 'n LED-lig vervaag met Arduino: Helderheidsbeheer

Les 98-4: Laat 'n LED-lig vervaag met Arduino: Helderheidsbeheer

LED's is oral — aanwysers, uitstallings, dekoratiewe beligting — maar die meeste beginners stop by bloot om een aan en af te skakel. Hierdie projek neem die volgende stap: om 'n LED glad in en uit te laat vervaag met behulp van Arduino se ingeboude PWM (Pulse Width Modulation) vermoë. In plaas van 'n harde knip, kry jy 'n geleidelike styging en daling in helderheid wat natuurlike dimming, asemhalingseffekte en analoog-agtige beheer vanaf 'n suiwer digitale pen naboots. Dit is een van die mees bevredigende eerste projekte omdat jy die resultaat onmiddellik kan sien, en dieselfde tegniek onderlê motorspoedbeheer, klankvolume en agtergrondverligting in werklike produkte.

LED-5mm-groen

Sodra jy vervaag verstaan, kan jy dit toepas op 'n wye reeks praktiese bouwerke:

  • Die skep van 'n "asemhalende" statusaanwyser op 'n toestel wat saggies pols eerder as om aandag-afleidend te knip
  • Die outomatiese dim van 'n LED-naglig op grond van omgewingslig of tyd van die dag
  • Die beheer van die helderheid van 'n agtergrondverligting op 'n LCD- of OLED-skerm
  • Die bou van stemmingbeligting of dekoratiewe lampe met gladde oorgange tussen helderheidsvlakke
  • Die simuleer van 'n stadige sonsopkoms-wekker wat geleidelik helderder word om jou natuurlik wakker te maak
  • Die byvoeg van spoedbeheer by klein GS-motors of waaiers (dieselfde PWM-beginsel geld)

Hierdie tutoriaal is deel van die Robojax Arduino Stap-vir-Stap Kursus, en dek spesifiek Projek 4 van 10: Vervaag 'n LED-lig met behulp van Arduino. Die volledige program is beskikbaar vir aflaai onder die artikel.

Hardeware en Komponente

330_ohm_resistor
330 ohm 0.25 watt weerstand

Die onderdelenlys vir hierdie projek is minimaal — as jy al voorheen enige Arduino-werk gedoen het, het jy waarskynlik reeds alles wat jy nodig het:

  • 1× Arduino-bord (Uno, Nano, Mega, of enige versoenbare bord)
  • 1× LED (5mm of 3mm, enige kleur)
  • 1× Weerstand (200Ω tot 1000Ω — 'n 300Ω tot 1kΩ reeks werk goed)
  • Broodplank en DuPont-verbindingsdrade
  • USB-kabel vir programmering en krag

Een belangrike opmerking oor die LED: die langer been is die anode (positief), en die korter been — of die kant met die plat rand op die plastiekomhulsel — is die katode (negatief). Om dit omgekeerd te kry, beteken die LED sal eenvoudig nie verlig nie, so maak seker voordat jy aanskakel.

Vir die weerstandwaarde, werk die transkripsie deur die wiskunde by (in video by 03:49): 'n tipiese LED val ongeveer 2V en benodig ongeveer 10mA stroom. Met 'n 5V-toevoer, moet die oorblywende 3V oor die weerstand val, wat R = V/I = 3V / 0.01A = 300Ω gee. In die praktyk sal enigiets van 300Ω tot 1000Ω werk — hoër waardes produseer net 'n dowwer LED. Vir vervaag is dit eintlik goed, aangesien jy tog helderheid verander.

Bedradingsgids

Arduino skematiese diagram vir twee LEDs sien-saag
Arduino skematiese diagram vir twee LEDs sien-saag
Arduino bedrading vir twee LEDs sien-saag
Arduino bedrading vir twee LEDs sien-saag

Die bedrading is omtrent so eenvoudig as wat dit kom. Die LED se anode verbind deur 'n weerstand aan 'n PWM-vermoënde pen op die Arduino — in hierdie projek, pen 3. Die katode verbind aan grond.

Hoekom pen 3 spesifiek? Omdat nie alle Arduino-penne PWM ondersteun nie. Op die meeste Arduino-borde word die PWM-vermoënde penne gemerk met 'n tilde-simbool (~) — tipies penne 3, 5, 6, 9, 10, en 11 op 'n Uno. As jy 'n nie-PWM-pen gebruik, sal analogWrite() nie 'n veranderlike uitset produseer nie; die LED sal net aan of af wees.

Verbind die stroombaan soos volg:

  1. Plaas die LED in die broodplank, let op watter been die anode (langer) is en watter die katode (korter/plat kant) is.
  2. Verbind die LED se anode aan Arduino pen 3 deur die weerstand.
  3. Verbind die LED se katode aan die Arduino se GND-pen.
  4. Prop die Arduino in jou rekenaar via USB.

Kode Verduideliking

Die skets vir hierdie projek is gebaseer op die klassieke Arduino "Fade"-voorbeeld, met 'n paar aanpassings. Eerder as om elke reël te verduidelik, kom ons fokus op die dele wat jy sal wil aanpas vir jou eie eksperimente.

Gebruiker-Configureerbare Veranderlikes

Bo-aan die kode beheer drie veranderlikes die hele gedrag:

int led = 3;           // die PWM-pen waaraan die LED geheg is
int brightness = 0;    // hoe helder die LED is
int fadeAmount = 3;    // hoeveel punte om die LED te vervaag met
  • led — Dit definieer aan watter pen die LED gekoppel is. Die verstek is pen 3, maar jy kan dit verander na enige PWM-geskikte pen (gemerk met ~ op jou bord). As jy die LED na 'n ander pen skuif, werk hierdie waarde op om te pas.
  • brightness — Dit is die huidige helderheidsvlak, wat wissel van 0 (af) tot 255 (volle helderheid). Die kode begin dit op 0, maar jy kan dit enige plek in daardie reeks begin.
  • fadeAmount — Dit is die interessantste een om mee te speel. Dit beheer hoeveel helderheid-"stappe" elke siklus geneem word. 'n Klein waarde soos 3 produseer 'n stadige, geleidelike vervaging. 'n Groter waarde soos 20 laat die LED baie vinnig in- en uitvervaag. Die transkripsie demonstreer dit by (in video by 22:37) — verandering van 5 na 20 versnel die effek dramaties.

Hoe die Vervaging Werk

Die kern van die vervaging gebeur in twee reëls binne loop():

analogWrite(led, brightness);
brightness = brightness + fadeAmount;

Elke keer wat deur die lus gegaan word, word die huidige helderheidswaarde na die LED geskryf met analogWrite(), dan word die helderheid verhoog met fadeAmount. Die analogWrite()-funksie gebruik PWM om 'n analoog spanning te simuleer — dit skakel die pen vinnig aan en af, en die verhouding van aan-tyd tot af-tyd bepaal die waargenome helderheid.

Wanneer helderheid 0 of 255 bereik, keer die kode die rigting om deur die teken van fadeAmount om te draai:

if (brightness <= 0 || brightness >= 255) {
  fadeAmount = -fadeAmount;
}

Dit is wat die LED laat invervaag, dan uitvervaag, dan weer invervaag — 'n deurlopende asemhalingsiklus. Die delay(30) aan die einde van die lus beheer die algehele spoed van die animasie. 'n Korter vertraging maak die vervaging vinniger; 'n langer vertraging vertraag dit.

Eksperimenteer met die Waardes

Twee veranderlikes gee jou die meeste beheer oor die visuele effek:

  • Verhoog fadeAmount vir 'n vinniger, meer dramatiese vervaging. Probeer 10 of 20.
  • Verlaag fadeAmount vir 'n stadige, sagte asemhalingseffek. Probeer 1 of 2.
  • Pas die delay()-waarde aan om die tempo te verander. Kleiner vertragings maak die hele siklus vinniger; groter vertragings rek dit uit.

Die kombinasie van 'n klein fadeAmount met 'n kort vertraging produseer 'n uiters gladde, byna organiese vervaging — wonderlik vir omgewingsbeligting. 'n Groot fadeAmount met 'n kort vertraging skep 'n vinnige polsende effek.

Lewendige Projekdemonstrasie

Sodra die kode opgelaai is, sal jy sien hoe die LED stadig verhelder van af tot volle helderheid, dan weer verdof, en dit herhaal onbepaald. Die transkripsie wys die verstekgedrag by (in video by 22:25) — 'n gladde, matige-spoed vervaging.

Wanneer die fadeAmount na 20 verander word, vervaag die LED baie vinnig in en uit — amper soos 'n flikkering. Wanneer dit op 3 gestel is, neem die vervaging merkbaar langer, wat 'n ontspanne, geleidelike oorgang skep. Dit word duidelik in die video by (in video by 23:02) gedemonstreer.

Die skoonheid van hierdie projek is dat jy die effek van jou kodeveranderinge onmiddellik kan sien — geen bedradingsveranderinge nodig nie, redigeer net die veranderlikes en laai weer op. Daardie stywe terugvoerlus maak dit 'n uitstekende manier om intuïsie te bou vir hoe PWM en tydsberekening interaksie het.

As jy dit verder wil neem deur die vervaging met 'n drukknoppie te aktiveer eerder as om dit deurlopend te laat loop, word dit in 'n aparte tutoriaal gedek — sien die verwante projekte-afdeling hieronder.

Verwante projekte uit hierdie video

Hoofstukke

  • [00:00] Oorsig van die 10 Arduino LED-projekte
  • [01:22] Inleiding tot die kursus en vereiste komponente
  • [02:29] Verstaan LEDs: simbole, polariteit en tipes
  • [03:49] Bereken die LED-weerstandwaarde met behulp van Ohm se wet
  • [05:53] Projek 1: Skakel 'n LED aan en af
  • [12:43] Projek 2: LED-beheer met 'n drukknoppie
  • [17:13] Projek 3: Wissel LED met drukknoppie
  • [20:12] Projek 4: Vervaag 'n LED — kode-deurloop
  • [22:25] Vervagingsdemonstrasie en aanpassing van vervagingspoed
  • [23:20] Projek 5: Vervaag LED met drukknoppie-sneller
  • [27:32] Projek 6: Wipplank LED-effek
  • [30:47] Projek 7: Looplig met 5 LEDs
  • [36:41] Projek 8: Looplig beheer deur drukknoppie
  • [42:25] Projek 9: LED-spanningvlakmeter met potensiometer
  • [49:25] Projek 10: Arduino-verkeerslig

Beelde

Arduino wiring for LED  with resistor
Arduino wiring for LED with resistor
Arduino schematic for LED
Arduino schematic for LED
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
LED-5mm-green
LED-5mm-green
330_ohm_resistor
330_ohm_resistor
936-Lessson 98-LED-4: Arduino code to fade the LED light
Taal: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Lêers📁

Arduino Biblioteke (zip)

Gebruikershandleiding