Satura rādītājs:

Mirgojošs sveču tilts: 6 soļi (ar attēliem)
Mirgojošs sveču tilts: 6 soļi (ar attēliem)

Video: Mirgojošs sveču tilts: 6 soļi (ar attēliem)

Video: Mirgojošs sveču tilts: 6 soļi (ar attēliem)
Video: 🙄 Подержанный Hyundai Solaris: что в нём ломается? каких проблем ждать? куда смотреть при покупке? 2024, Novembris
Anonim
Image
Image

Šajā pamācībā ir parādīts, kā vienkāršu sveču tiltu ar statisku gaismu pārvērst jaukā kvēlojošā garastāvokļa gaismā ar bezgalīgām mirgojošu gaismu variācijām, mirgojošiem, viļņu rakstiem un tamlīdzīgi. Es nopirku no After Christmas Sales sveču tiltu par 8 €. Tam ir 7 gaismas diodes un aptuveni 33 V 3 W sienas adapteris. Tas spīd ar spilgtu un siltu baltu krāsu un būs lieliski piemērots šim projektam, kur es ielikšu Arduino, lai padarītu sveces mirgojošas. Populārākais Arduino ir Arduino Uno. Šajā projektā es izmantošu Arduino Mega 2560.

Es atteicos no 30 V barošanas avota un kā barošanas avotu izmantošu vienkāršu 5 V barošanas banku, kas paredzēta mobilajiem tālruņiem.

Laba lieta, kas jāzina par strāvas bankām, ir tā, ka tām ir iekšējā ķēde, kas pārveido akumulatoru no 3,7 V līdz 5 V. Tā kā process izmanto zināmu jaudu, strāvas banka pati izslēdzas, ja tā netiek izmantota. Ja strāvas banku izmanto uz Arduino balstītiem DIY sīkrīkiem, sīkrīks nevar vienkārši ieslēgt enerģijas taupīšanas miegu un pēc dažām minūtēm sākt to vēlreiz. Tas izslēgs strāvas banku. Šim mirgojošajam sveču tiltam nav miega režīma. Tas nepārtraukti patērē enerģiju, uzturot strāvas banku aktīvu, līdz tiek atvienots strāvas kabelis.

Video redzams sveču tilts statiskā režīmā un pilnā mirgošanā. Pilna mirgošana patiešām ir diezgan kaitinoša acīm, savukārt video to nedaudz izlīdzina. Kad aparatūra ir salabota, ieskaitot kabeļu griešanu, jaunu savienojumu lodēšanu un dažu komponentu pievienošanu, visi vēlamie gaismas modeļi tiek izveidoti, ierakstot Arduino kodu. Šajā pamācībā iekļautie modeļi ir šādi:

  • 4 dažādas mirgojošas gaismas, kas imitē īstas sveces
  • 2 dažādi mirgojoši (nejauši mirgo citādi statiskas gaismas)
  • 2 dažādi viļņu modeļi
  • vienkārša statiskā gaisma

Pārslēgšanās modeļi notiek, izmantojot spiedpogu, vienu lietotāja interfeisa elementu. Jo vairāk modeļu vēlaties un jo vairāk pielāgojamības vēlaties, jo vairāk pogu un pogu ir jāpievieno. Bet skaistums slēpjas vienkāršībā. Samaziniet atlasāmo modeļu skaitu. Kodēšanas un testēšanas laikā izvēlieties labākos iestatījumus, nevis aparatūrai pievienojot daudz vadīklu.

Piegādes

  • 1 LED sveču tilts ar 7 spuldzēm. Pārliecinieties, vai tas ir zemsprieguma līdzstrāvas modelis ar baterijām vai ar sienas stiprinājumu, kas pārveido nāvējošo 110 - 240 V maiņstrāvu par aptuveni 6 - 30 V līdzstrāvu. Tāpēc ir pilnīgi droši uzlauzt sveču tiltu.
  • 1 Arduino Mega (derēs jebkurš cits mikrokontrolleris, tikai pārliecinieties, vai varat to ieprogrammēt)
  • 1 maizes dēļa prototips
  • džemperu vadi un citi vadi
  • lodēšanas rīks
  • multimetrs
  • 7 rezistori, 120 Ω
  • 1 spiedpoga (es parādīšu, kā tā vietā varat izmantot iebūvēto pogu Arduino)
  • Darlington tranzistora IC 7 tranzistoriem, ULN2803AP derēs (ja izmantojat Arduino Uno vai Meaga, tas jums nav īsti vajadzīgs)
  • 5 V strāvas banka, kas paredzēta mobilajiem tālruņiem

1. darbība: pārbaudiet, kas jums ir

Pārbaudiet, kas jums ir
Pārbaudiet, kas jums ir
Pārbaudiet, kas jums ir
Pārbaudiet, kas jums ir

Uzziniet, kāds spriegums darbojas katrā gaismas diodē un cik daudz strāvas plūst cauri.

  1. Atveriet sveču tilta dibenu. Atrodiet divus vadus, kas iet pie vienas sveces.
  2. No kabeļiem noņemiet izolāciju, atklājot vara stieples, nesagriežot vara vadus.
  3. Ieslēdziet gaismas (atpūtieties, tas ir tikai daži volti) un izmēriet spriegumu pār atklātajiem vara vadiem.
  4. Nogrieziet kabeli vienā no mērīšanas punktiem (šajā brīdī gaismas, protams, nodziest), noņemiet izolāciju (3 - 4 mm) abos galos. Izmēriet pašreizējo strāvu. Tas, ko jūs darāt, ir savienot pārgriezto kabeli ar savu multimetru, ļaujot visai strāvai plūst caur jūsu multimetru, kas tagad norāda strāvas daudzumu.

Mani lasījumi

Spriegums virs vienas sveces (3. solis): 3,1 V

Ņemiet vērā, ka barošanas avots sveču tiltam bija 33 V. Tātad septiņas reizes 3,1 V ir tikai 21,7 V. Dažām svecēm jābūt papildu rezistoram. Ja es būtu izmērījis šo sveces spriegumu, tam jābūt kādam 11 V.

Strāva, kas plūst cauri sveces iedegšanai (4. solis): 19 mA

Es barošu visu ar 5 V 2 A akumulatoru. Svecēm man jāsamazina spriegums no 5 V līdz 3 V. Man ir nepieciešams rezistors, kas samazinās spriegumu 2 V pie 19 mA strāvas.

2 V / 0,019 A = 105 Ω

Jaudas izkliedēšana ir:

2 V * 19 mA = 38 mW

Tas ir niecīgi. Daudz vairāk varētu izpūst pašu rezistoru. Tomēr bez 105 Ω rezistora es varētu izpūst LED. Man ir 100 Ω un 120 Ω rezistori. Es eju ar 120 Ω. Tas dod lielāku aizsardzību.

Pārbaudot visas 7 sveces ar 3 V, tika iegūta spilgta gaisma, izņemot vienu sveci, kurai bija tikai ļoti vāja gaisma, cauri izplūstot tikai aptuveni 0,8 mA. Šī bija mana svece ar papildu rezistoru. Izrādījās, ka pārējām svecēm vispār nebija rezistoru. Lustras izmantotie LED lukturi ir vienkārši domāti 3 V spriegumam! Svece ar papildu rezistoru bija jāatver, izmantojot vieglu vardarbību, taču nekas nesalūza. Rezistors tika atrasts tieši zem mazās gaismas diodes plastmasas sveces spuldzes iekšpusē. Man nācās to atkausēt un atdzesēt vadus. Tas bija nedaudz netīrs, jo lodāmurs uzsildīja kādu karstu līmi, kas tika izmantota montāžai.

Tāpēc tagad es zinu, ka neatkarīgi no izmantotā strāvas avota neatkarīgi no sprieguma man ir jāsamazina spriegums līdz 3 V, ļaujot iziet cauri 19 mA.

Ja es būtu vairāk iepazinies ar LED tehnoloģiju, es būtu atpazinis izmantotā LED veidu un būtu zinājis, ka tam ir nepieciešami 3 V.

2. solis: neliela lodēšana

Daži lodēšanas
Daži lodēšanas
Daži lodēšanas
Daži lodēšanas

Šajā solī es pievienoju visus pozitīvos (+) vadus no 5 svecēm uz vienu vadu. Tad katrai svecei pievienoju atsevišķu negatīvu (-) vadu. LED lampiņa iedegas tikai tad, ja '+' un '-' iet pa labi. Tā kā no katras sveces ir tikai divi identiski kabeļa gali, jums ir jāpārbauda, kurš no tiem ir “+” un kurš ir “-”. Šim nolūkam jums ir nepieciešams 3 V barošanas avots. Man bija maza bateriju pakete, ieskaitot divas AAA baterijas. 3 V monētu akumulators lieliski darbojas arī testēšanai.

Sveču tiltam ir nepieciešami 8 kabeļi, lai tie varētu iet starp Arduino un tiltu. Ja atrodat kabeli ar 8 izolētiem vadiem, tas būtu lieliski. Vienam vadam jābūt 120 mA, pārējiem - ne vairāk kā 20 mA. Es izvēlējos izmantot 4 divvadu vadus, kas man gadījās.

Pirmajā attēlā redzams, kā es sagatavoju vienu kopēju vadu, lai savienotu visus '+' vadus no svecēm. Katrai svecei noņemiet kopējās stieples izolāciju. Katram savienojumam pievienojiet saraušanās izolācijas caurules gabalu (dzeltenā sloksne attēlā) un novietojiet to kopējā kabeļa pareizajā vietā. Lodējiet '+' vadu no katras sveces līdz tās savienojumam, pārklājiet savienojumu ar saraušanās cauruli un savelciet to. Protams, arī vienkārša līmlente ir piemērota, galu galā viss tiks pārklāts.

Otrajā attēlā redzami '-' vadi, kas nepieciešami katrai svecei. Kopējais “+” vads iet tieši uz Arduino 5 V tapu (vai varbūt caur maizes dēli). Katrs "-" vads iet uz savu tranzistora IC tapu (atkal, iespējams, caur maizes dēli).

Arduino bieži sauc par prototipēšanas dēli. Maizes dēlis ir arī tas, ko izmantojat prototipos. Tas, ko es aprakstīju šajā pamācībā, ir prototips. Es to neattīstu par greznu spīdīgu produktu, kurā viss ir paslēpts jaukos plastmasas korpusos. Pārcelšana no prototipa uz nākamo līmeni nozīmētu maizes dēļa nomaiņu ar iespiedshēmas plati un lodētiem komponentiem un pat Arduino nomaiņu ar vienkāršu mikrokontrollera mikroshēmu (patiesībā šāda mikroshēma ir Arduino smadzenes). Un lai viss ietilptu plastmasas korpusā vai uzlauztā sveču tilta iekšpusē.

3. darbība: savienojumi

Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi

Par Arduinos, kas ņemts no šīs lapas:

  • Kopējā maksimālā strāva uz ieejas/izejas tapu: 40mA
  • Strāvas summa no visām ieejas/izejas tapām kopā: 200mA

Manas sveces katra patērē 19 mA, ja to darbina 3 V. Tās ir septiņas, kas veido 133 mA. Tāpēc es varētu tos barot tieši no izejas tapām. Tomēr man ir rezerves darlington tranzistoru IC. Tāpēc es domāju, kāpēc gan ne. Mana shēma rīkojas pareizi: datu tapas ir paredzētas tikai signāliem, nevis jaudai. Tā vietā es izmantoju 5 V tapu Arduino, lai barotu LED gaismas. Pārbaudes laikā man ir klēpjdators pievienots Arduino. Viss tiek darbināts no klēpjdatora USB, kas dod 5 V. Arduino Mega ir savs drošinātājs, kas pūš pie 500 mA, lai aizsargātu datoru. Manas sveces maksimāli patērē 133 mA. Arduino, iespējams, ir daudz mazāk. Viss darbojas labi, ja to darbina klēpjdators, tāpēc ir labi izmantot 5 V akumulatoru, kas savienots ar Arduino USB portu.

Datu tapas D3 - D9 nonāk IC ULN2803APGCN. Gaismas diodes darbojas ar 3 V. Katra spuldze ir savienota ar 5 V avotu un tālāk ar 120 Ω rezistoru. Tālāk uz vienu IC kanālu, kas beidzot savieno ķēdi ar zemi caur darlington tranzistoru IC.

Lai iespējotu lietotāja darbību, ķēdei tiek pievienota spiedpoga. Tādējādi sveču tiltam varētu būt dažas lietotāja atlasītas programmas.

Spiedpoga ķēdē ir savienota ar RESET un GND. Tieši to dara iebūvētā atiestatīšanas poga. Tā kā es neiesaiņoju visu plastmasas korpusā, programmas vadīšanai izmantoju Arduino atiestatīšanas pogu. Pogas pievienošana atbilstoši attēlam darbosies tieši tāpat kā tāfeles atiestatīšanas poga. Programma darbojas, atceroties, kāda gaismas programma tika izmantota pagājušajā reizē. Tādējādi katra atiestatīšana pāriet uz nākamo gaismas programmu.

Fotogrāfijās redzams, kā jaunie kabeļi iziet no tilta, kā es novietoju tranzistoru IC un rezistorus uz maizes dēļa un kā savienojuma vadi savienojas ar Arduino Mega. Es pārgriezu 4 džemperu tēviņu-vīriešu vadus 8 pusvados, kurus pielodēju pie 8 kabeļiem, kas iziet no sveču tilta. Tādā veidā es varu vienkārši ievietot kabeļus maizes dēļā.

Alternatīva bez tranzistoriem

Iepriekšējā solī es svecēm sagatavoju kopēju '+' vadu un atsevišķus '-' vadus, kas caur tranzistoru IC nonāk zemē. Kad viena datu tapa ir augsta, atbilstošais vads “-” tiek iezemēts caur tā tranzistoru un gaismas diodēm.

"-" vadu savienošana tieši ar Arduino datu tapām arī darbotos, taču vienmēr ņemiet vērā, cik lielu strāvu var izturēt datu tapas! Šī pieeja būtu jāmaina manā programmā. Lai ieslēgtu sveces, datu tapas būtu zemas. Lai izmantotu manu programmu tādu, kāda tā ir, svecēs jāpārvieto “+” un “-”. Lai svecēm būtu kopīgs vads '-', kas nonāk GND uz Arduino. Un atsevišķie vadi iet starp sveces "+" vadu un Arduino datu tapu.

4. solis: gaismas programmas

Mana programma, kuru es prezentēju nākamajā solī, iet cauri 9 gaismas programmām. Nospiežot pogu, uz sekundi iedegas gaismas, pēc tam sākas šāda gaismas programma. Programmas ir šādas:

  1. Spēcīga mirgošana. Sveces mirgo nejauši. Tas izskatās ļoti kaitinoši, ja skatāties uz viņiem no tuvas distances, taču varētu izskatīties labi arī no attāluma un, iespējams, aiz salta mansarda loga. Tomēr jūsu kaimiņš var izsaukt ugunsdzēsējus.
  2. Maiga mirgošana. Izskatās ļoti labi. Kā īstas sveces telpā bez iegrimes.
  3. Dažāda mirgošana. Sveces vienmērīgi mainās starp spēcīgu un mīkstu mirgošanu aptuveni 30 s intervālos.
  4. Dažāda mirgošana. Tāpat kā #3, bet katra svece savā tempā svārstās no 30 līdz 60 sekundēm.
  5. Ātra mirdzēšana. Sveces spīd statiskā aptumšotā līmenī un nejauši iemirdzas. Vidēji katru sekundi mirgo viens.
  6. Lēna mirgošana. Tāpat kā #5, bet daudz lēnāk.
  7. Ātrs vilnis no vidējās augšējās sveces līdz apakšējai.
  8. Lēns vilnis no vidējās augšējās sveces līdz apakšējai.
  9. Statiska spilgta gaisma. Man tas bija jāiekļauj, es negribēju atbrīvoties no sākotnējās funkcijas.

5. darbība: kods

/*

FLICKERING CANDLE BRIDGE */ // Deklarējiet režīma mainīgo, lai noturētu stāvokli //, izmantojot atiestatīšanas darbību _attribute _ ((sadaļa (". Aptuveniit"))) neparakstīts int režīms; // Kad programma sākas pēc atiestatīšanas, šī atmiņas daļa netiek inicializēta, bet saglabā vērtību // tā bija pirms atiestatīšanas. Pirmoreiz, kad // programma tiek palaista, tai ir nejauša vērtība. / * * Sveču klasē ir viss nepieciešamais *, lai aprēķinātu * mirgojošas sveces gaismas līmeni. */ klases svece {privāts: garš maxtime; ilgs piparmētru laiks; garš maxlīts; garš minlīts; garais vidējais; ilgs sākotnējais laiks; garš sākotnējais laiks; garš origmaxlite; garš origminlīts; garš origmeanlīts; ilgs deltamaxtime; ilgs delta laiks; garš deltamakslīts; garš deltaminlīts; garais deltameanlīts; garš lforāts; ilgs izlīdzinājums; ilgs sākums; garš mērķis; pludiņa faktors; ilgs mērķa laiks; ilgs sākuma laiks; ilgs darbības laiks; void newtarget (void); garš onetarget (anulēts); publisks: svece (garš paklājs, garš mit, long mal, long mil, long mel, long eo); garš līmenis (tukšs); void initlfo (long deltamat, long deltamit, long deltamal, long deltamil, long deltamean, long rate); void setlfo (anulēts); }; svece:: svece (long mat, long mit, long mal, long mil, long mel, long eo): maxtime (mat), mintime (mit), maxlite (mal), minlite (mil), meanlite (mel), evenout (eo), origmaxtime (mat), origmintime (mit), origmaxlite (mal), origminlite (mil), origmeanlite (mel) {target = meanlite; newtarget (); } / * * levelnow () atgriež gaismas līmeni, kāds svecei šobrīd vajadzētu būt. * Funkcija rūpējas par jauna nejauša apgaismojuma līmeņa noteikšanu un * laiku, kas nepieciešams, lai sasniegtu šo līmeni. Izmaiņas nav lineāras, * bet seko sigmoīdai līknei. Ja nav pienācis laiks definēt jaunu * līmeni, funkcija vienkārši atgriež gaismas līmeni. */ garā svece:: levelnow (void) {ilgi palīdzēt, tagad; pludiņš t1, t2; tagad = milis (); ja (tagad> = mērķa laiks) {help = target; newtarget (); atgriešanās palīdzība; } cits {// palīdzība = mērķis * (milis () - sākuma laiks) / deltatime + sākums * (mērķa laiks - milis ()) / deltatime; t1 = peldēt (mērķa laiks - tagad) / delta laiks; t2 = 1. - t1; // Šī ir sigmoīdā aprēķina palīdzība = t1*t1*t1*sākums + t1*t1*t2*sākums*3 + t1*t2*t2*mērķis*3 + t2*t2*t2*mērķis; atgriešanās palīdzība; }} tukša svece:: newtarget (void) {long summa; summa = 0; (ilgi i = 0; i <izlīdzināt; i ++) summa+= onetarget (); sākums = mērķis; mērķis = summa / izlīdzinājums; sākuma laiks = milis (); mērķa laiks = sākuma laiks + nejaušs (mintime, maxtime); deltatime = targettime - sākuma laiks; } gara svece:: onetarget (void) {if (random (0, 10) lastcheck + 100) {lastcheck = now; / * * Mirkšķināšanas "pēc likmes milisekundēm" sākums: * Sāciet pārbaudīt pēc likmes / 2 milisekundes * Likmes / 2 milisekundes laikā padariet * iespēju, ka mirdzums ir 50 %. * Ja likme ir 10000 ms, 5000 ms laikā monēta tiek * apgriezta 50 reizes. * 1/50 = 0,02 * Ja nejaušs (10000) starttime + rate / 2) {if (random (rate) targettime) return lowlite; atgriešanās (sākums - lowlite) * (mērķa laiks - tagad) / (mērķa laiks - sākuma laiks) + lowlite; } void twinkler:: twink (void) {sākuma laiks = milis (); mērķa laiks = nejaušs (mintime, maxtime) + sākuma laiks; sākums = nejaušs (minlīts, makslīts); } void setup () {int led; // Izlasiet maģiskā režīma mainīgo, kuram vajadzētu pateikt // kāda gaismas programma tika palaista pēdējo reizi, palieliniet to // un atiestatiet uz nulli, ja pārplūst. režīms ++; režīms %= 9; // Tas rūpējas par jebkuru vērtību // bija pirmā reize, kad Arduino // vadīja šo programmu. / * * SVARĪGA PIEZĪME * ============== * * Būtiskākais, ko šī programma dara, ir izvadīt PWM * signālus LED gaismām. Šeit es iestatīju tapas no 3 līdz 9 uz * izvades režīmu. Uz Arduino Mega2560 šīs tapas labi izsūta * PWM signālus. Ja jums ir cits Arduino, pārbaudiet *, kuras tapas (un cik) varat izmantot. Jūs vienmēr varat * pārrakstīt kodu, lai izmantotu programmatūras PWM, ja jūsu Arduino * nevar nodrošināt pietiekami daudz aparatūras PWM tapas. * */ 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); // Vienkārši izslēdziet kaitinošo sarkano gaismas diodi uz Arduino sveces *var [7]; // sagatavojieties mirgojošo sveču lietošanai neatkarīgi no tā, vai tās lietojat vai nē twinkler *twink [7]; // sagatavojieties mirgojošo sveču lietošanai… if (mode == 8) {for (int i = 3; i <10; i ++) analogWrite (i, 255); kamēr (taisnība); // Katru reizi, kad šī programma darbojas, tā nonāk // šāda veida bezgalīgā ciklā, līdz tiek nospiesta poga reset //. } if (režīms <2) // mirgošana {garš maxtime_; ilgs piparmētru laiks; garš maxlite_; garš minlite_; garš vidējais_; ilgi pat_; ja (režīms == 0) {maxtime_ = 250; mintime_ = 50; maxlite_ = 256; minlite_ = 0; vidējais_lite_ = 128; pāra_ = 1; } ja (režīms == 1) {maxtime_ = 400; mintime_ = 150; maxlite_ = 256; minlite_ = 100; vidējais_ = 200; pāra_ = 1; } par (int i = 0; i <7; i ++) {var = jauna svece (maxtime_, mintime_, maxlite_, minlite_, meanlite_, even_); } while (true) // Nebeidzamā cilpa mirgojošām svecēm {for (int i = 0; i levelnow ()); }} ja (režīms <4) // mirgošanai pievienots lfo {if (mode == 2) // tas pats lfo (30 s) visām svecēm {for (int i = 0; i initlfo (75, 50, 0), 50, 36, 30000);}} if (mode == 3) // mainās lfo: s svecēm {for (int i = 0; i initlfo (75, 50, 0, 50, 36, 20000); var [1]-> initlfo (75, 50, 0, 50, 36, 25000); can [2]-> initlfo (75, 50, 0, 50, 36, 30000); can [3]-> initlfo (75, 50, 0, 50, 36, 35000); var [4]-> initlfo (75, 40, 0, 50, 36, 40000); var [5]-> initlfo (75, 30, 0, 50, 26, 45000); var [6]-> initlfo (75, 20, 0, 50, 16, 50000); var [7]-> initlfo (75, 10, 0, 50, 6, 55000);} kamēr (true) // Bezgalīgā cilpa mirgojošām svecēm ar lfo {ilgi pagājušais pulkstenis = 0; par (int i = 0; i levelnow ()); ja (milis ()> pagājušais pulkstenis + 4000) {lastclock = millis (); par (int i = 0; i setlfo ();}}} ja (režīms <6) // mirgojošas sveces {int speedo; if (mode == 4) speedo = 6000; else speedo = 22000; for (int i = 0; i <7; i ++) twink = jauns twinkler (300, 295, 255, 250, speedo); kamēr (true) {for (int i = 0; i levelnow ()); }} // Viļņi. // Šī sadaļa sākas ar cirtainām iekavām tikai //, lai pārliecinātos, ka nav pretrunīgu mainīgo nosaukumu. // Nav citu vajadzību pēc iekavām, nav jāpārbauda // režīma vērtība.{int lolīts = 2; int hilite = 255; int mean; int ampl; pludiņš fasedelta = 2,5; pludiņa fase; int elong; pludiņa faktors; ilgs periods; vidējais = (lolīts + hilīts) / 2; ampl = hilite - vidējais; ja (režīms == 6) periods = 1500; cits periods = 3500; faktors = 6.28318530718 / punkts; kamēr (patiess) {fase = faktors * (milis () % periods); elong = vidējais + ampl * sin (fase); analogWrite (7, garens); analogWrite (9, garens); fase = faktors * ((milis () + periods / 4) % periods); elong = vidējais + ampl * sin (fase); analogWrite (3, garens); analogWrite (8, garens); fase = faktors * ((milis () + periods / 2) % periods); elong = vidējais + ampl * sin (fase); analogWrite (4, garens); analogWrite (5, garens); fase = faktors * ((milis () + 3 * periods / 4) % periods); elong = vidējais + ampl * sin (fase); analogWrite (6, garens); } // Savienojot sveču vadus ar Arduino, // es tos sajaucu un nekad nesaņēmu kārtībā. // Kārtība ir svarīga, lai izveidotu viļņu modeļus, // tāpēc es tikko uzrakstīju šo mazo tabulu priekš manis: // // Svece# tiltā: 2 3 5 4 7 6 1 // Datu tapa uz Arduino: 3 4 5 6 7 8 9}} void loop () {// Tā kā katra gaismas programma ir sava bezgalīgā cilpa, // es visas cilpas uzrakstīju sākuma () sadaļā // un šai cilpas () sadaļai neko neatstāju. }

6. darbība. Par PWM

Gaismas spīd spoži, ja tiek darbināts ar 3 V. Izmantojot tikai 1,5 V, tie nedeg vispār. LED gaismas labi neizbalē ar zūdošo spriegumu, piemēram, kvēlspuldzes. Tā vietā tie ir jāieslēdz ar pilnu spriegumu un pēc tam jāizslēdz. Kad tas notiek 50 reizes sekundē, tie lieliski spīd ar 50 % spilgtumu, vairāk vai mazāk. Ja tiem ir atļauts būt tikai 5 ms un izslēgtiem 15 ms, tie var spīdēt ar 25 % spilgtumu. Šis paņēmiens padara LED gaismu aptumšojamu. Šo paņēmienu sauc par impulsa platuma modulāciju vai PWM. Mikrokontrolleram, piemēram, Arduino, parasti ir datu tapas, kas var nosūtīt ieslēgšanas/izslēgšanas signālus. Dažās datu tapās ir iebūvētas PWM iespējas. Bet, ja nav pietiekami daudz tapu ar iebūvētu PWM, parasti ir iespējams izmantot speciālas programmēšanas bibliotēkas, lai izveidotu "programmatūras PWM tapas".

Savā projektā esmu izmantojis Arduino Mega2560, kura aparatūras PWM ir uz tapām 3 - 9. Ja izmantojat Arduino UNO, jums ir tikai sešas PWM tapas. Tādā gadījumā, ja jums nepieciešama 7. (vai pat vairāk) svece, es varu ieteikt Breta Hāgmana programmatūras PWM bibliotēku, kuru varat atrast šeit.

Ieteicams: