Përmbajtje:

Ura e Qirinjve të ndezur: 6 hapa (me fotografi)
Ura e Qirinjve të ndezur: 6 hapa (me fotografi)

Video: Ura e Qirinjve të ndezur: 6 hapa (me fotografi)

Video: Ura e Qirinjve të ndezur: 6 hapa (me fotografi)
Video: Nusja harron dhendrin para Butrintit, çfarë po ndodh? 😮#shorts #viral #butrintimeri #butrint #trend 2024, Nëntor
Anonim
Image
Image

Ky udhëzues tregon se si të shndërroni një urë qiri të thjeshtë me dritë statike në një dritë të këndshme me shkëlqim të ndezur me variacione të pafundme të dritave që vezullojnë, vezullim, modele të valëve dhe çfarëdo tjetër. Bleva nga After Christmas Sales një urë qiri për 8 €. Ka 7 drita led dhe një përshtatës muri 33 V 3 W. Shkëlqen me një ngjyrë të bardhë të ndritshme dhe të ngrohtë dhe do të jetë perfekte për këtë projekt, ku do të vendos një Arduino për t'i bërë qirinjtë të dridhen. Arduino më i njohur është Arduino Uno. Në këtë projekt, unë do të përdor një Arduino Mega 2560.

Unë do të heq furnizimin me energji 30 V dhe do të përdor një bankë të thjeshtë 5 V të destinuar për telefonat celularë si furnizim me energji.

Një gjë e mirë që duhet të dini për bankat e energjisë është se ata kanë një qark të brendshëm, i cili transformon baterinë 3.7 V në 5 V. Për shkak se procesi përdor njëfarë fuqie, banka e energjisë mbyllet vetë, nëse nuk përdoret. Nëse banka e energjisë përdoret për pajisjet DIY të bazuara në Arduino, pajisja nuk mund të vendosë vetëm gjumin e kursimit të energjisë dhe të fillojë përsëri pas disa minutash. Kjo do të mbyllë bankën e energjisë. Kjo urë qiri e ndezur nuk ka mënyrë gjumi. Ai përdor vazhdimisht energji, duke e mbajtur bankën e energjisë aktive, derisa kablli i energjisë të hiqet.

Video tregon urën e qirinjve në gjendje statike dhe në dridhje të plotë. Flakërimi i plotë është vërtet mjaft i bezdisshëm për sytë, ndërsa videoja e zbut atë pak. Pasi të jetë fiksuar hardueri, përfshirë prerjen e kabllove, lidhjen e lidhjeve të reja dhe shtimin e disa përbërësve, të gjitha modelet e dëshiruara të dritës krijohen duke shkruar kodin për Arduino. Modelet që përfshij në këtë udhëzues janë:

  • 4 drita të ndryshme të ndezura që imitojnë qirinj të vërtetë
  • 2 vezullime të ndryshme (ndezje e rastësishme e dritave ndryshe statike)
  • 2 modele të ndryshme valësh
  • dritë e thjeshtë statike

Ndërrimi i modeleve ndodh përmes një butoni shtyse, elementi i vetëm i ndërfaqes së përdoruesit. Sa më shumë modele që dëshiron dhe sa më shumë përshtatshmëri dëshiron, aq më shumë butona dhe çelësa duhet të shtosh. Por bukuria qëndron në thjeshtësinë. Mbani numrin e modeleve të zgjedhura poshtë. Zgjidhni cilësimet më të mira gjatë kodimit dhe testimit, jo duke shtuar shumë kontrolle në harduer.

Furnizimet

  • 1 urë qiri LED me 7 llamba. Sigurohuni që është një model DC i tensionit të ulët, ose me bateri ose me një burim energjie të montuar në mur, i cili transformon 110-240 V AC vdekjeprurës në 6 - 30 V DC. Pra, është krejtësisht e sigurt të hakosh urën e qirinjve.
  • 1 Arduino Mega (çdo mikrokontrollues tjetër do të bëjë, vetëm sigurohuni që mund ta programoni)
  • 1 prototipizim i dërrasës së bukës
  • tela kërcyes dhe tela të tjerë
  • mjet bashkimi
  • multimetër
  • 7 rezistente, 120 Ω
  • 1 buton shtypës (do të tregoj se si mund të përdorni butonin e integruar në një Arduino në vend të tij)
  • Një IC transistor darlington për 7 tranzistorë, ULN2803AP do të bëjë (Nëse përdorni një Arduino Uno ose Meaga, nuk keni vërtet nevojë për këtë)
  • Një bankë energjie 5 V e destinuar për telefonat celularë

Hapi 1: Shqyrtoni atë që keni

Provoni atë që keni
Provoni atë që keni
Provoni atë që keni
Provoni atë që keni

Gjeni se në cilin tension funksionon secila LED dhe sa rrymë kalon.

  1. Hapni pjesën e poshtme të urës së qirinjve. Gjeni dy telat që shkojnë tek një qiri.
  2. Hiqni disa izolime nga kabllot duke zbuluar telat e bakrit pa prerë telat e bakrit.
  3. Ndizni dritat (qetësohuni, janë vetëm disa volt) dhe matni tensionin mbi telat e bakrit të zbuluar.
  4. Pritini kabllon në njërën nga pikat e matjes (në këtë pikë dritat fiken, natyrisht), hiqni izolimin (3 - 4 mm) në të dy skajet. Matni rrymën që kalon. Ajo që bëni është që të rilidhni kabllon e prerë me multimetrin tuaj, duke lejuar që e gjithë rryma të rrjedhë nëpër multimetrin tuaj, e cila tani ju tregon sasinë e rrymës.

Leximet e mia

Tensioni mbi një qiri (hapi 3): 3.1 V

Vini re se burimi i energjisë në urën e qirinjve ishte 33 V. Pra, shtatë herë 3.1 V është vetëm 21.7 V. Në disa prej qirinjve duhet të ketë një rezistencë shtesë. Sikur ta kisha matur atë tension të qirinjve, duhet të ketë qenë rreth 11 V.

Rryma që rrjedh kur ndizet qiri (hapi 4): 19 mA

Unë do të fuqizoj gjithçka me një paketë baterie 5 V 2 A. Për qirinjtë, më duhet të ul tensionin nga 5 V në 3 V. Më duhet një rezistencë, e cila do të bjerë tensionin 2 V në një rrymë 19 mA.

2 V / 0.019 A = 105 Ω

Fuqia e shpërndarë është:

2 V * 19 mA = 38 mW

Kjo është e papërfillshme. Shumë më tepër mund të fryjë vetë rezistorin. Megjithatë, pa një rezistencë 105 Ω mund të fryj LED. Unë kam rezistenca 100 Ω dhe 120 Ω. Unë shkoj me 120 Ω. Ai jep më shumë mbrojtje.

Testimi i të 7 qirinjve me 3 V dha një dritë të ndritshme, përveç një qiri, i cili kishte vetëm një dritë shumë të zbehtë, me vetëm rreth 0.8 mA. Kjo ishte qiri im me rezistencë shtesë. Doli se qirinjtë e tjerë nuk kishin fare rezistencë. Dritat LED të përdorura në llambadar janë menduar thjesht për 3 V! Qiri me rezistencë shtesë duhej të hapet duke përdorur dhunë të butë, por asgjë nuk u prish. Rezistenca u gjet vetëm nën LED të vogël brenda llambës së qirinjve plastikë. Më është dashur ta shkrij atë dhe të rilidhim telat. Ishte pak e çrregullt, meqë hekuri i saldimit ngrohu një zam të nxehtë, i cili ishte përdorur për montim.

Kështu që tani e di se çfarëdo burimi energjie që përdor, çfarëdo qoftë tensioni, më duhet ta ul tensionin në 3 V duke lejuar që të kalojë 19 mA.

Nëse do të kisha qenë më i njohur me teknologjinë LED, do të kisha njohur llojin e LED të përdorur dhe do të kisha ditur se duheshin 3 V.

Hapi 2: Disa bashkime

Disa Saldim
Disa Saldim
Disa Saldim
Disa Saldim

Në këtë hap unë lidh të gjitha telat pozitivë (+) nga 5 qirinj në një tel. Pastaj shtoj një tel të veçantë negativ (-) për secilin qiri. Një dritë LED ndizet vetëm kur '+' dhe '-' shkojnë djathtas. Meqenëse keni vetëm dy skaje kabllo identike nga secili qiri, duhet të provoni se cili është '+' dhe cili është '-'. Për këtë ju nevojitet një burim energjie 3 V. Unë kisha një paketë të vogël baterie që përfshinte dy bateri AAA. Një bateri me monedhë 3 V funksionon shkëlqyeshëm edhe për testim.

Ura e qirinjve ka nevojë për 8 kabllo për të kaluar midis Arduino dhe urës. Nëse gjeni një kabllo me 8 tela të izoluar, do të ishte mirë. Një tel duhet të mbajë 120 mA, pjesa tjetër prej tyre mbajnë vetëm 20 mA më së shumti. Zgjodha të përdor 4 kabllo me tela të dyfishtë, të cilat më ndodhi.

Imazhi i parë tregon se si kam përgatitur një tel të zakonshëm për të lidhur të gjitha telat '+' nga qirinjtë. Hiqni disa izolime të telit të zakonshëm për çdo qiri. Shtoni një copë tub izolimi të zvogëluar (shiriti i verdhë në figurë) për secilën nyje dhe vendoseni në vendin e duhur të kabllit të zakonshëm. Ngjitni tela '+' nga secili qiri në nyjen e tij, mbuloni lidhësen me tubin e tkurrjes dhe tkurreni atë. Sigurisht, shirit ngjitës i thjeshtë është i mirë, gjithashtu, gjithçka do të mbulohet në fund.

Imazhi i dytë tregon telat '-' që i duhen çdo qiri. Teli i zakonshëm '+' shkon drejtpërdrejt në pinin 5 V të Arduino (ose ndoshta përmes bordit të bukës). Çdo tela '-' shkon në kunjin e vet të IC-së së tranzistorit (përsëri, me siguri përmes tabelës së bukës).

Një Arduino shpesh quhet një tabelë prototipimi. Një tabelë buke është gjithashtu diçka që përdorni në prototipa. Ajo që unë përshkruaj në këtë udhëzues është një prototip. Unë nuk do ta zhvilloj atë në një produkt të shkëlqyeshëm me shkëlqim me gjithçka të fshehur në kuti plastike të këndshme. Marrja e tij nga prototipi në nivelin tjetër do të thoshte zëvendësimin e tabelës së bukës me një tabelë qarku të shtypur dhe përbërës të ngjitur dhe madje zëvendësimin e Arduino me vetëm një çip të thjeshtë mikrokontrollues (në fakt një çip i tillë është truri i Arduino). Dhe të kesh gjithçka të përshtatet në një kuti plastike ose brenda urës së qirinjve të hakuar.

Hapi 3: Lidhjet

Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet

Rreth Arduinos, marrë nga kjo faqe:

  • Rryma maksimale totale për pin hyrje/dalje: 40mA
  • Shuma e rrymave nga të gjitha kunjat hyrëse/dalëse të kombinuara: 200mA

Qirinjtë e mi tërheqin 19 mA secila, kur mundësohen nga 3 V. Janë shtatë prej tyre, që bën 133 mA. Kështu që unë mund t'i fuqizoj ato drejtpërdrejt nga kunjat e daljes. Sidoqoftë, unë kam disa IC transistor darlington rezervë. Kështu që unë mendova, pse jo. Qarku im e bën atë në mënyrën e duhur: kunjat e të dhënave janë vetëm për sinjale, jo për energji. Në vend të kësaj unë përdor pin 5 V në Arduino për të ndezur dritat LED. Gjatë provës, unë kam laptopin tim të lidhur me Arduino. Gjithçka mundësohet nga USB laptopi, i cili jep 5 V. Arduino Mega ka një siguresë të vetin, e cila fryn në 500 mA për të mbrojtur kompjuterin. Qirinjtë e mi tërheqin më së shumti 133 mA. Arduino ndoshta shumë më pak. Gjithçka funksionon mirë, kur mundësohet nga laptopi, kështu që përdorimi i një pakete baterie 5 V të lidhur me portën USB të Arduino është mirë.

Kunjat e të dhënave D3 - D9 shkojnë në IC ULN2803APGCN. LED -të veprojnë në 3 V. Çdo llambë është e lidhur me burimin 5 V dhe më tej me një rezistencë 120 Ω. Më tej në një kanal të IC, i cili më në fund lidh qarkun me tokën përmes një transistori darlington në IC.

Një buton shtyse i shtohet qarkut për të mundësuar disa veprime të përdoruesit. Ura e qirinjve kështu mund të ketë disa programe të zgjedhura nga përdoruesit.

Butoni i shtypjes në qark është i lidhur me RESET dhe GND. Kjo është pikërisht ajo që bën butoni i integruar i rivendosjes. Meqenëse nuk përmbledh gjithçka në një kuti plastike, po përdor butonin e rivendosjes në Arduino për të kontrolluar programin. Shtimi i një butoni sipas imazhit do të funksionojë saktësisht si butoni i rivendosjes së tabelës. Programi funksionon duke kujtuar se çfarë programi dritë u përdor herën e fundit kur programi u ekzekutua. Kështu, çdo rivendosje do të përparojë në programin tjetër të dritës.

Fotografitë tregojnë se si kabllot e reja dalin nga ura, si i vendosa IC -në e tranzistorit dhe rezistorët në dërrasën e bukës dhe si lidhen telat e bluzës me Arduino Mega. Kam prerë 4 tela bluzë meshkuj-meshkuj në 8 tela gjysmë, të cilat i bashkova në 8 kabllot që dilnin nga ura e qirinjve. Në këtë mënyrë unë thjesht mund t'i fus kabllot në tryezën e bukës.

Alternativë pa transistorë

Në hapin e mëparshëm, unë përgatita një tel të zakonshëm "+" për qirinjtë dhe tela të veçantë "-", të cilët kalojnë përmes IC-së së tranzistorit në tokë. Kur një kunj i të dhënave shkon lart, tela përkatëse '-' fiksohet përmes tranzistorit të tij dhe dritave LED.

Lidhja e telave "-" direkt me kunjat e të dhënave të Arduino do të funksiononte gjithashtu, por gjithmonë ki parasysh se sa aktuale mund të qëndrojnë kunjat e të dhënave! Kjo qasje do të kishte nevojë për një ndryshim në programin tim. Do të duheshin kunjat e të dhënave për të zbritur poshtë për të ndezur qirinjtë. Për të përdorur programin tim ashtu siç është, duhet të ndërroni '+' dhe '-' në qirinj. Keni një tel të përbashkët "-" për qirinjtë, i cili shkon në GND në Arduino. Dhe telat e veçantë kalojnë midis telit "+" të qiriut dhe një kunj të të dhënave të Arduino.

Hapi 4: Programet e Dritës

Programi im, të cilin e prezantoj në hapin tjetër, kalon nëpër 9 programe të lehta. Shtypja e butonit do të zbehë dritat për një sekondë, pastaj fillon programi i mëposhtëm i dritës. Programet janë si më poshtë:

  1. Rrahje e fortë dridhëse. Qirinjtë dridhen rastësisht. Kjo duket shumë e bezdisshme kur i shikoni nga distanca e afërt, por mund të duket mirë nga distanca dhe ndoshta pas një dritareje të papafingo të ftohtë. Megjithëse, fqinji juaj mund të thërrasë zjarrfikësen.
  2. Rrjedhje e butë. Duket shume mire. Si qirinj të vërtetë në një dhomë pa rrymë.
  3. Ndryshon duke ndezur. Qirinjtë alternojnë pa probleme midis ndezjes së fortë dhe të butë në intervale prej 30 sekondash.
  4. Ndryshon duke ndezur. Ashtu si #3, por çdo qiri ndryshon në ritmin e vet midis 30 s dhe 60 s.
  5. Vetëtimë e shpejtë. Qirinjtë shkëlqejnë në një nivel të zbehur statik dhe vezullojnë rastësisht. Mesatarisht ka një vezullim çdo sekondë.
  6. Vezullim i ngadalshëm. Ashtu si #5, por me një ritëm shumë më të ngadaltë.
  7. Vala e shpejtë nga qiri i mesëm në pjesën e poshtme.
  8. Vala e ngadaltë nga qiri i mesëm në pjesën e poshtme.
  9. Dritë statike e ndritshme. Unë duhej ta përfshija këtë, nuk doja të heqja qafe funksionin origjinal.

Hapi 5: Kodi

/*

URA E QIRVE FLICKERING */ // Shpallni ndryshoren e modalitetit për të mbajtur gjendjen // përmes një operacioni të rivendosjes _tribute _ ((seksioni (". Noinit"))) modaliteti i panënshkruar int; // Kur programi fillon pas një rivendosjeje, kjo pjesë // e kujtesës nuk inicializohet, por mban vlerën // që kishte para rivendosjes. Herën e parë që programi // ekzekutohet, ai mban një vlerë të rastësishme. / * * Klasa e qirinjve mban gjithçka të nevojshme * për llogaritjen e nivelit të dritës për * një qiri që ndizet. */ class candle {private: long maxtime; periudhë e gjatë e vonesës; maxlite e gjate; minlit i gjatë; mesatare e gjatë; kohë origjinale e gjatë; kohë origjinale e gjatë; origmaxlite e gjatë; origminlite e gjate; origjinal i gjatë; deltamaxtime e gjatë; deltamintime të gjatë; deltamaxlite e gjatë; deltaminlit i gjatë; deltameanlite e gjatë; lfori e gjatë; mbrëmje e gjatë; fillim i gjatë; objektiv i gjatë; floctor phactor; kohë e gjatë e synuar; kohë e gjatë fillimi; deltatime e gjatë; void newtarget (i pavlefshëm); objektiv i gjatë (i zbrazët); publike: qiri (mat i gjatë, i gjatë mit, i gjatë mal, i gjatë mil, i gjatë mel, i gjatë eo); niveli i gjatë tani (i pavlefshëm); void initlfo (deltamat i gjatë, deltamit i gjatë, deltamal i gjatë, deltamil i gjatë, deltamean i gjatë, normë e gjatë); void setlfo (i pavlefshëm); }; qiri:: qiri (mat i gjatë, mit i gjatë, mal i gjatë, mil i gjatë, mel i gjatë, eo i gjatë): maxtime (mat), nene (mit), maxlite (mal), minlite (mil), meanlite (mel), mbrëmje (eo), origmaxtime (mat), origmintime (mit), origmaxlite (mal), origminlite (mil), origmeanlite (mel) {target = meanlite; newtarget (); } / * * levelnow () kthen nivelin e dritës që qiri duhet të ketë tani. * Funksioni kujdeset për përcaktimin e një niveli të ri të dritës të rastësishme dhe * kohën që duhet të marrë për të arritur atë nivel. Ndryshimi nuk është linear, * por ndjek një kurbë sigmoid. Kur nuk është koha për përcaktimin e një niveli të ri *, funksioni thjesht kthen nivelin e dritës. */ qiri i gjatë:: levelnow (i pavlefshëm) {ndihmë e gjatë, tani; noton t1, t2; tani = millis (); nëse (tani> = targettime) {ndihmë = target; newtarget (); ndihmë për kthim; } else {// help = target * (millis () - koha e fillimit) / deltatime + start * (targettime - millis ()) / deltatime; t1 = noton (koha e synuar - tani) / deltatime; t2 = 1. - t1; // Kjo është ndihma e llogaritjes sigmoid = t1*t1*t1*fillimi + t1*t1*t2*fillimi*3 + t1*t2*t2*objektivi*3 + t2*t2*t2*objektivi; ndihmë për kthim; }} void candle:: newtarget (void) {shumë e gjatë; shuma = 0; për (gjatë i = 0; i <mbrëmje; i ++) shuma+= onetarget (); fillimi = synimi; target = shuma / evenout; koha e fillimit = millis (); targettime = koha e fillimit + e rastësishme (koha e kohës, koha shtesë); deltatime = targettime - koha e fillimit; } qiri i gjatë:: onetarget (i pavlefshëm) {if (rastësor (0, 10) lastcheck + 100) {lastcheck = tani; / * * Algoja për vezullim "pas shpejtësisë milisekonda": * Filloni të kontrolloni pas normës / 2 milisekonda * Gjatë një periudhe norme / 2 milisekonda, bëni * mundësinë e një vezullimi të jetë 50 %. * Nëse norma është 10000 ms, gjatë 5000 ms monedha * kthehet 50 herë. * 1/50 = 0.02 * Nëse rastësia (10000) koha e fillimit + norma / 2) {nëse (rastësia (norma) koha e synuar) kthehet në lowlite; kthimi (fillimi - lowlite) * (koha e synuar - tani) / (koha e synuar - fillimi) + lowlite; } void twinkler:: twink (void) {starttime = millis (); targettime = e rastësishme (koha e kohës, koha shtesë) + koha e fillimit; fillimi = i rastësishëm (minlite, maxlite); } void setup () {int led; // Lexoni ndryshoren e modalitetit magjik, e cila duhet të tregojë // cili program i dritës u ekzekutua herën e fundit, shtojeni atë // dhe rivendoseni në zero nëse tejmbushur. mënyra ++; mënyra %= 9; // Kjo kujdeset për çfarëdo vlere // ishte hera e parë që Arduino // drejtoi këtë program. / * * SH NOTNIM I RORTNDSIS * ============= * * Gjëja thelbësore që ky program bën është nxjerrja e sinjaleve PWM * në dritat LED. Këtu kam vendosur kunjat 3 në 9 në * modalitetin e daljes. Në një Arduino Mega2560, këto kunja japin * sinjale PWM bukur. Nëse keni një Arduino tjetër, kontrolloni * cilat kunja (dhe sa) mund të përdorni. Ju gjithmonë mund të * rishkruani kodin për të përdorur softuerin PWM, nëse Arduino * juaj nuk mund të sigurojë mjaft kunja harduerike PWM. * */ pinMode (3, OUTPUT); pinMode (4, OUTPUT); pinMode (5, OUTPUT); pinMode (6, OUTPUT); pinMode (7, OUTPUT); pinMode (8, OUTPUT); pinMode (9, OUTPUT); pinMode (LED_BUILTIN, OUTPUT); analogWrite (LED_BUILTIN, 0); // Thjesht fikeni ledin e kuq të bezdisshëm në kutinë *Arduino *[7]; // përgatituni të përdorni qirinjtë që vezullojnë, pavarësisht nëse i përdorni apo jo vezullues *twink [7]; // përgatituni të përdorni qirinjtë vezullues … nëse (modaliteti == 8) {për (int i = 3; i <10; i ++) analogWrite (i, 255); ndërsa (e vërtetë); // Sa herë që ky program funksionon, ai hyn në // këtë lloj lak të pafund, derisa të shtypet butoni i rivendosjes //. } if (modaliteti <2) // dridhje {kohë e gjatë maxtime_; kohë e gjatë nene_; maxlite_ e gjatë; minlit i gjatë_; mesatare e gjatë_; gjatë madje_; nëse (mënyra == 0) {maxtime_ = 250; koha e mengjesit = 50; maxlite_ = 256; minlit_ = 0; mesatare_ = 128; madje_ = 1; } if (modaliteti == 1) {maxtime_ = 400; koha e mengjesit = 150; maxlite_ = 256; minlit_ = 100; mesatare_ = 200; madje_ = 1; } për (int i = 0; i <7; i ++) {mund = qiri i ri (kohëzgjatja_, koha e çastit, maxlite_, minlite_, meanlite_, even_); } ndërsa (e vërtetë) // Lak i pafund për qirinj të ndezur {për (int i = 0; i levelnow ()); }} nëse (modaliteti <4) // lfo i shtohet dridhjes {nëse (modaliteti == 2) // e njëjta lfo (30 s) për të gjithë qirinjtë {për (int i = 0; i initlfo (75, 50, 0, 50, 36, 30000);}} nëse (mënyra == 3) // ndryshon lfo: s për qirinjtë {për (int i = 0; i initlfo (75, 50, 0, 50, 36, 20000); mund [1]-> initlfo (75, 50, 0, 50, 36, 25000); mund [2]-> initlfo (75, 50, 0, 50, 36, 30000); mund [3]-> initlfo (75, 50, 0, 50, 36, 35000); mund [4]-> initlfo (75, 40, 0, 50, 36, 40000); mund [5]-> initlfo (75, 30, 0, 50, 26, 45000); mund [6]-> initlfo (75, 20, 0, 50, 16, 50000); mund [7]-> initlfo (75, 10, 0, 50, 6, 55000);} ndërsa (e vërtetë) // Lakri i pafund për ndezjen e qirinjve me një lfo {orë e fundit e fundit = 0; për (int i = 0; i levelnow ()); nëse (millis ()> orë e fundit + 4000) {lastclock = millis (); për (int i = 0; i setlfo ();}}} nëse (mënyra <6) // qirinj vezullues {int speedo; nëse (modaliteti == 4) speedo = 6000; përndryshe speedo = 22000; për (int i = 0; i <7; i ++) vezullim = vezullues i ri (300, 295, 255, 250, speedo); ndërsa (e vërtetë) {për (int i = 0; i nivelit tani ()); }} // Valët. // Ky seksion fillon me kllapa kaçurrelë vetëm // për të siguruar që nuk ka emra të ndryshueshme konfliktuale. // Nuk ka nevojë për kllapa, nuk ka nevojë për kontroll // vlera e modalitetit.{int lolite = 2; int hilite = 255; int do të thotë; int ampl; noton fasedelta = 2.5; noton fase; int elong; floctor phactor; periudhë e gjatë; mesatare = (lolite + hilite) / 2; ampl = hilite - mesatarja; nëse (modaliteti == 6) periudhë = 1500; periudhë tjetër = 3500; faktor = 6.28318530718 / periudhë; ndërsa (e vërtetë) {fase = phactor * (millis () % perioda); elong = mesatarja + ampl * sin (fase); analogWrite (7, e gjatë); analogWrite (9, e gjatë); fase = phactor * ((millis () + period / 4) % period); elong = mesatarja + ampl * sin (fase); analogWrite (3, e gjatë); analogWrite (8, e gjatë); fase = phactor * ((millis () + period / 2) % period); elong = mesatarja + ampl * sin (fase); analogWrite (4, e gjatë); analogWrite (5, e gjatë); fase = phactor * ((millis () + 3 * period / 4) % period)); elong = mesatarja + ampl * sin (fase); analogWrite (6, e gjatë); } // Ndërsa lidhja telat e qirinjve me Arduino, // i përzieva dhe nuk i kam rregulluar kurrë. // Rendi është i rëndësishëm për krijimin e modeleve të valëve, // kështu që sapo shkrova këtë tabelë të vogël për mua: // // Qiri# në urë: 2 3 5 4 7 6 1 // Pina e të dhënave në Arduino: 3 4 5 6 7 8 9}} lak i pavlefshëm () {// Meqenëse çdo program drite është lak i tij i pafund, // i shkrova të gjitha sythe në seksionin fillimi () // dhe nuk lashë asgjë për këtë lak () seksion. }

Hapi 6: Rreth PWM

Llambat ndriçojnë kur ndizen me 3 V. Duke përdorur vetëm 1.5 V, ato nuk ndizen fare. Dritat LED nuk zbehen mirë me tensionin e zbehur, siç bëjnë dritat inkandeshente. Në vend të kësaj ato duhet të ndizen me tension të plotë, pastaj të fiken. Kur kjo ndodh 50 herë në sekondë, ato shkëlqejnë bukur me një shkëlqim 50 %, pak a shumë. Nëse lejohen të jenë vetëm 5 ms dhe jashtë 15 ms, ato mund të shkëlqejnë me një shkëlqim 25 %. Kjo teknikë është ajo që e bën dritën LED të zbehtë. Kjo teknikë quhet modulim i gjerësisë së pulsit ose PWM. Një mikrokontrollues si Arduino zakonisht ka kunja të të dhënave, të cilat mund të dërgojnë sinjale ndezje/fikje. Disa nga kunjat e të dhënave kanë ndërtuar aftësi për PWM. Por nëse nuk ka kunja të mjaftueshme me PWM të integruar, zakonisht është e mundur të përdorni biblioteka programimi të dedikuara për të krijuar "kunja softuerike PWM".

Në projektin tim, unë kam përdorur një Arduino Mega2560, i cili ka pajisje PWM në kunjat 3 - 9. Nëse përdorni një Arduino UNO, keni vetëm gjashtë kunja PWM. Në atë rast, nëse keni nevojë për një qiri të 7 -të (ose edhe më shumë), unë mund të rekomandoj bibliotekën softuerike të Brett Hagman, të cilën mund ta gjeni këtu.

Recommended: