Բովանդակություն:

Թարթող մոմ կամուրջ. 6 քայլ (նկարներով)
Թարթող մոմ կամուրջ. 6 քայլ (նկարներով)

Video: Թարթող մոմ կամուրջ. 6 քայլ (նկարներով)

Video: Թարթող մոմ կամուրջ. 6 քայլ (նկարներով)
Video: Դահլիճում նստած տղային նայեք 😂 #armenia #humor #հումոր 2024, Դեկտեմբեր
Anonim
Image
Image

Այս հրահանգը ցույց է տալիս, թե ինչպես ստատիկ լույսով մի պարզ մոմ կամուրջը վերածել գեղեցիկ պայծառ տրամադրության լույսի ՝ թարթող լույսերի անվերջ տատանումներով, թարթող, ալիքային նախշերով և այլևս: After Christmas Sales- ից մոմե կամուրջ եմ գնել 8 € -ով: Այն ունի 7 լուսադիոդային լուսարձակներ և 33 վ 3 վտ հզորությամբ պատի ադապտեր: Այն փայլում է պայծառ ու տաք սպիտակ գույնով և կատարյալ կլինի այս նախագծի համար, որտեղ ես կդնեմ Arduino, որպեսզի մոմերը թարթեն: Առավել հայտնի Arduino- ն Arduino Uno- ն է: Այս նախագծում ես կօգտագործեմ Arduino Mega 2560:

Ես կթողնեմ 30 Վ լարման սնուցման աղբյուրը և որպես էներգիայի աղբյուր կօգտագործեմ բջջային հեռախոսների համար նախատեսված 5 Վ պարզ էներգիայի բանկ:

Էլեկտրամատակարարման բանկերի մասին լավ բան իմանալն այն է, որ նրանք ունեն ներքին միացում, որը մարտկոցը փոխակերպում է 3.7 Վ -ից 5 Վ -ի: Քանի որ գործընթացն օգտագործում է որոշակի էներգիա, սնուցման բանկը ինքնին անջատվում է, եթե այն չի օգտագործվում: Եթե Power Bank- ն օգտագործվում է Arduino- ի վրա հիմնված DIY սարքավորումների համար, ապա գործիքը չի կարող պարզապես իրեն էներգախնայող քնի մեջ դնել և մի քանի րոպե անց նորից սկսել: Դա կդադարեցնի հոսանքի բանկը: Այս շողացող մոմ կամուրջը քնելու ռեժիմ չունի: Այն մշտապես օգտագործում է էներգիա ՝ պահելով էներգաբլոկը մինչև էներգիայի մալուխի անջատումը:

Տեսահոլովակը ցույց է տալիս մոմի կամուրջը ստատիկ ռեժիմում և ամբողջովին թարթում: Ամբողջ թրթռալն իսկապես բավականին նյարդայնացնում է աչքերը, մինչդեռ տեսանյութը մի փոքր հարթեցնում է այն: Սարքաշարի ամրագրումից հետո, ներառյալ մալուխների կտրումը, նոր կապերի միացումը և որոշ բաղադրիչների ավելացումը, բոլոր ցանկալի լուսային նախշերը ստեղծվում են Arduino- ի համար կոդ գրելով: Այն նախշերը, որոնք ես ներառում եմ այս հրահանգում, հետևյալն են.

  • 4 տարբեր թարթող լույսեր, որոնք ընդօրինակում են իսկական մոմերը
  • 2 տարբեր թարթում (հակառակ դեպքում ստատիկ լույսերի պատահական առկայծում)
  • 2 տարբեր ալիքների նախշեր
  • պարզ ստատիկ լույս

Կաղապարների փոխարկումը տեղի է ունենում մեկ կոճակի միջոցով `մեկ օգտագործողի միջերեսի տարր: Որքան շատ նախշեր ուզենան և ավելի շատ հարմարվողականություն, այնքան ավելի շատ կոճակներ և բռնակներ պետք է ավելացնել: Բայց գեղեցկությունը պարզության մեջ է: Պահպանեք ընտրովի նախշերի թիվը: Ընտրեք լավագույն պարամետրերը կոդավորման և փորձարկման ընթացքում, այլ ոչ թե սարքավորումների վրա բազմաթիվ հսկիչներ ավելացնելու միջոցով:

Պարագաներ

  • 1 LED մոմ կամուրջ 7 լամպով: Համոզվեք, որ դա ցածր լարման DC մոդել է `մարտկոցներով կամ պատին ամրացվող էներգիայի աղբյուրով, որը մահացու 110 - 240 Վ լարման հոսանքը փոխակերպում է 6 - 30 Վ լարման: Այսպիսով, մոմե կամուրջը կոտրելը լիովին անվտանգ է:
  • 1 Arduino Mega (ցանկացած այլ միկրոկառավարիչ կանի, պարզապես համոզվեք, որ կարող եք ծրագրավորել այն)
  • 1 նախատիպի տախտակ
  • jumper լարեր և այլ մետաղալարեր
  • զոդման գործիք
  • բազմաչափ
  • 7 դիմադրություն, 120 Ω
  • 1 կոճակ (ես ցույց կտամ, թե ինչպես կարող եք օգտագործել Arduino- ի փոխարեն ներկառուցված կոճակը)
  • 7 տրանզիստորների համար նախատեսված darlington տրանզիստոր IC, ULN2803AP- ը կանի (եթե դուք օգտագործում եք Arduino Uno կամ Meaga, դա ձեզ իսկապես պետք չէ)
  • 5 Վ հզորության բանկ, որը նախատեսված է բջջային հեռախոսների համար

Քայլ 1: Քննեք այն, ինչ ունեք

Քննեք այն, ինչ ունեք
Քննեք այն, ինչ ունեք
Քննեք այն, ինչ ունեք
Քննեք այն, ինչ ունեք

Պարզեք, թե ինչ լարման վրա է աշխատում յուրաքանչյուր LED և որքան հոսանք է անցնում:

  1. Բացեք մոմե կամրջի հատակը: Գտեք երկու լարերը, որոնք գնում են մեկ մոմի մոտ:
  2. Հեռացրեք մալուխներից որոշ մեկուսացում, որը բացահայտում է պղնձի լարերը ՝ առանց պղնձե լարերը կտրելու:
  3. Միացրեք լույսերը (հանգստացեք, դա ընդամենը մի քանի վոլտ է) և չափեք լարումը բացահայտված պղնձե լարերի վրա:
  4. Կտրեք մալուխը չափման կետերից մեկում (այս պահին լույսերը, իհարկե, անջատվում են), երկու ծայրերից հանեք մեկուսացումը (3 - 4 մմ): Չափել ընթացիկ ընթացքը: Այն, ինչ անում եք, նորից միացնում եք կտրված մալուխը ձեր բազմաչափի հետ ՝ թույլ տալով, որ ամբողջ հոսանքը հոսի ձեր բազմիմետրով, որն այժմ ձեզ ասում է հոսանքի չափը:

Իմ ընթերցումները

Մեկ մոմի լարումը (քայլ 3) ՝ 3.1 Վ

Նկատի ունեցեք, որ մոմի կամուրջի էներգիայի աղբյուրը 33 Վ էր: Այսպիսով, յոթ անգամ 3.1 Վ -ը ընդամենը 21.7 Վ է: Մոմերի մի մասի վրա պետք է լինի լրացուցիչ դիմադրություն: Եթե ես չափեի մոմի լարումը, այն պետք է որ լիներ մոտավորապես 11 Վ:

Մոմը վառելիս հոսանքը հոսում է (քայլ 4) ՝ 19 մԱ

Ես պատրաստվում եմ ամեն ինչ սնուցել 5 Վ 2 Ա մարտկոցի փաթեթով: Մոմերի համար ես պետք է լարումը 5 Վ -ից իջեցնեմ 3 Վ -ի: Ինձ պետք է դիմադրություն, որը կթողնի 2 Վ լարումը 19 մԱ հոսանքի դեպքում:

2 V / 0.019 A = 105 Ω

Հոսող էներգիան հետևյալն է.

2 V * 19 մԱ = 38 մՎտ

Դա աննշան է: Շատ ավելին կարող է փչել դիմադրողն ինքնին: Այնուամենայնիվ, առանց 105 Ω դիմադրության, ես կարող եմ փչել LED- ը: Ես ունեմ 100 Ω և 120 Ω դիմադրիչներ: Ես գնում եմ 120 Ω- ով: Այն տալիս է ավելի շատ պաշտպանություն:

3 V- ով բոլոր 7 մոմերի փորձարկումը վառ լույս տվեց, բացառությամբ մեկ մոմի, որն ուներ միայն շատ թույլ լույս, որի միջով անցնում էր ընդամենը 0,8 մԱ: Սա իմ մոմն էր լրացուցիչ դիմադրիչով: Պարզվեց, որ մյուս մոմերն ընդհանրապես դիմադրություն չունեին: Lightsահում օգտագործվող LED լույսերը պարզապես նախատեսված են 3 Վ լարման համար: Լրացուցիչ դիմադրիչով մոմը պետք է բացվեր մեղմ բռնությամբ, բայց ոչինչ չկոտրվեց: Դիմադրիչը հայտնաբերվել է պլաստիկ մոմի լամպի ներսում գտնվող փոքրիկ LED- ի տակ: Ստիպված էի այն զոդել և վերավաճառել լարերը: Դա մի փոքր խառնաշփոթ էր, քանի որ զոդման երկաթը տաքացրեց տաք սոսինձ, որն օգտագործվել էր հավաքման համար:

Այսպիսով, այժմ ես գիտեմ, որ ինչ էներգիայի աղբյուր էլ որ օգտագործեմ, ինչ էլ որ լինի լարումը, ես պետք է լարումը իջեցնեմ մինչև 3 Վ, ինչը թույլ է տալիս անցնել 19 մԱ:

Եթե ես ավելի ծանոթ լինեի LED տեխնոլոգիային, ապա կճանաչեի օգտագործվող LED- ի տեսակը և կիմանայի, որ դրա կարիքը 3 Վ է:

Քայլ 2: Որոշակի զոդում

Որոշ oldոդում
Որոշ oldոդում
Որոշ oldոդում
Որոշ oldոդում

Այս քայլում ես միացնում եմ բոլոր դրական (+) լարերը 5 մոմերից մեկ լարին: Հետո յուրաքանչյուր մոմի համար ավելացնում եմ առանձին բացասական (-) մետաղալար: LED լուսարձակը լույս է տալիս միայն այն դեպքում, երբ «+» և «-»-ը գնում են աջ: Քանի որ յուրաքանչյուր մոմից ունեք միայն երկու նույնական մալուխի ծայրեր, դուք պետք է փորձարկեք, թե որն է «+», իսկ որն է «-»: Դրա համար անհրաժեշտ է 3 Վ լարման աղբյուր: Ես ունեի մարտկոցի փոքր փաթեթ, որը ներառում էր երկու AAA մարտկոց: 3 Վ մետաղադրամով մարտկոցը հիանալի է աշխատում նաև փորձարկման համար:

Մոմե կամրջին անհրաժեշտ է 8 մալուխ `Արդուինոյի և կամրջի միջև անցնելու համար: Եթե դուք գտնեք 8 մեկուսացված լարերով մալուխ, դա հիանալի կլիներ: Մեկ մետաղալարը պետք է պահի 120 մԱ, մնացածը `առավելագույնը 20 մԱ: Ես ընտրեցի օգտագործել 4 երկալար մալուխ, որը պատահաբար ունեցա:

Առաջին պատկերը ցույց է տալիս, թե ինչպես եմ ես պատրաստել մեկ ընդհանուր մետաղալար ՝ մոմերից բոլոր «+» լարերը միացնելու համար: Հեռացրեք ընդհանուր մալուխի մեկուսացումը յուրաքանչյուր մոմի համար: Յուրաքանչյուր հոդի համար ավելացրեք փոքրացման մեկուսիչ խողովակի մի կտոր (պատկերի դեղին շերտը) և դրեք այն ընդհանուր մալուխի ճիշտ տեղում: +ոդեք «+» մետաղալարերը յուրաքանչյուր մոմից դեպի նրա հանգույցը, փակեք հանգույցը փոքրացող խողովակով և փոքրացրեք այն: Իհարկե, պարզ սոսինձ ժապավենը նույնպես լավ է, ամեն ինչ վերջում կփակվի:

Երկրորդ պատկերը ցույց է տալիս «-» լարերը, որոնք անհրաժեշտ են յուրաքանչյուր մոմի: Սովորական «+» մետաղալարն ուղղակիորեն անցնում է Arduino- ի 5 Վ -ի քորոցին (կամ գուցե նաև տախտակի միջոցով): Յուրաքանչյուր «-» մետաղալար գնում է դեպի տրանզիստոր IC- ի իր սեփական քորոցը (կրկին, հավանաբար, տախտակի միջոցով):

Արդուինոյին հաճախ անվանում են նախատիպերի տախտակ: Հացատախտակը նաև այն է, ինչ դուք օգտագործում եք նախատիպերում: Այն, ինչ ես նկարագրում եմ այս հրահանգի մեջ, նախատիպ է: Ես այն չեմ վերածի շքեղ փայլուն արտադրանքի, որտեղ ամեն ինչ թաքնված է գեղեցիկ պլաստիկ պատյաններում: Նախատիպից այն հաջորդ մակարդակի հասցնելը կնշանակեր, որ տախտակը փոխարինվի տպագիր տպատախտակով և եռակցված բաղադրիչներով և նույնիսկ Arduino- ն փոխարինվի ընդամենը միկրոկոնտրոլերի պարզ չիպով (իրականում այդպիսի չիպը Արդուինոյի ուղեղն է): Եվ ամեն ինչ տեղավորվել պլաստիկ պատյանում կամ կոտրված մոմ կամրջի ներսում:

Քայլ 3: Կապեր

Կապերը
Կապերը
Կապերը
Կապերը
Կապերը
Կապերը
Կապերը
Կապերը

Արդուինոսի մասին ՝ վերցված այս էջից.

  • Ընդհանուր առավելագույն հոսանքը մեկ մուտքի/ելքի քորոցի համար `40 մԱ
  • Բոլոր մուտքային/ելքային կապումներից հոսանքների գումարը `200 մԱ

Իմ մոմերը քաշում են յուրաքանչյուրը 19 մԱ, երբ սնուցվում է 3 Վ -ով: Դրանք յոթն են, ինչը կազմում է 133 մԱ: Այսպիսով, ես կարող էի դրանք ուղղակիորեն սնուցել ելքային կապումներից: Այնուամենայնիվ, ես ունեմ որոշ պահեստային darlington տրանզիստորային IC: Այսպիսով, ես մտածեցի, ինչու ոչ: Իմ միացումն ամեն ինչ անում է ճիշտ ձևով. Տվյալների կապերը միայն ազդանշանների համար են, այլ ոչ թե էներգիայի: Փոխարենը, ես օգտագործում եմ 5 Վ -անոց Arduino- ի LED լույսերը միացնելու համար: Փորձարկման ընթացքում ես միացնում եմ իմ նոութբուքը Arduino- ին: Ամեն ինչ սնուցվում է նոութբուքի USB- ից, որը տալիս է 5 Վ: Arduino Mega- ն ունի իր ապահովիչը, որը փչում է 500 մԱ հզորությամբ `համակարգիչը պաշտպանելու համար: Իմ մոմերը ձգում են առավելագույնը 133 մԱ: Arduino- ն, հավանաբար, շատ ավելի քիչ է: Ամեն ինչ լավ է աշխատում, երբ աշխատում է նոութբուքի միջոցով, ուստի Arduino- ի USB պորտին միացված 5 Վ մարտկոցների փաթեթը լավ է:

Տվյալների կապերը D3 - D9 գնում են IC ULN2803APGCN: LED- ները գործում են 3 Վ լարման վրա: Յուրաքանչյուր լամպ միացված է 5 Վ աղբյուրին և հետագայում `120 Ω ռեզիստորին: IC- ի մեկ ալիքի կողքին, որը վերջապես միացումն է միացնում գետնին IC- ում գտնվող darlington տրանզիստորի միջոցով:

Շղթայում ավելացվում է կոճակ, որը թույլ է տալիս օգտվողի որոշ գործողություններ: Մոմի կամուրջը կարող է ունենալ օգտվողի համար ընտրելի մի քանի ծրագիր:

Շղթայի կոճակը միացված է RESET- ին և GND- ին: Սա հենց այն է, ինչ անում է ներկառուցված վերականգնման կոճակը: Քանի որ ես ամեն ինչ պլաստիկ պատյանում չեմ ամփոփում, ես օգտագործում եմ Arduino- ի վերակայման կոճակը `ծրագիրը վերահսկելու համար: Ըստ նկարի կոճակ ավելացնելը կաշխատի ճիշտ այնպես, ինչպես տախտակի վերակայման կոճակը: Worksրագիրն աշխատում է `հիշելով, թե ինչ լուսային ծրագիր է օգտագործվել վերջին անգամ, երբ ծրագիրը գործարկվել է: Այսպիսով, յուրաքանչյուր վերականգնում կանցնի հաջորդ լուսային ծրագրին:

Լուսանկարները ցույց են տալիս, թե ինչպես են նոր մալուխները դուրս գալիս կամրջից, ինչպես եմ տրանզիստորային IC- ն և դիմադրիչները դնում տախտակի վրա և ինչպես են ցատկող լարերը միանում Arduino Mega- ին: Ես կտրեցի արու-արու 4 ցատկող մետաղալարեր 8 կիսալարերի մեջ, որոնք կպցրեցի մոմի կամրջից դուրս եկող 8 մալուխներին: Այս կերպ ես պարզապես կարող եմ մալուխները կպցնել տախտակի մեջ:

Այլընտրանք `առանց տրանզիստորների

Նախորդ քայլում ես պատրաստեցի մոմերի համար սովորական «+» մետաղալար և առանձին լարեր, որոնք տրանզիստորային IC- ով անցնում են գետնին: Երբ տվյալների մեկ քորոցը բարձրանում է, համապատասխան «-» հաղորդալարը հիմնավորվում է իր տրանզիստորի և LED լուսարձակների միջոցով:

«-» լարերը անմիջապես Arduino- ի տվյալների կապում միացնելը նույնպես կաշխատի, բայց միշտ հաշվի առեք, թե տվյալների հոսանքները որքան ընթացիկ կարող են դիմանալ: Այս մոտեցումը իմ ծրագրում փոփոխության կարիք կունենա: Մոմերը միացնելու համար ցածր կպահանջվի տվյալների կապը: Իմ ծրագիրն այնպես օգտագործելու համար պետք է մոմերի մեջ միացնել «+» և «-» նշանները: Մոմերի համար ունեցեք ընդհանուր «-» մետաղալար, որն անցնում է GND- ին Arduino- ում: Իսկ առանձին լարերը անցնում են մոմի «+» լարի և Arduino- ի տվյալների քորոցի միջև:

Քայլ 4: Լույսի ծրագրեր

Իմ ծրագիրը, որը ներկայացնում եմ հաջորդ քայլին, անցնում է 9 թեթև ծրագրով: Կոճակը սեղմելը մեկ վայրկյան կսևացնի լույսերը, այնուհետև կսկսվի հետևյալ լուսային ծրագիրը: Րագրերը հետևյալն են.

  1. Ուժեղ թարթում: Մոմերը պատահաբար են թարթում: Սա շատ տհաճ տեսք ունի, երբ դուք նրանց նայում եք մոտ տարածությունից, բայց կարող է լավ տեսք ունենալ հեռվից և գուցե ձեղնահարկի ցրտաշունչ պատուհանի հետևից: Թեև ձեր հարևանը կարող է զանգահարել հրշեջ ջոկատ:
  2. Փափուկ թարթում: Շատ լավ տեսք ունի: Իրական մոմերի պես մի սենյակում, առանց նախագծի:
  3. Տարբերվող թարթում: Մոմերը սահուն փոխարինվում են ուժեղ և փափուկ թարթման միջև 30 վայրկյան ընդմիջումներով:
  4. Տարբերվող թարթում: Ինչպես թիվ 3 -ը, բայց յուրաքանչյուր մոմ տարբերվում է իր տեմպերով 30 վրկ և 60 վրկ սահմաններում:
  5. Արագ փայլատակում: Մոմերը փայլում են ստատիկ խամրած մակարդակով և պատահաբար փայլփլում են: Միջին հաշվով մեկ վայրկյանում մեկ փայլատակում է լինում:
  6. Դանդաղ շողալ: Ինչպես #5 -ը, բայց շատ ավելի դանդաղ տեմպերով:
  7. Արագ ալիք միջին վերևի մոմից դեպի ներքև:
  8. Դանդաղ ալիք միջին վերևի մոմից դեպի ներքևը:
  9. Ստատիկ պայծառ լույս: Ես ստիպված էի սա ներառել, չէի ուզում ազատվել սկզբնական գործառույթից:

Քայլ 5: Կոդ

/*

FLICKERING CANDLE BRIDGE */ // variableանգել ռեժիմի փոփոխականին վիճակ պահելու համար // _attribute _ ((բաժին (. // Երբ ծրագիրը սկսվում է վերագործարկումից հետո, հիշողության այս հատվածը չի նախաստորագրվում, այլ պահում է այն արժեքը, որն ուներ մինչ վերականգնումը: // ծրագիրն առաջին անգամ գործարկելիս այն ունի պատահական արժեք: / * * Մոմի դասը պարունակում է այն ամենը, ինչ անհրաժեշտ է * թրթռացող մոմի համար լույսի մակարդակը հաշվարկելու համար: */ class candle {private: long maxtime; երկար ժամանակ; երկար մաքսլիտ; երկար մինլիտ; երկար միջին երկար օրիգինալ ժամանակ; երկար ծագման ժամանակ; երկար օրիգամքսլիտ; երկար օրիգինլիտ; երկար օրիգինլիտ; երկար deltamaxtime; երկար deltamintime; երկար դելտամաքսլիտ; երկար դելտամինլիտ; երկար դելտամեանիլիտ; երկար լոֆորատ; երկար երեկո; երկար սկիզբ; երկար թիրախ; բոց ֆակտոր; երկար նպատակային ժամանակ; երկար սկիզբ; երկար դելտատիմ; դատարկ newtarget (դատարկ); երկար onetarget (դատարկ); հանրային ՝ մոմ (երկար գորգ, երկար միթ, երկար մալ, երկար միլ, երկար մել, երկար էո); երկար մակարդակ (անվավեր); void initlfo (երկար դելտամատ, երկար դելտամիտ, երկար դելտամալ, երկար դելտամիլ, երկար դելտամյան, երկար փոխարժեք); դատարկ setlfo (դատարկ); }; մոմ:: մոմ (երկար գորգ, երկար mit, long mal, long mil, long mel, long eo). maxtime (mat), mintime (mit), maxlite (mal), minlite (mil), meanlite (mel), երեկո (eo), origmaxtime (mat), origmintime (mit), origmaxlite (mal), origminlite (mil), origmeanlite (mel) {target = meanlite; newtarget (); } / * * levelnow () վերադարձնում է մոմի լույսի մակարդակը հենց հիմա: * Ֆունկցիան հոգում է նոր պատահական լուսավորության մակարդակի սահմանումը և * այդ մակարդակին հասնելու ժամանակը: Փոփոխությունը ոչ թե գծային է, այլ հետևում է սիգմոիդ կորի: Երբ ժամանակը չէ նոր * մակարդակ սահմանելու համար, գործառույթը պարզապես վերադարձնում է լուսավորության մակարդակը: */ long candle:: levelnow (void) {երկար օգնություն, հիմա; բոց t1, t2; այժմ = millis (); եթե (այժմ> = targettime) {օգնություն = թիրախ; newtarget (); վերադարձ օգնություն; } else {// help = target * (millis () - starttime) / deltatime + start * (targettime - millis ()) / deltatime; t1 = float (թիրախային ժամանակը - այժմ) / deltatime; t2 = 1. - t1; // Սա սիգմոիդ հաշվարկի օգնություն է = t1*t1*t1*սկսել + t1*t1*t2*սկսել*3 + t1*t2*t2*թիրախ*3 + t2*t2*t2*թիրախ; վերադարձ օգնություն; }} դատարկ մոմ:: newtarget (դատարկ) {երկար գումար; գումար = 0; for (long i = 0; i <evenout; i ++) sum+= onetarget (); սկիզբ = թիրախ; թիրախ = գումար / երեկո; մեկնարկ = millis (); targettime = սկիզբ + պատահական (mintime, maxtime); deltatime = targettime - starttime; } երկար մոմ:: onetarget (անվավեր) {if (պատահական (0, 10) lastcheck + 100) {lastcheck = այժմ; / * * «Միլիվայրկյան հետո փոխարժեքի» առկայծման ալգո. * Եթե փոխարժեքը 10000 ms է, 5000 ms- ի ընթացքում մետաղադրամը * պտտվում է 50 անգամ: * 1/50 = 0.02 * Եթե պատահական (10000) սկիզբ + տոկոսադրույք / 2) {եթե (պատահական (տոկոսադրույք) թիրախային ժամ) վերադարձեք ցածր լայթ; վերադարձ (սկիզբ - lowlite) * (targettime - այժմ) / (targettime - starttime) + lowlite; } void twinkler:: twink (void) {starttime = millis (); targettime = պատահական (mintime, maxtime) + starttime; սկիզբ = պատահական (minlite, maxlite); } void setup () {int led; // Կարդացեք կախարդական ռեժիմի փոփոխականը, որը պետք է ասի // վերջին անգամ ինչ լուսային ծրագիր է գործարկվել, ավելացրեք այն // և զրոյի հասցրեք զրոյի դեպքում: ռեժիմ ++; ռեժիմ %= 9; // Սա հոգ է տանում արժեքների մասին // սա առաջին անգամն էր, երբ Arduino- ն // վարեց այս ծրագիրը: / * * ԿԱՐԵՎՈՐ ՆՇՈՄ * ============= * * * Այս ծրագրի հիմնական բանը PWM * ազդանշանների թողարկումն է LED լույսերին: Այստեղ ես կապում եմ 3 -ից 9 -ը * ելքային ռեժիմին: Arduino Mega2560- ում այս կապումներն են * գեղեցիկ PWM ազդանշաններ տալիս: Եթե ունեք այլ Arduino, ստուգեք * որ կապում (և քանի) կարող եք օգտագործել: Դուք միշտ կարող եք * վերաշարադրել ծածկագիրը PWM ծրագրային ապահովման օգտագործման համար, եթե ձեր Arduino- ն * չի կարող ապահովել բավարար ապարատային 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); // Ուղղակի անջատեք Arduino մոմի *տարայի տհաճ կարմիր լուսամփոփը [7]; // պատրաստվեք օգտագործել թարթող մոմերը, անկախ նրանից ՝ դրանք օգտագործում եք, թե ոչ ՝ թարթող *twink [7]; // պատրաստվել օգտագործել թարթող մոմերը … եթե (ռեժիմ == 8) {համար (int i = 3; i <10; i ++) analogWrite (i, 255); իսկ (ճշմարիտ); // Ամեն անգամ, երբ այս ծրագիրն աշխատում է, այն մտնում է // այս կարգի անվերջանալի հանգույց, մինչև որ սեղմվի վերականգնում // կոճակը: } if (ռեժիմ <2) // թարթում {long maxtime_; երկար ժամանակաշրջան_; երկար maxlite_; երկար minlite_; երկար միջին երկար նույնիսկ_; եթե (ռեժիմ == 0) {maxtime_ = 250; տևողություն_ = 50; maxlite_ = 256; minlite_ = 0; meanlite_ = 128; նույնիսկ_ = 1; } if (ռեժիմ == 1) {maxtime_ = 400; mintime_ = 150; maxlite_ = 256; minlite_ = 100; meanlite_ = 200; նույնիսկ_ = 1; } (int i = 0; i <7; i ++) {can = նոր մոմ (maxtime_, mintime_, maxlite_, minlite_, meanlite_, even_); } while (ճշմարիտ) // Մոմերը թարթելու անվերջ հանգույց {for (int i = 0; i levelnow ()); }} if (ռեժիմ <4) // lfo ավելացվել է թարթող {if (mode == 2) // նույն lfo (30 վ) բոլոր մոմերի համար {for (int i = 0; i initlfo (75, 50, 0, 50, 36, 30000);}} եթե (ռեժիմ == 3) // տարբեր lfo: s մոմերի համար {for (int i = 0; i initlfo (75, 50, 0, 50, 36, 20000); կարող [1]-> initlfo (75, 50, 0, 50, 36, 25000); կարող [2]-> initlfo (75, 50, 0, 50, 36, 30000); կարող [3]-> initlfo (75, 50, 0, 50, 36, 35000); կարող [4]-> initlfo (75, 40, 0, 50, 36, 40000); կարող [5]-> initlfo (75, 30, 0, 50, 26, 45000); can [6]-> initlfo (75, 20, 0, 50, 16, 50000); կարող [7]-> initlfo (75, 10, 0, 50, 6, 55000);} մինչ (ճշմարիտ / (int i = 0; i setlfo ();}}} if (ռեժիմ <6) // առկայծող մոմեր {int speedo; եթե (ռեժիմ == 4) speedo = 6000; հակառակ դեպքում speedo = 22000; for (int i = 0; i <7; i ++) twink = նոր առկայծիչ (300, 295, 255, 250, speedo); մինչդեռ (ճշմարիտ) {for (int i = 0; i levelnow ()); }} // Ալիքներ: // Այս բաժինը սկսվում է գանգուր փակագծերով պարզապես // ՝ ապահովելու համար, որ իրարամերժ փոփոխականների անուններ չկան: // փակագծերի այլ կարիք չկա, ստուգման կարիք չկա // ռեժիմի արժեքը:{int լոլիտ = 2; int hilite = 255; int միջին; int ampl; բոց fasedelta = 2.5; float fase; int elong; բոց ֆակտոր; երկար ժամանակաշրջան; միջին = (լոլիտ + հիլիտ) / 2; ampl = hilite - միջին; եթե (ռեժիմ == 6) ժամանակաշրջան = 1500; այլ ժամանակաշրջան = 3500; ֆակտոր = 6.28318530718 / ժամանակաշրջան; while (true) {fase = phactor * (millis () % period); elong = միջին + ampl * մեղք (fase); analogWrite (7, երկար); analogWrite (9, երկար); fase = phactor * ((millis () + period / 4) % period); elong = միջին + ampl * մեղք (fase); analogWrite (3, երկար); analogWrite (8, երկար); fase = phactor * ((millis () + period / 2) % period); elong = միջին + ampl * մեղք (fase); analogWrite (4, երկար); analogWrite (5, երկար); fase = phactor * ((millis () + 3 * period / 4) % period); elong = միջին + ampl * մեղք (fase); analogWrite (6, երկար); } // Մոմի լարերը Arduino- ին միացնելիս, // ես դրանք խառնեցի և երբեք կարգի չբերեցի: // Պատվերը կարևոր է ալիքների նախշեր ստեղծելու համար, // այնպես որ, ես հենց այս փոքրիկ սեղանն եմ գրել ինձ համար: // // Մոմ# կամրջի վրա ՝ 2 3 5 4 7 6 1 // Տվյալների կապ Arduino- ում ՝ 3 4 5 6 7 8 9}} void loop () {// Քանի որ յուրաքանչյուր լուսային ծրագիր իր անվերջ հանգույցն է, // ես գրել եմ բոլոր օղակները սկզբնական () բաժնում // և ոչինչ չեմ թողել այս հանգույցի () հատվածի համար: }

Քայլ 6. PWM- ի մասին

Լարերը պայծառ փայլում են, երբ սնուցվում են 3 Վ -ով, օգտագործելով ընդամենը 1.5 Վ, դրանք ընդհանրապես չեն լուսավորվում: LED լույսերը լավ չեն մարում մարման լարման հետ, ինչպես շիկացած լույսերը: Փոխարենը դրանք պետք է միացվեն ամբողջ լարումով, ապա անջատվեն: Երբ դա տեղի է ունենում վայրկյանում 50 անգամ, նրանք գեղեցիկ փայլում են 50 % պայծառությամբ, քիչ թե շատ: Եթե նրանց թույլատրվի լինել ընդամենը 5 ms և անջատված 15 ms, դրանք կարող են փայլել 25 % պայծառությամբ: Այս տեխնիկան այն է, ինչը ստիպում է LED լույսը մթնել: Այս տեխնիկան կոչվում է զարկերակի լայնության մոդուլյացիա կամ PWM: Arduino- ի նման միկրոկոնտրոլերը սովորաբար ունի տվյալների կապեր, որոնք կարող են ուղարկել/անջատել ազդանշաններ: Տվյալների որոշ կապում ներկառուցված են PWM- ի հնարավորությունները: Բայց եթե PWM- ի ներկառուցված կապերը բավարար չեն, սովորաբար հնարավոր է օգտագործել ծրագրավորման հատուկ գրադարաններ `« ծրագրային PWM կապում »ստեղծելու համար:

Իմ նախագծում ես օգտագործել եմ Arduino Mega2560- ը, որն ունի սարքավորումներ PWM 3 - 9 կապում: Եթե դուք օգտագործում եք Arduino UNO, ունեք ընդամենը վեց PWM կապ: Այդ դեպքում, եթե Ձեզ անհրաժեշտ է 7 -րդ (կամ նույնիսկ ավելի) մոմ, ես կարող եմ խորհուրդ տալ Բրեթ Հագմանի ծրագրային PWM գրադարանին, որը կարող եք գտնել այստեղ:

Խորհուրդ ենք տալիս: