Мазмуну:

Жаркыраган шам көпүрөсү: 6 кадам (сүрөттөр менен)
Жаркыраган шам көпүрөсү: 6 кадам (сүрөттөр менен)

Video: Жаркыраган шам көпүрөсү: 6 кадам (сүрөттөр менен)

Video: Жаркыраган шам көпүрөсү: 6 кадам (сүрөттөр менен)
Video: 3 простых изобретения с двигателем постоянного тока 2024, Ноябрь
Anonim
Image
Image

Бул көрсөтмө статикалык жарык менен жөнөкөй шам көпүрүн чырактын жарыгы, жаркылдоо, толкун моделдери жана башка чексиз вариациялары бар жагымдуу маанай жарыгына кантип айландырууну көрсөтөт. Рождестволук сатуудан кийин мен 8 € үчүн шам көпүрөсүн сатып алдым. Бул 7 LED чырактары жана кээ бир 33 V 3 W дубал адаптери бар. Ал жаркыраган жана жылуу ак түс менен жаркырайт жана бул проекти үчүн идеалдуу болот, анда мен шамдардын жаркылдашы үчүн Arduino коём. Эң популярдуу Arduino - Arduino Uno. Бул долбоордо мен Arduino Mega 2560 колдонуп жатам.

Мен 30 В кубаттуулуктан баш тартам жана уюлдук телефондор үчүн арналган 5 В кубаттуу банкты электр менен камсыздоо катары колдоном.

Күч банктары жөнүндө билүү үчүн жакшы нерсе, аларда ички схемасы бар, ал батарейканы 3.7 Втан 5 Вга айландырат, анткени процесс кандайдыр бир кубатты колдонот, эгер колдонулбаса, электр банкы өзүн өзү өчүрөт. Эгерде күч банкы Arduino негизделген DIY гаджеттери үчүн колдонулса, гаджет өзүн өзү үнөмдөөчү уйкуга коюп, бир нече мүнөттөн кийин кайра баштай албайт. Бул электр банкын жабат. Бул шамчырак көпүрөнүн уйку режими жок. Ал электр кабелин сууруп алганга чейин, кубаттуулук банкын активдүү кармап, дайыма кубаттуулукту колдонот.

Видеодо шам көпүрөсү статикалык режимде жана толугу менен жаркылдап көрүнүп турат. Толук жылтылдоо чындыгында көздү абдан тажатат, ал эми видео аны бир аз жумшартат. Аппаратура оңдолгондон кийин, анын ичинде кабелдерди кесүү, жаңы туташууларды кошуу жана кээ бир компоненттерди кошуу, каалаган жарык үлгүлөрү Arduino кодун жазуу менен түзүлөт. Бул көрсөтмөгө мен киргизген үлгүлөр:

  • Чыныгы шамдарды туураган 4 түрдүү жаркыраган жарык
  • 2 башка жаркыроо (башкача статикалык жарыктардын туш келди жарк этиши)
  • 2 түрдүү толкун үлгүлөрү
  • жөнөкөй статикалык жарык

Моделдерди которуу бир колдонуучу интерфейсинин баскычы аркылуу ишке ашат. Каалаган үлгүлөр канчалык көп болсо жана жөндөө дагы ошончолук кааласа, ошончолук көп баскычтар менен баскычтарды кошуу керек. Бирок сулуулук жөнөкөйлүктө. Тандалган үлгүлөрдүн санын азайтыңыз. Аппаратурага көп көзөмөлдү кошуу менен эмес, коддоо жана тестирлөө учурунда эң жакшы орнотууларды тандаңыз.

Жабдуулар

  • 7 лампасы бар 1 LED шам көпүрөсү. Төмөнкү чыңалуудагы DC модели экени текшерилсин, же батарейкалар менен же дубалга орнотулган электр булагы менен, ал өлүмгө алып келүүчү 110 - 240 В ACны 6 - 30 V DCга айландырат. Ошентип, шам көпүрөсүн бузуу толугу менен коопсуз.
  • 1 Arduino Mega (каалаган башка микроконтроллер муну программалай алат)
  • 1 протоколдуу нан тактасы
  • секирүүчү зымдар жана башка зымдар
  • ширетүүчү курал
  • мультиметр
  • 7 каршылык, 120 Ω
  • 1 баскыч
  • Дарлингтон транзистору IC, 7 транзистор үчүн, ULN2803AP аткарат (Эгерде сиз Arduino Uno же Meaga колдонгон болсоңуз, анда бул сизге кереги жок)
  • Уюлдук телефондорго арналган 5 В кубаттуу банк

1 -кадам: Алган нерселериңизди текшериңиз

Эмне алганыңды текшер
Эмне алганыңды текшер
Эмне алганыңды текшер
Эмне алганыңды текшер

Ар бир светодиод кандай чыңалууда иштээрин жана канча ток өтөөрүн билип алыңыз.

  1. Шам көпүрөсүнүн түбүн ачыңыз. Бир шамга баруучу эки зымды табыңыз.
  2. Жез зымдарын кескен жок, жез зымдарын ачкан кабелдердин айрым изоляциясын чечип алыңыз.
  3. Жарыктарды күйгүзүңүз (эс алыңыз, бул бир нече вольт) жана ачылган жез зымдардын чыңалуусун өлчөңүз.
  4. Кабелди өлчөө пункттарынын биринен кесип алыңыз (бул учурда, албетте, свет өчөт), эки четинен бир аз жылуулоону (3 - 4 мм) сыйрып алыңыз. Өтүп жаткан токту өлчөгүлө. Сиз эмне кылсаңыз, мультиметр менен кесилген кабелди кайра туташтырып, мультиметр аркылуу бардык токтун агып кетишине жол бересиз, ал азыр сизге токтун көлөмүн айтат.

Менин окууларым

Бир шамдын үстүндөгү чыңалуу (3 -кадам): 3.1 В.

Шам көпүрөсүнүн энергия булагы 33 В болгонун эске алыңыз. Ошентип, жети эсе 3,1 V болгону 21,7 В. Кээ бир шамдарда кошумча резистор болушу керек. Эгерде мен шамдын чыңалуусун ченесем, анда ал болжол менен 11 В болушу керек эле.

Шам күйгөндө агат (4 -кадам): 19 мА

Мен баарын 5 В 2 А батарейкасы менен кубаттайм. Шамдар үчүн чыңалууну 5 Втан 3 Вга чейин түшүрүүм керек. Мага каршылык керек, ал 19 мА токто 2 В чыңалуусун түшүрөт.

2 V / 0.019 A = 105 Ω

Күч таркатуу бул:

2 V * 19 мА = 38 мВт

Бул анча деле маанилүү эмес. Дагы бир топ резистордун өзүн жардырышы мүмкүн. Бирок, 105 дюймалык каршылыгы жок мен светодиодду күйгүзүп алмакмын. Менде 100 Ω жана 120 Ω каршылыгым бар. Мен 120 with менен барам. Бул көбүрөөк коргоону берет.

Бардык 7 шамды 3 В менен текшерүү, бир шамдан башка, жаркыраган жарык берди. Бул менин кошумча каршылыгы бар шамым болчу. Көрсө, башка шамдардын каршылыгы такыр жок экен. Люстрада колдонулган LED чырактары жөн эле 3 В үчүн арналган! Кошумча каршылыгы бар шамды жеңил зомбулук менен ачуу керек болчу, бирок эч нерсе сынган жок. Резистор пластикалык шамдын лампочкасынын ичиндеги кичинекей LEDдын астынан табылган. Мен аны тазалап, зымдарды кайра сатууга туура келди. Бул бир аз баш аламан болчу, анткени ширетүүчү темир монтаждоо үчүн колдонулган ысык клейди жылыткан.

Ошентип, азыр мен билем, кандай гана энергия булагы болбосун, кандай гана чыңалуу болбосун, чыңалууну 3 В чейин түшүрүшүм керек, 19 мА аркылуу өтүшүм керек.

Эгерде мен LED технологиясы менен көбүрөөк тааныш болсом, анда колдонулган LEDдын түрүн таанымакмын жана 3 В керектүү экенин билмекмин.

2 -кадам: Кээ бир Soldering

Кээ бир Soldering
Кээ бир Soldering
Кээ бир Soldering
Кээ бир Soldering

Бул кадамда мен 5 шамдан бардык оң (+) зымдарды бир зымга туташтырам. Анан мен ар бир шам үчүн өзүнчө терс (-) зым кошом. Светодиоддук чырак '+' жана '-' оңго кеткенде гана күйөт. Сизде ар бир шамдан экиден бирдей кабелдик учтар болгондуктан, кайсынысы '+', кайсынысы '-' экенин текшериш керек. Бул үчүн 3 В кубаттуулук булагы керек. Менде кичинекей батарейка бар болчу, анын ичинде эки AAA батарейкасы бар болчу. 3 В монеталуу батарейка тестирлөө үчүн да жакшы иштейт.

Шам көпүрө Ардуино менен көпүрөнүн ортосунда өтүшү үчүн 8 кабель керек. Эгерде сиз 8 изоляцияланган зымдары бар кабелди тапсаңыз, сонун болмок. Бир зым 120 мА сыйымдуу болушу керек, калгандары эң көп дегенде 20 мА көтөрүшү керек. Мен 4 кош зым кабелин колдонууну туура көрдүм.

Биринчи сүрөт шамдардан бардык '+' зымдарын туташтыруу үчүн бир жалпы зымды кантип даярдаганымды көрсөтөт. Ар бир шам үчүн жалпы зымдын изоляциясын алып салыңыз. Ар бир муунга кичирейтүүчү изоляциялык түтүктү (сүрөттөгү сары тилке) кошуп, аны жалпы кабелдин туура жерине коюңуз. '+' Зымын ар бир шамдан анын муунуна чейин ширетип, түйүндү кысуучу түтүк менен жаап, кичирейтип коюңуз. Албетте, жөнөкөй скотч жакшы, баары аягында жабылат.

Экинчи сүрөттө ар бир шамга керек болгон '-' зымдары көрсөтүлгөн. Жалпы '+' зымы түздөн -түз Arduino 5 V пинине (же, балким, нан тактасы аркылуу) барат. Ар бир '-' зымы IC транзисторунун өз казыгына барат (дагы, кыязы, нан тактасы аркылуу).

An Arduino көбүнчө прототипдөө тактасы деп аталат. Нан тактасы - бул прототиптерде колдонулган нерсе. Бул көрсөтмөдө мен сүрөттөгөн нерсе - бул прототип. Мен аны жакшы пластикалык корпустарда катылган жалтырак продуктка айландырбайм. Прототиптен кийинки баскычка өтүү - бул нан табакты басылган схемага жана ширетилген компоненттерге алмаштырууну, ал тургай Arduino -ны жөнөкөй микроконтроллер чипине алмаштырууну билдирет (чынында мындай чип Arduino мээси). Жана баарынын пластикалык корпуска же бузулган шам көпүрөнүн ичине туура келиши.

3 -кадам: Байланыштар

The Connections
The Connections
The Connections
The Connections
The Connections
The Connections
The Connections
The Connections

Бул барактан алынган Arduinos жөнүндө:

  • Киргизүү/чыгаруу пинге жалпы максималдуу ток: 40mA
  • Бардык киргизүү/чыгаруу казактарынын агымдарынын суммасы: 200мА

Менин шамдарымдын ар бири 19 мА тартат, 3 В менен иштесе, алардын жетөө бар, бул 133 мА түзөт. Ошентип, мен аларды түздөн -түз чыгаруу пиндеринен кубаттай алам. Бирок, менде запастагы дарлингтон транзисторлору бар. Мен ойлодум, эмнеге болбосун деп. Менин схемам бул нерсени туура жол менен кылат: маалымат төөнөгүчтөрү сигналдар үчүн гана, күч үчүн эмес. Анын ордуна мен LED чырактарын иштетүү үчүн Arduinoдогу 5 В пинди колдоном. Тест иштеп жатканда, ноутбугум Arduino менен туташып турат. Баары ноутбук USB аркылуу иштейт, ал 5 V. берет. Arduino Mega компьютери коргоо үчүн 500 мА соккон өздүк сактандыргычы бар. Менин шамдарым эң көп дегенде 133 мА тартат. Arduino, балким, алда канча аз. Ноутбук менен иштегенде баары жакшы иштейт, ошондуктан Arduino USB портуна туташкан 5 В батарейканы колдонуу жакшы.

D3 - D9 маалымат казыктары IC ULN2803APGCNге өтөт. Светодиоддор 3 В боюнча иштейт. Ар бир лампа 5 В булагына, андан ары 120 Ω каршылыкка туташат. Андан ары ICдин бир каналы, ал акыры ICдеги дарлингтон транзистору аркылуу жерге туташат.

Колдонуучунун кандайдыр бир аракетин иштетүү үчүн схемага баскыч кошулат. Шам көпүрөсү ушинтип бир нече колдонуучу тандоочу программаларга ээ болушу мүмкүн.

Райондогу баскыч баскычы RESET жана GND менен туташкан. Бул так калыбына келтирүү баскычын жасайт. Мен пластикалык корпуста баарын капсула кылбагандыктан, мен программаны көзөмөлдөө үчүн Arduinoдогу баштапкы абалга келтирүү баскычын колдонуп жатам. Сүрөткө ылайык баскычты кошуу тактанын абалга келтирүү баскычы сыяктуу иштейт. Программа акыркы жолу иштетилгенде кандай жарык программасы колдонулганын эстөө менен иштейт. Ошентип, ар бир абалга келтирүү кийинки жарык программасына өтөт.

Сүрөттөр жаңы кабелдер көпүрөдөн кантип чыкканын, транзисторду IC менен резисторлорду нан тактасына кантип койгондугумду жана секирүүчү зымдардын Arduino Mega менен кантип туташканын көрсөтөт. Мен 4 эркек-эркек секирүүчү зымдарды 8 жарым зымга кесип, аларды көпүрөдөн чыккан 8 кабелге коштум. Ошентип, мен кабелдерди нан тактасына жабыштыра алам.

Транзисторсуз альтернатива

Мурунку кадамда мен шамдар үчүн жалпы '+' зымын даярдадым жана транзистор IC аркылуу жерге өтүүчү '-' зымдарын бөлдүм. Бир маалымат төөнөгүч жогору болгондо, тиешелүү "-" зымы анын транзистору жана LED жарыктары аркылуу жерге туташтырылат.

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

4 -кадам: Жарык программалары

Кийинки кадамда көрсөткөн программам 9 жарык программадан өтөт. Баскычты басуу менен жарыктар бир секундага өчүп калат, андан кийин төмөнкү жарык программасы башталат. Программалар төмөнкүдөй:

  1. Күчтүү жаркылдоо. Шамдар туш келди жылтылдайт. Аларды алыстан тиктегенде бул абдан тажатма көрүнөт, бирок алыстан жакшы көрүнүшү мүмкүн жана аяздуу чердак терезенин артында. Бирок, сиздин кошунаңыз өрт өчүрүү кызматын чакырышы мүмкүн.
  2. Жумшак жылтылдоо. Абдан жакшы көрүнөт. Чиймеси жок бөлмөдө чыныгы шамдар сыяктуу.
  3. Түрдүү жаркылдоо. Шамдар болжол менен 30 сек аралыкта күчтүү жана жумшак жаркылдатуу менен алмашат.
  4. Түрдүү жаркылдоо. №3 сыяктуу, бирок ар бир шам өзүнүн ылдамдыгында 30дан 60 секка чейин өзгөрөт.
  5. Тез жымыңдоо. Шамдар статикалык күңүрт деңгээлде жаркырап, туш келди жаркылдайт. Орточо эсеп менен алганда ар бир секундда бир жарк этип турат.
  6. Акырын жаркыроо. #5 сыяктуу, бирок бир кыйла жайыраак ылдамдыкта.
  7. Ортоңку шамдан ылдыйга чейин тез толкун.
  8. Ортоңку шамдан астыңкы шамдарга жай толкун.
  9. Статикалык жарык. Мен муну киргизишим керек болчу, баштапкы функциядан арылгым келген жок.

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

/*

FLICKERING MANDLE BRIDGE */ // абалды кармап туруу үчүн режим өзгөрмөсүн жарыялоо //attribute _ ((бөлүм (". Noinit")))) кол коюлбаган int режими аркылуу; // Программа баштапкы абалга келтирилгенден кийин башталганда, бул эстутумдун // бөлүгү баштапкы абалга келтирилбейт, бирок анын баштапкы абалга келтирилгенге чейинки маанисин кармайт. // программасы биринчи жолу иштетилгенде, ал туш келди мааниге ээ болот. / * * Шам классы * жаркыраган шамдын жарык деңгээлин эсептөө үчүн керектүү нерселердин бардыгын камтыйт. */ класс шам {купуя: узак maxtime; узак убакыт; узун maxlite; узун минлит; узун орто; узак оригиналдуу убакыт; узак оригиналдуу убакыт; узун оргакмаклит; узун оригминлит; узун оригманлит; узак deltamaxtime; узак deltamintime; узун дельтамакслит; узун дельтаминлит; узун дельтаманлит; узун лфорат; узун тегиздик; узак баштоо; узак максаттуу; сүзүүчү фактор; узак мөөнөттүү; узак баштоо убактысы; узакка созулган убакыт; void newtarget (жараксыз); узак бир максаттуу (жараксыз); коомдук: шам (узун төшөк, узун мит, узун мал, узун мил, узун мел, узун эо); узун деңгээлдеги маалымат (жараксыз); жараксыз initlfo (узун дельтамат, узун дельтамит, узун дельтамал, узун дельтамил, узун дельтаман, узак чен); void setlfo (жараксыз); }; шам:: шам (узун төшөк, узун мит, узун мал, узун мил, узун мел, узун эо): maxtime (мат), mintime (mit), maxlite (mal), minlite (mil), meanlite (mel), evenout (eo), origmaxtime (мат), origmintime (mit), origmaxlite (mal), origminlite (mil), origmeanlite (mel) {target = meanlite; newtarget (); } / * * levelnow () шамдын азыр болушу керек болгон жарык деңгээлин кайтарат. * Функция жарыктын жаңы туш келди деңгээлин аныктоого кам көрөт жана * бул деңгээлге жетүү үчүн керек болгон убакытты алат. Өзгөрүү сызыктуу эмес, * бирок сигмоиддик ийри сызык боюнча жүрөт. Жаңы * деңгээлди аныктоого убакыт жетпегенде, функция жөн гана жарык деңгээлин кайтарат. */ long cand:: levelnow (void) {long help, now; сүзүү t1, t2; азыр = миллис (); if (now> = targettime) {help = target; newtarget (); жардам кайтаруу; } else {// help = target * (millis () - starttime) / deltatime + start * (targettime - millis ()) / deltatime; t1 = калкып чыгуу (максаттуу убакыт - азыр) / deltatime; t2 = 1. - t1; // Бул sigmoid эсептөө жардам = t1*t1*t1*баштоо + t1*t1*t2*баштоо*3 + t1*t2*t2*максат*3 + t2*t2*t2*максат; жардам кайтаруу; }} void cand:: newtarget (void) {long sum; сумма = 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) {эгер (кокус (ставка) максаттуу убактысы) кайтса, литлит; return (start - lowlite) * (targettime - азыр) / (targettime - starttime) + lowlite; } жараксыз жалтылдаган:: жымжырт (жараксыз) {баштоо убактысы = миллис (); максаттуу убакыт = туш келди (mintime, maxtime) + башталыш убактысы; баштоо = туш келди (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]; // жаркыраган шамдарды колдонууга даярдан, сиз аларды колдоносузбу же жымыңдабайсызбы *жымыңдап [7]; // жанып турган шамдарды колдонууга даярдануу… if (mode == 8) {for (int i = 3; i <10; i ++) analogWrite (i, 255); while (true); // Бул программа иштеген сайын, бул // чексиз циклге кирет, баштапкы абалга келтирүү // баскычы басылганга чейин. } if (mode <2) // flickering {long maxtime_; long mintime_; long maxlite_; long minlite_; long meanlite_; long even_; if (mode == 0) {maxtime_ = 250; mintime_ = 50; maxlite_ = 256; minlite_ = 0; Meanlite_ = 128; even_ = 1; } if (mode == 1) {maxtime_ = 400; mintime_ = 150; maxlite_ = 256; minlite_ = 100; Meanlite_ = 200; even_ = 1; } үчүн (int i = 0; i <7; i ++) {can = жаңы шам (maxtime_, mintime_, maxlite_, minlite_, meanlite_, even_); } while (true) // Шамдардын жаркырап турган чексиз цикли {for (int i = 0; i levelnow ()); }} if (mode <4) // lfo flickering {if (mode == 2) // lfo (30 s) бардык шамдар үчүн {үчүн (int i = 0; i initlfo (75, 50, 0) кошулду), 50, 36, 30000);}} if (mode == 3) // lfo: s шамдар үчүн {үчүн (int i = 0; i initlfo (75, 50, 0, 50, 36, 20000); болот [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); can [4]-> initlfo (75, 40, 0, 50, 36, 40000); can [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 (true) // 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, спидо); 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 = хилит - орточо; if (mode == 6) period = 1500; башка мезгил = 3500; фактор = 6.28318530718 / мезгил; while (true) {fase = phactor * (миллис () % мезгил); 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 % жарыктык менен жаркырашы мүмкүн. Бул техника LED жарыгын өчүрө турган нерсе. Бул ыкма импульстун туурасы модуляциясы же PWM деп аталат. Ардуино сыяктуу микроконтроллерде, адатта, сигналдарды күйгүзүү/өчүрүү үчүн жөнөтүүчү маалымат төөнөгүчтөрү болот. Кээ бир маалымат төөнөгүчтөрү PWM үчүн мүмкүнчүлүктөрдү курушкан. Бирок, эгерде PWMде орнотулган төөнөгүчтөр жетишсиз болсо, анда "программалык PWM казыктарын" түзүү үчүн атайын программалоо китепканаларын колдонсо болот.

Менин проектимде мен Arduino Mega2560 колдондум, ал 3 - 9 түйүндөрүндө PWM аппараттык жабдуулары бар. Эгерде сиз Arduino UNO колдонсоңуз, анда сизде PWMдин алты гана казыгы бар. Мындай учурда, эгер сизге 7 (же андан да көп) шам керек болсо, мен Бретт Хагмандын программалык камсыздоосун сунуштай алам, бул жерден таба аласыз.

Сунушталууда: