Мазмұны:

Жарқыраған шам көпірі: 6 қадам (суреттермен)
Жарқыраған шам көпірі: 6 қадам (суреттермен)

Бейне: Жарқыраған шам көпірі: 6 қадам (суреттермен)

Бейне: Жарқыраған шам көпірі: 6 қадам (суреттермен)
Бейне: Басқа тышты деген осы 😡 2024, Қараша
Anonim
Image
Image

Бұл нұсқаулықта статикалық жарығы бар қарапайым шам көпірін жарқыраған шамдардың, жыпылықтаулардың, толқындық өрнектердің шексіз өзгеруі бар жақсы жарқыраған көңіл -күйге қалай айналдыру керектігін көрсетеді. Мен Рождество сатылымынан кейін 8 € шам шам көпірін сатып алдым. Оның 7 жарықдиодты шамдары мен 33 В 3 Вт шамалы қабырға адаптері бар. Ол жарқын және жылы ақ түспен жарқырайды және бұл жоба үшін тамаша болады, онда мен шамдарды жыпылықтау үшін Arduino қоямын. Ең танымал Arduino - Arduino Uno. Бұл жобада мен Arduino Mega 2560 қолданамын.

Мен 30 В қуат көзінен бас тартамын және ұялы телефондарға арналған қарапайым 5 В қуат банкін қуат көзі ретінде қолданамын.

Қуатты банктер туралы білетін жақсы нәрсе, оларда ішкі схемасы бар, ол батареяны 3,7 В -тан 5 В -қа айналдырады, себебі процесс біраз қуатты пайдаланатындықтан, егер ол қолданылмаса, қуат банкі өздігінен өшеді. Егер қуат банкі Arduino негізіндегі DIY гаджеттері үшін пайдаланылса, гаджет өзін үнемдейтін ұйқы режиміне қойып, бірнеше минуттан кейін қайта бастай алмайды. Бұл қуат банкін жабады. Бұл жыпылықтайтын шам көпірінде ұйқы режимі жоқ. Ол қуат кабелін тартқанша қуат банкін белсенді күйде ұстап, үнемі қуатты пайдаланады.

Бейнеде шам көпірі статикалық режимде және толық жыпылықтайды. Толық жыпылықтау шынымен көзді тітіркендіреді, ал бейне оны сәл тегістейді. Жабдық бекітілгеннен кейін, оның ішінде кабельдерді кесу, жаңа қосылыстарды дәнекерлеу және кейбір компоненттерді қосу, барлық қажетті жарық үлгілері Arduino кодын жазу арқылы жасалады. Бұл нұсқаулыққа мен қосатын үлгілер:

  • Нағыз шамға еліктейтін 4 түрлі жыпылықтайтын жарық
  • 2 түрлі жыпылықтау (әйтпесе статикалық шамдардың кездейсоқ жыпылықтауы)
  • 2 түрлі толқындық үлгі
  • қарапайым статикалық жарық

Үлгіні ауыстыру пайдаланушы интерфейсінің жалғыз элементі болып табылады. Қанша көп өрнек қажет болса және соғұрлым реттелетін болса, соғұрлым көп түймелер мен тұтқаларды қосу керек. Бірақ сұлулық қарапайымдылықта. Таңдалатын үлгілердің санын азайтыңыз. Аппараттық құралға көптеген басқару элементтерін қосу арқылы емес, кодтау және тестілеу кезінде ең жақсы параметрлерді таңдаңыз.

Жабдықтар

  • 7 шамы бар 1 жарықдиодты шам көпірі. Бұл батареялармен немесе қабырғаға орнатылатын қуат көзімен төмен кернеулі тұрақты ток үлгісі екеніне көз жеткізіңіз, ол өлімге әкелетін 110 - 240 В айнымалы токты 6 - 30 В тұрақты токқа түрлендіреді. Сондықтан шам көпірін бұзу өте қауіпсіз.
  • 1 Arduino Mega (кез келген басқа микроконтроллер жасайды, оны бағдарламалауға болатынына көз жеткізіңіз)
  • 1 нан тақтасының прототипі
  • секіргіш сымдар және басқа сымдар
  • дәнекерлеу құралы
  • мультиметр
  • 7 резистор, 120 Ω
  • 1 түйме (мен оның орнына Arduino -да кірістірілген түймені қалай пайдалануға болатынын көрсетемін)
  • ULN2803AP 7 транзисторға арналған Дарлингтон транзисторлық IC жасайды (егер сіз Arduino Uno немесе Meaga қолдансаңыз, бұл сізге қажет емес)
  • Ұялы телефондарға арналған 5 В қуат банкі

1 -қадам: не алғаныңызды тексеріңіз

Не алғаныңызды тексеріңіз
Не алғаныңызды тексеріңіз
Не алғаныңызды тексеріңіз
Не алғаныңызды тексеріңіз

Әр жарық диоды қандай кернеуде жұмыс істейтінін және қанша ток ағатынын біліңіз.

  1. Шам көпірінің түбін ашыңыз. Бір шамға түсетін екі сымды табыңыз.
  2. Мыс сымдарын кесетін мыс сымдарын ашатын кабельдерден оқшаулауды алып тастаңыз.
  3. Шамдарды қосыңыз (босаңсыңыз, бұл бірнеше вольт) және анықталған мыс сымдарының кернеуін өлшеңіз.
  4. Өлшеу нүктелерінің бірінде кабельді кесіңіз (бұл кезде, әрине, шамдар сөнеді), екі ұшындағы оқшаулауды (3 - 4 мм) алып тастаңыз. Өтетін токты өлшеңіз. Сіз не істейсіз, сіз мультиметрмен кесілген кабельді қайта қосасыз, бұл мультиметр арқылы барлық ағымның өтуіне мүмкіндік береді, ол сізге ағымның мөлшерін көрсетеді.

Менің оқуларым

Бір шамның кернеуі (3 -қадам): 3.1 В.

Есіңізде болсын, шам көпірінің қуат көзі 33 В болды. 3,1 В жеті есе 21,7 В шамды құрайды. Кейбір шамдарда қосымша резистор болуы керек. Егер мен шамның кернеуін өлшеген болсам, ол шамамен 11 В болуы керек еді.

Шам жанған кезде өтетін ток (4 -қадам): 19 мА

Мен бәрін 5 В 2 А аккумуляторлық батареямен қуаттайтын боламын. Шам үшін кернеуді 5 В -тан 3 В -қа дейін төмендету керек, маған резистор қажет, ол 19 мА ток кезінде 2 В кернеуді төмендетеді.

2 В / 0,019 А = 105 Ω

Қуаттың таралуы - бұл:

2 В * 19 мА = 38 мВт

Бұл шамалы. Көп нәрсе резистордың өзін ұрып жіберуі мүмкін. Дегенмен, 105 Ω резисторсыз мен жарық диодты сөндіре аламын. Менде 100 Ω және 120 Ω резисторлар бар. Мен 120 with барамын. Бұл көбірек қорғаныс береді.

Барлық 7 шамды 3 В -пен сынау жарық шам берді, тек шамы шамы шамсыз, шамасы 0,8 мА шамасында. Бұл менің қосымша резисторы бар шам болды. Басқа шамдардың резисторы мүлде жоқ болып шықты. Люстрада қолданылатын жарықдиодты шамдар 3 В кернеуге арналған! Қосымша резисторы бар шамды жеңіл күш қолдану арқылы ашу керек еді, бірақ ештеңе сынған жоқ. Резистор пластикалық шамның ішіндегі кішкентай жарық диодының астында табылды. Мен оны сөндіріп, сымдарды қайта сатуға тура келді. Бұл сәл лас болды, өйткені дәнекерлеу үтік монтажға қолданылған ыстық желімді қыздырды.

Енді мен білемін, мен қандай қуат көзі қолданамын, кернеу қандай болса да, кернеуді 3 В дейін төмендетуім керек, бұл 19 мА өтуге мүмкіндік береді.

Егер мен жарықдиодты технологияны жақсы білетін болсам, мен жарықдиодты қолданар едім, мен оған 3 В керектігін білер едім.

2 -қадам: кейбір дәнекерлеу

Кейбір дәнекерлеу
Кейбір дәнекерлеу
Кейбір дәнекерлеу
Кейбір дәнекерлеу

Бұл қадамда мен 5 шамнан барлық оң (+) сымдарды бір сымға қосамын. Содан кейін мен әр шамға бөлек теріс (-) сым қосамын. Жарықдиодты шам «+» және «-» оңға бұрылғанда ғана жанады. Әр шамнан тек екі бірдей кабель ұштары болғандықтан, олардың қайсысы '+', қайсысы '-' екенін тексеру керек. Ол үшін сізге 3 В қуат көзі қажет. Менде екі AAA батареясы бар шағын батарея пакеті болды. 3 В монеталық батарея тестілеу үшін де жақсы жұмыс істейді.

Шам көпіріне Ардуино мен көпір арасында жүру үшін 8 кабель қажет. Егер сіз 8 оқшауланған сыммен кабель тапсаңыз, бұл жақсы болар еді. Бір сым 120 мА сыйымдылыққа ие болуы керек, ал қалғандары максимум 20 мА. Мен 4 қос сымды кабельді қолдануды жөн көрдім.

Бірінші суретте шамдардан барлық '+' сымдарын қосу үшін бір жалпы сымды қалай дайындағаным көрсетілген. Әр шам үшін жалпы сымның оқшаулауын алып тастаңыз. Әрбір түйісу үшін шөгілетін оқшаулағыш түтікті (суреттегі сары жолақ) қосыңыз және оны жалпы кабельдің оң жақ жеріне қойыңыз. Әр шамнан оның түйіскен жеріне '+' сымын дәнекерлеп, түйінді қысу түтігімен жабыңыз және оны қысыңыз. Әрине, қарапайым жабысқақ таспа да жақсы, бәрі де соңында жабылады.

Екінші суретте әр шамға қажет '-' сымдары көрсетілген. Кәдімгі '+' сымы тікелей Arduino -ның 5 В істігіне түседі (немесе, мүмкін, нан тақтасы арқылы). Әрбір '-' сымы IC транзисторының түйреуішіне өтеді (тағы да, мүмкін, нан тақтасы арқылы).

Arduino жиі прототиптік тақта деп аталады. Нан тақтасы - бұл сіз прототиптерде қолданатын нәрсе. Бұл нұсқаулықта мен сипаттайтын нәрсе - бұл прототип. Мен оны әдемі пластикалық қапшықтарда жасырылған сәнді жылтыр өнімге айналдырмаймын. Оны прототиптен келесі деңгейге көтеру - бұл тақтаны баспа платасына және дәнекерленген компоненттерге ауыстыруды, тіпті Arduino -ны қарапайым микроконтроллер чипіне ауыстыруды білдіреді (шын мәнінде мұндай чип - Arduino миы). Және бәрі пластикалық корпуста немесе бұзылған шам көпірінің ішінде болуы керек.

3 -қадам: Қосылымдар

Қосылымдар
Қосылымдар
Қосылымдар
Қосылымдар
Қосылымдар
Қосылымдар
Қосылымдар
Қосылымдар

Осы беттен алынған Arduinos туралы:

  • Кіріс/шығыс түйреуішіне жалпы максималды ток: 40мА
  • Барлық кіріс/шығыс түйреуіштерінің токтарының қосындысы: 200мА

Менің шамдарым әрқайсысы 19 мА құрайды, 3 В қуатымен жұмыс істейді. Олардың жетеуі бар, бұл 133 мА құрайды. Сондықтан мен оларды шығыс түйреуіштерден тікелей қуаттай аламын. Дегенмен, менде қосалқы дарлингтондық транзисторлық IC бар. Сондықтан мен неге болмасқа деп ойладым. Менің схемам бұл нәрсені дұрыс жасайды: деректер түйреуіштері қуат үшін емес, тек сигналдарға арналған. Оның орнына мен жарықдиодты шамдарды қосу үшін Arduino -дағы 5 В істікшені қолданамын. Сынақ кезінде менде ноутбук Arduino -ға қосылған. Барлығы ноутбук USB -ден қуат алады, ол 5 В береді. Arduino Mega сақтандырғышы бар, ол компьютерді қорғау үшін 500 мА -қа дейін соғады. Менің шамдар максимум 133 мА құрайды. Arduino әлдеқайда төмен болуы мүмкін. Ноутбукпен жұмыс істегенде бәрі жақсы жұмыс істейді, сондықтан Arduino USB портына қосылған 5 В батареяны пайдалану жақсы.

D3 - D9 деректер түйрегіштері ULN2803APGCN IC -ге өтеді. Жарық диодтары 3 В жұмыс істейді. Әр шам 5 В көзіне, одан әрі 120 Ом резисторға қосылады. ОЖ -да дарлингтон транзисторы арқылы жерге тұйықталуды қосатын IC бір арнасынан басқа.

Пайдаланушының кейбір әрекеттерін қосу үшін схемаға басу түймесі қосылады. Шам көпірінде пайдаланушылар таңдауға болатын бірнеше бағдарлама болуы мүмкін.

Схемадағы басу түймесі RESET пен GND -ге қосылған. Кірістірілген қалпына келтіру түймесі дәл осылай жасайды. Мен бәрін пластикалық қаптамаға салмайтындықтан, мен бағдарламаны басқару үшін Arduino -дегі қалпына келтіру түймесін қолданамын. Суретке сәйкес түймені қосу тақтаны қалпына келтіру түймесі сияқты жұмыс істейді. Бағдарлама соңғы рет іске қосылғанда қандай жеңіл бағдарлама қолданылғанын еске түсіру арқылы жұмыс істейді. Осылайша, әрбір қалпына келтіру келесі жарық бағдарламасына өтеді.

Фотосуреттерде жаңа кабельдердің көпірден қалай шығатыны, IC транзисторы мен резисторларды нан тақтасына қалай салғаным және секіргіш сымдардың Arduino Mega -ға қалай қосылатыны көрсетілген. Мен ерлер мен еркектердің 4 сымын 8 жартылай сымға бөлдім, мен оларды шам көпірінен шығатын 8 кабельге жалғадым. Осылайша мен кабельдерді тақтаға жабыстыра аламын.

Транзисторсыз балама

Алдыңғы қадамда мен шамға арналған жалпы '+' сымын дайындадым және транзистор IC арқылы жерге өтетін '-' сымдарын бөлдім. Деректер түйреуіші жоғары көтерілгенде, тиісті «-» сымы транзистор мен жарықдиодты шамдар арқылы жерге қосылады.

'-' сымдарын Arduino-ның деректер түйреуіштеріне тікелей қосу да жұмыс істейтін болар еді, бірақ әрқашан деректер түйреуіштері қаншалықты токқа шыдай алатынын ескеріңіз! Бұл тәсіл менің бағдарламамды өзгертуді қажет етеді. Шамды қосу үшін деректер түйреуіштері төмен болуы керек. Менің бағдарламамды сол күйінде қолдану үшін шамдағы '+' және '-' ауыстыру керек. Ардуинодағы GND-ге өтетін шамдарға арналған жалпы '-' сымына ие болыңыз. Бөлек сымдар шамның '+' сымы мен Arduino -дың істікшесі арасында өтеді.

4 -қадам: Жарық бағдарламалары

Менің келесі қадамда ұсынатын бағдарламам 9 жеңіл бағдарламадан өтеді. Түймені басу шамдарды бір секундқа сөндіреді, содан кейін келесі жарық бағдарламасы басталады. Бағдарламалар келесідей:

  1. Қатты жыпылықтау. Шамдар кездейсоқ жыпылықтайды. Егер сіз оларға жақыннан қарасаңыз, бұл өте тітіркендіргіш болып көрінеді, бірақ алыстан және аязды шатыр терезесінің артында жақсы көрінуі мүмкін. Дегенмен, сіздің көршіңіз өрт сөндірушілерді шақыруы мүмкін.
  2. Жұмсақ жыпылықтау. Өте жақсы көрінеді. Жорықсыз бөлмедегі нағыз шамдар сияқты.
  3. Түрлі жыпылықтау. Шамдар шамамен 30 секунд аралығында күшті және жұмсақ жыпылықтау арасында біртіндеп ауысады.
  4. Түрлі жыпылықтау. №3 сияқты, бірақ әр шам 30-60 секунд аралығында өз қарқынымен өзгереді.
  5. Жылдам жыпылықтау. Шамдар статикалық күңгірт деңгейде жарқырайды және кездейсоқ жыпылықтайды. Орташа алғанда секунд сайын бір жыпылықтайды.
  6. Баяу жыпылықтау. №5 сияқты, бірақ әлдеқайда баяу.
  7. Жоғарғы шамнан төменгі шамға дейін жылдам толқын.
  8. Жоғарғы шамнан төменгі шамға дейінгі баяу толқын.
  9. Статикалық жарық. Мен мұны қосуым керек болды, бастапқы функциядан құтылғым келмеді.

5 -қадам: Кодекс

/*

FLICKERING CANDLE BRIDGE */ // күй айналымын // күйін ұстап тұру үшін режимнің айнымалысын жариялаңыз _attribute _ ((бөлім («. Noinit»))) қол қойылмаған int режимі; // Бағдарлама қалпына келтіруден кейін басталғанда, бұл жадтың // бөлігі инициализацияланбайды, бірақ қалпына келтіруден бұрын болған // мәнін сақтайды. // бағдарламасы бірінші рет іске қосылған кезде кездейсоқ мәнге ие болады. / * * Шам класы жыпылықтайтын шамның жарық деңгейін есептеу үшін қажет нәрсенің бәрін сақтайды. */ сынып шамы {жеке: ұзақ уақыт; ұзақ уақыт; ұзын маклит; ұзын минлит; ұзын орташа; ұзақ бастапқы уақыт; ұзақ бастапқы уақыт; ұзақ оригмаклит; ұзақ оригминлит; ұзақ оригманлит; ұзақ deltamaxtime; Deltamintime ұзақ; ұзын дельтамакслит; ұзын дельтаминлит; ұзақ дельтаманлит; ұзын лфорат; ұзақ тегістеу; ұзақ басталу; ұзақ мақсат; өзгермелі фактор; ұзақ мерзімді мақсат; ұзақ басталу уақыты; ұзақ созылу; жарамсыз жаңа мақсат (жарамсыз); ұзақ мақсатты (жарамсыз); қоғамдық: шам (ұзын мат, ұзын мит, ұзын мал, ұзын мил, ұзын мел, ұзын эо); ұзақ деңгейлі ақпарат (жарамсыз); void initlfo (ұзын дельтамат, ұзақ дельтамит, ұзақ дельтамал, ұзақ дельтамил, ұзақ дельтаман, ұзақ ставка); void setlfo (жарамсыз); }; шам:: шам (ұзын төсеніш, ұзын мит, ұзын мал, ұзын миль, ұзын мел, ұзын eo): maxtime (мат), mintime (mit), maxlite (mal), minlite (mil), meanlite (mel), жұп (eo), origmaxtime (мат), origmintime (mit), origmaxlite (mal), origminlite (mil), origmeanlite (mel) {target = meanlite; жаңа мақсат (); } / * * levelnow () шам дәл қазір болуы керек жарық деңгейін қайтарады. * Функция жаңа кездейсоқ жарық деңгейін және * осы деңгейге жету үшін қажет уақытты анықтайды. Өзгеріс сызықты емес *, бірақ сигмоидтық қисықпен жүреді. Жаңа * деңгейді анықтау уақыты келмегенде, функция жарық деңгейін қайтарады. */ long mum:: levelnow (void) {long help, now; қалқыма t1, t2; қазір = миллис (); if (now> = targettime) {help = target; жаңа мақсат (); қайтару көмегі; } else {// help = target * (millis () - starttime) / deltatime + start * (targettime - millis ()) / deltatime; t1 = float (targettime - қазір) / deltatime; t2 = 1. - t1; // Бұл сигма тәрізді есептеу анықтамасы = t1*t1*t1*бастау + t1*t1*t2*бастау*3 + t1*t2*t2*мақсат*3 + t2*t2*t2*мақсат; қайтару көмегі; }} жарамсыз шам:: newtarget (void) {ұзақ сома; қосынды = 0; for (long i = 0; i <evenout; i ++) sum+= onetarget (); бастау = мақсат; мақсат = қосынды / жұптық; іске қосу уақыты = миллис (); мақсатты уақыт = старт + кездейсоқ (минимум, максимум); deltatime = мақсатты уақыт - басталу уақыты; } ұзақ шам:: onetarget (void) {if (random (0, 10) lastcheck + 100) {lastcheck = now; / * * «Миллисекундтардан кейін» жыпылықтау үшін альго: * Тарифтен кейін тексеруді бастаңыз / 2 миллисекунд * Тариф / 2 миллисекунд кезеңінде жыпылықтау мүмкіндігін 50 %құрайды. * Егер жылдамдық 10000 мс болса, 5000 мс ішінде монета * 50 рет аударылады. * 1/50 = 0,02 * Егер кездейсоқ (10000) басталу уақыты + жылдамдық / 2) {if (кездейсоқ (жылдамдық) мақсатты уақыт) төменгі деңгейге оралса; return (start - lowlite) * (targettime - қазір) / (targettime - іске қосу уақыты) + lowlite; } жарамсыз жыпылықтағыш:: twink (void) {бастау уақыты = millis (); мақсатты уақыт = кездейсоқ (минут, максимум) + басталу уақыты; бастау = кездейсоқ (минлит, маклит); } void setup () {int led; // Сиқырлы режимнің айнымалысын оқыңыз, ол // соңғы рет қандай жарық бағдарламасы іске қосылғанын // айтып, оны көбейтіңіз // толып кетсе нөлге ысырыңыз. режим ++; %= 9 режимі; // Бұл кез келген мәнге жауап береді // Arduino // бұл бағдарламаны бірінші рет іске қосты. / * * МАҢЫЗДЫ ЕСКЕРТУ * ============= * * * Бұл бағдарламаның ең маңыздысы - PWM * сигналдарын жарықдиодты шамдарға шығару. Мұнда мен түйреуіштерді 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]; // жыпылықтайтын шамдарды қолдануға дайындалыңыз … if (mode == 8) {for (int i = 3; i <10; i ++) analogWrite (i, 255); while (true); // Бұл бағдарлама іске қосылған сайын, // қалпына келтіру батырмасы басылғанша // осындай шексіз циклге енеді. } егер (режим <2) // жыпылықтайды {long maxtime_; ұзақ уақыт_; ұзын maxlite_; ұзын минлит_; ұзын орташа_ ұзақ жұп_; егер (режим == 0) {maxtime_ = 250; mintime_ = 50; maxlite_ = 256; minlite_ = 0; Meanlite_ = 128; жұп_ = 1; } if (mode == 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 (true) // Шамның жыпылықтауы үшін шексіз цикл {for (int i = 0; i levelnow ()); }} if (режим <4) // lfo жыпылықтағанға қосылады {if (mode == 2) // lfo (30 s) барлық шамдар үшін {for (int i = 0; i initlfo (75, 50, 0), 50, 36, 30000);}} if (mode == 3) // шамдар үшін әр түрлі lfo: s {for (int i = 0; i initlfo (75, 50, 0, 50, 36, 20000); can [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); мүмкін [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); can [7]-> initlfo (75, 10, 0, 50, 6, 55000);} while (шын) // lfo шамының жыпылықтауы үшін шексіз цикл {long lastclock = 0; for (int i = 0; i levelnow ()); if (millis ()> lastclock + 4000) {lastclock = millis (); for (int i = 0; i setlfo ();}}} if (mode <6) // жыпылықтайтын шамдар {int speedo; if (mode == 4) speedo = 6000; else speedo = 22000; for (int i = 0); i <7; i ++) жыпылықтау = жаңа жыпылықтаушы (300, 295, 255, 250, speedo); while (true) {for (int i = 0; i levelnow ()); }} // Толқындар. // Бұл бөлім қарама -қайшы жақшалардан басталады // қарама -қайшы айнымалы атаулардың жоқтығына көз жеткізу үшін. // жақшаның басқа қажеті жоқ, // режимнің мәнін тексерудің қажеті жоқ.{int lolite = 2; int hilite = 255; int mean; int ampl; float fasedelta = 2,5; өзгермелі фаза; int elong; өзгермелі фактор; ұзақ кезең; орташа = (лолит + хилит) / 2; ampl = хилит - орташа; егер (режим == 6) кезең = 1500; басқа кезең = 3500; фактор = 6.28318530718 / кезең; while (true) {fase = фактор * (миллис () % кезең); elong = орташа + ampl * sin (фаза); analogWrite (7, ұзын); analogWrite (9, ұзын); фаза = фактор * ((миллис () + кезең / 4) % кезең); elong = орташа + ampl * sin (фаза); analogWrite (3, ұзын); analogWrite (8, ұзын); фаза = фактор * ((миллис () + кезең / 2) % кезең); elong = орташа + ampl * sin (фаза); analogWrite (4, ұзын); analogWrite (5, ұзын); фаза = фактор * ((миллис () + 3 * кезең / 4) % кезең); elong = орташа + ampl * sin (фаза); analogWrite (6, ұзын); } // Шам сымдарын Arduino -ға қосқанда, мен оларды араластырдым және ешқашан реттемедім. // Тапсырыс толқындық өрнектерді құру үшін маңызды, сондықтан мен бұл шағын кестені мен үшін жаздым: // // Шам# көпірде: 2 3 5 4 7 6 1 // Arduino -дағы деректер түйіні: 3 4 5 6 7 8 9}} void loop () {// Әрбір жеңіл бағдарлама өзінің шексіз циклы болғандықтан, // барлық циклдарды begin () бөлімінде жаздым // және бұл цикл () бөліміне ештеңе қалдырмадым. }

6 -қадам: PWM туралы

Жарық диодтары 3 В қуатымен жұмыс істегенде жарқырайды, тек 1,5 В кернеуі бар, олар мүлде жанбайды. Жарықдиодты шамдар қыздыру шамдары сияқты сөнетін кернеумен де жақсы өшпейді. Оның орнына оларды толық кернеумен қосу керек, содан кейін өшіру керек. Бұл секундына 50 рет болғанда, олар 50 % жарықтықпен жақсы немесе аз жарқырайды. Егер оларға тек 5 мс және 15 мс қосуға рұқсат етілсе, олар 25 % жарықтықпен жарқырауы мүмкін. Бұл әдіс жарықдиодты шамды сөндіреді. Бұл әдіс импульстік ен модуляциясы немесе PWM деп аталады. Әдетте Arduino сияқты микроконтроллерде сигналдарды қосу/өшіруді жібере алатын деректер түйрегіштері болады. Кейбір деректер түйреуіштерінде PWM мүмкіндіктері бар. Егер кіріктірілген PWM бар түйреуіштер жеткіліксіз болса, әдетте «бағдарламалық қамтамасыз етудің түйреуіштерін» құру үшін арнайы бағдарламалау кітапханаларын қолдануға болады.

Менің жобада мен Arduino Mega2560 қолдандым, оның 3 - 9 түйреуіштерінде PWM аппараттық құралы бар. Егер сіз Arduino UNO қолдансаңыз, сізде тек алты PWM түйреуіші бар. Бұл жағдайда, егер сізге 7 -ші (немесе одан да көп) шам қажет болса, мен Бретт Хагманның PWM кітапханасын ұсынамын, оны сіз мұнда таба аласыз.

Ұсынылған: