Lekcija 98-5: Postepeno gašenje svjetla kada se pritisne dugme koristeći Arduino
U ovoj lekciji ćete napraviti svjetlo koje se gasi postepeno na komandu: pritisnite taster i LED počinje sa punom svjetlinom, a zatim se glatko smanjuje do gašenja. Ovo je jedan od najkorisnijih početničkih obrazaca u Arduinu jer kombinuje digitalni ulaz (taster) sa PWM analognim izlazom (svjetlina LED-a) i uči vas kako da kontrolišete brzinu i glatkoću promjene, a ne samo da nešto uključujete i isključujete.
Postepeno gašenje na zahtjev pojavljuje se svuda u stvarnim proizvodima. Evo nekoliko praktičnih načina na koje možete iskoristiti ono što naučite ovdje:
- Indikatorska svjetla sa mekim gašenjem — umjesto da se lampica naglo ugasi, ona se nježno zatamni kada pritisnete taster, što izgleda mnogo uglađenije na uređajima i 3D-štampanim kućištima.
- Režim spavanja / pripravnosti — pritisnite taster i svijetli statusni LED se zatamni do crnog kako vas ne bi ometao noću, dok kolo ostaje pod napajanjem.
- Scensko ili maketno osvjetljenje sa "fade to black" efektom — jedan taster pokreće glatko zatamnjivanje LED trake ili panela umjesto naglog prekida.
- Povratna informacija za uštedu baterije — kratki pritisak tastera daje vam svijetli potvrdni bljesak koji se postepeno gasi, tako da LED svijetli punom snagom samo kratko vrijeme.
- Interaktivna umjetnost i rekviziti — efekat "izdisanja" pokrenut dodirom, idealan za cosplay, diorame ili muzejske izložbe.
Osnovna ideja je jednostavna: taster govori Arduinu "počni sa postepenim gašenjem sada", a Arduino smanjuje svjetlinu LED-a od 255 (puno) do 0 (isključeno) u malim koracima. Pošto su koraci mali i dešavaju se brzo, vaše oko vidi glatko postepeno gašenje umjesto skoka.
Ako nikada ranije niste postepeno gasili LED, osnovna kontrola svjetline je obrađena u Lekciji 98-4: Postepeno gašenje LED svjetla pomoću Arduina: Kontrola svjetline. Ova lekcija se direktno nadograđuje na tu osnovu dodavanjem tastera kao okidača.
Hardver i komponente
Ovo je vrlo jeftina izrada — sve ovdje je standardni materijal iz početničkog kompleta:
- Arduino ploča (Uno, Nano, Mega ili bilo koja kompatibilna ploča)
- Jedan LED (5 mm ili 3 mm, bilo koje boje)
- Jedan taster (momentarni, 4-pinski taktilni tip radi dobro)
- Jedan otpornik za LED — bilo šta od 200 Ω do 1000 Ω (klasični 220 Ω ili 330 Ω je savršen)
- Breadboard i DuPont spojne žice
- USB kabl za programiranje (i baterija ili 5 V adapter ako želite da radi bez kabla)
Kratka napomena o otporniku za LED: LED zahtijeva otprilike 2 V na sebi i oko 10 mA struje. Sa napajanjem od 5 V, otpornik mora spustiti preostala 3 V, pa Ohm-ov zakon daje oko 300 Ω. Bilo šta od 300 Ω do 1000 Ω će raditi — veće vrijednosti samo čine LED tamnijim. Korištenje otpornika nije opcionalno; bez njega LED će povući mnogo previše struje i pregorjeti.
Vodič za povezivanje
Povezivanje je namjerno minimalno. Anoda LED-a (duža nožica) povezuje se preko otpornika na digitalni pin 3, a katoda (kraća nožica, sa ravnom stranom na kućištu) ide na masu. Taster se povezuje između digitalnog pina 2 i mase — nije potreban vanjski pull-up otpornik jer kod omogućava Arduino interni pull-up.
Obratite pažnju na polaritet LED-a: ravna strana plastičnog kućišta i kraća nožica označavaju katodu (negativni pol). Ako ga umetnete naopako, LED jednostavno neće svijetliti — ne dolazi do oštećenja, samo ga okrenite.
Za taster, ako koristite 4-pinski taktilni prekidač, zapamtite da su pinovi interno upareni: dva od četiri pina su uvijek spojena zajedno. Koristite multimetar u režimu provjere kontinuiteta da pronađete par koji pišti kada se pritisne, zatim koristite po jedan pin sa svake strane. Jedna strana ide na pin 2, druga na masu.
Objašnjenje koda
Skica je kratka, i gotovo sve što biste mogli poželjeti promijeniti nalazi se u nekoliko linija na vrhu. Evo dijelova koje korisnik može konfigurisati:
const int pushButtonPin = 2;//pin na koji je povezan prekidač push button
const int LEDPin = 3;//pin na koji je povezana LED
const int fadeAmount = 10; // za koliko točaka smanjiti svjetlinu LED-a
const int fadeSpeed = 5;//vrijeme zatamnjenja u milisekundama. manja vrijednost znači brže zatamnjenje
pushButtonPin i LEDPin jednostavno govore Arduinu na koje ste pinove povezali komponente. Ako premjestite dugme na pin 4 ili LED na pin 9 (pin koji podržava PWM), samo promijenite ova dva broja da odgovaraju vašem povezivanju. Imajte na umu da LED pin mora podržavati PWM — na Uno to znači pinove 3, 5, 6, 9, 10 ili 11 — jer zatamnjenje zahtijeva analogWrite().
fadeAmount kontrolira koliki je svaki korak svjetline. Svjetlina se kreće od 0 do 255, pa fadeAmount od 10 znači da se LED zatamnjuje u otprilike 25 koraka. Veći broj čini zatamnjenje grubljim i bržim; manji broj čini ga glatkijim i sporijim.
fadeSpeed je kašnjenje u milisekundama između svakog koraka. Ovo je jedan od najvažnijih parametara za to kako efekat izgleda. Vrijednost od 5 ms daje brzo, energično zatamnjenje; vrijednost od 30 ms ili više daje sporo, postepeno zatamnjenje. U kombinaciji s fadeAmount, ove dvije vrijednosti vam omogućavaju da podesite zatamnjenje tačno onako kako želite.
Postoji i interna varijabla koju je vrijedno znati:
int brightness = 255; // koliko je LED svijetao
int pushButtonStatus = 0; // vrijednost pritiska s pina 2
brightness počinje od 255, što znači da LED počinje s punom svjetlinom svaki put kada pritisnete dugme. Ako želite da zatamnjenje počne od tamnije točke — recimo, pola svjetline — promijenite ovo na 128.
Sama logika funkcioniše ovako: petlja čita stanje dugmeta. Ako je pritisnuto (LOW, zbog internog pull-up otpornika), while petlja se izvršava sve dok je svjetlina iznad nule. Unutar te petlje Arduino upisuje trenutnu svjetlinu na LED, oduzima fadeAmount, čeka fadeSpeed milisekundi i ponavlja. Kada dugme nije pritisnuto, na LED se jednostavno upisuje 0 i ona ostaje ugašena.
Jedan važan detalj: interni pull-up znači da pin čita HIGH kada dugme nije pritisnuto i LOW kada jest pritisnuto. Zato kod provjerava LOW da bi detektovao pritisak. Ako ikada pređete na vanjski pull-down otpornik, morali biste promijeniti tu provjeru u HIGH.
Projekat uživo i demonstracija
Nakon uploada, ponašanje je trenutno i zadovoljavajuće. Pritisnite dugme i LED skače na punu svjetlinu, zatim vidljivo tamni do ničega tokom perioda koji vi kontrolišete. Otpustite dugme i LED se gasi; pritisnite ponovo i zatamnjenje počinje ispočetka od pune svjetline.
U videu je zatamnjenje demonstrirano s nekoliko postavki kako biste mogli čuti i vidjeti razliku. S fadeAmount = 20 zatamnjenje je brzo i isprekidano — dostiže nulu u nekoliko vidljivih koraka. Spuštanje na fadeAmount = 10 ga znatno ublažava, a prelazak na fadeAmount = 3 čini da zatamnjenje traje primjetno duže i izgleda gotovo neprekidno. Vrijednost fadeSpeed ima jednako dramatičan efekat: postavljanje na 1 ms čini zatamnjenje gotovo trenutnim, dok ga veće vrijednosti rastežu.
Isprobajte ovaj eksperiment: postavite fadeAmount = 5 i fadeSpeed = 30. Dobit ćete sporo, nježno zatamnjenje koje izgleda kao svjetlo koje se uspavljuje. Zatim postavite fadeAmount = 50 i fadeSpeed = 1 za oštar, brz prekid. Nijedno nije "pogrešno" — sve je stvar raspoloženja koje želite.
Ponašanje prebacivanja istog dugmeta obrađeno je odvojeno u Lekcija 98-3: Kako uključiti/isključiti toggle LED pomoću push dugmeta s Arduinom, a jednostavnija verzija s pritiskom za svjetlo je u Lekcija 98-2: Kako uključiti i isključiti LED pomoću push dugmeta s Arduinom.
Budući da se zatamnjenje pokreće trenutnim kontaktom, ovo isto kolo je prirodno prikladno za upravljanje relejem ili MOSFET-om umjesto LED-om — mogli biste zatamniti lampu od 12 V, soft-start motora ili zagrijavanje grijaćeg elementa. Dugme je samo okidač; šta ćete zatamniti zavisi od vas.
Povezani projekti iz ovog videa
- Lekcija 98-1: Kako uključiti i isključiti LED s Arduinom
- Lekcija 98-2: Kako uključiti i isključiti LED pomoću push dugmeta s Arduinom
- Lekcija 98-3: Kako uključiti/isključiti toggle LED pomoću push dugmeta s Arduinom
- Lekcija 98-4: Zatamnjenje LED svjetla pomoću Arduina: Kontrola svjetline
- Lekcija 98-6: Seesaw LED igra s Arduinom
- Lekcija 98-7: Walking Light pomoću Arduina i 5 LED dioda
- Lekcija 98-8: Walking Light s push dugmetom i LED diodama s Arduinom
- Lekcija 98-9: LED mjerač napona pomoću Arduina ili walking light s potenciometrom
- Lekcija 98-10: Arduino semafor
Poglavlja
- [00:00] Pregled 10 LED projekata
- [01:00] Uvod u Arduino kurs korak po korak
- [02:29] Osnove LED-a: simboli, polaritet i struja
- [03:49] Izračunavanje otpornika za LED pomoću Ohmovog zakona
- [05:53] Projekat 1: Uključivanje i isključivanje LED-a
- [12:43] Projekat 2: LED sa tasterom
- [17:13] Projekat 3: Uključivanje/isključivanje LED-a pomoću tastera
- [20:12] Projekat 4: Postepeno paljenje i gašenje LED-a
- [23:20] Projekat 5: Postepeno paljenje i gašenje LED-a pomoću tastera
- [27:32] Projekat 6: LED kao klackalica
- [30:47] Projekat 7: Pokretno svjetlo
- [36:41] Projekat 8: Pokretno svjetlo sa tasterom
- [42:25] Projekat 9: LED mjerač napona
- [49:25] Projekat 10: Arduino semafor
This code has not been parsed yet. Please return to the admin panel to parse it.
Stvari koje bi vam mogle zatrebati
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
Resursi i reference
-
DokumentacijaDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
Eksterno
-
Eksterno
-
Eksterno
Datoteke📁
Arduino biblioteke (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB
Korisnički priručnik
-
SunFounder 3-u-1 Arduino Smart Car priručnik za sastavljanjeOvaj dokument prikazuje korak po korak sastavljanje SunFounder 3-u-1 Arduino Smart Car-a
SunFounder_car_assembly_manual.pdf1.20 MB