Съдържание:

HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels: 9 стъпки (със снимки)
HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels: 9 стъпки (със снимки)

Видео: HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels: 9 стъпки (със снимки)

Видео: HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels: 9 стъпки (със снимки)
Видео: DIY HALO Lamp Rev1.0 - Powered by Arduino Nano, 15+ Color Modes 2024, Ноември
Anonim
Image
Image
HALO: Удобна лампа Arduino Rev1.0 W/NeoPixels
HALO: Удобна лампа Arduino Rev1.0 W/NeoPixels
HALO: Удобна лампа Arduino Rev1.0 W/NeoPixels
HALO: Удобна лампа Arduino Rev1.0 W/NeoPixels

В тази инструкция ще ви покажа как да изградите HALO или Handy Arduino Lamp Rev1.0.

HALO е проста лампа, захранвана от Arduino Nano. Той има общ отпечатък от около 2 "на 3" и претеглена дървена основа за изключителна стабилност. Гъвкавият врат и 12 супер ярки NeoPixels му позволяват лесно да осветява всеки детайл на всяка повърхност. HALO разполага с два бутона за преминаване през различни светлинни режими, от които има 15 предварително програмирани. Поради използването на Arduino Nano като процесор, можете да го препрограмирате с допълнителни функции. Единичният потенциометър се използва за регулиране на яркостта и/или скоростта, с която се показва режим. Простата метална конструкция прави HALO много издръжлива лампа, подходяща за използване във всеки цех. Лесното използване се допълва от вградения регулатор на мощността на Nano, така че HALO може да се захранва чрез USB или стандартния 5 мм жак на гърба.

Надявам се в близко бъдеще да видя много хора, които да използват тези лампи, защото има толкова много възможности, които се отварят с този дизайн. Моля, оставете гласуване в конкурса за микроконтролер, ако това ви харесва или ви се струва полезно по някакъв начин, наистина бих го оценил.

Преди да влезем в тази инструкция, бих искал да кажа кратко Благодаря на всички мои последователи и на всеки, който някога е коментирал, давал предпочитания или гласувал някой от моите проекти. Благодарение на вас, моите инструктори от Cardboard станаха огромен успех и сега, като напиша това, достигайки близо 100 последователи, според мен е голям крайъгълен камък. Наистина оценявам цялата подкрепа, която получавам от вас, когато излагам Ible's и когато се стигне дотам, нямаше да съм там, където съм днес без вас. С това казано, благодаря на всички!

ЗАБЕЛЕЖКА: Навсякъде в тази инструкция са изрази удебелени. Това са важните части от всяка стъпка и не бива да се пренебрегват. Това не съм аз да крещя или умишлено да бъда груб, аз просто опитвам нова техника на писане, за да подчертая по -добре какво трябва да се направи. Ако не ви харесва и предпочитате как преди съм имал склонност да пиша стъпките си, уведомете ме в коментарите и ще се върна към стария си стил.

Стъпка 1: Събиране на материали

Събиране на материали
Събиране на материали
Събиране на материали
Събиране на материали
Събиране на материали
Събиране на материали
Събиране на материали
Събиране на материали

Колко пъти трябва да го кажа? Винаги имайте това, от което се нуждаете, и гарантирано ще можете да изградите нещо до финала.

Забележка: Някои от тях са партньорски връзки (маркирани с "al"), ще получа малък откат, ако купувате чрез тях, без допълнителни разходи за вас. Благодаря ви, ако купувате чрез връзките

Части:

1x Arduino Nano Nano - ал

1x 10k въртящ се потенциометър 5 пакета 10k потенциометри - ал

1x 5мм варел (моят се рециклира от пържен Arduino Uno) Женски варел (5 опаковки) - ал

2x 2-пинови моментни бутони 10 пакета SPST бутон за превключване-ал

12x NeoPixels от 60 LED/метър нишка (всеки еквивалент, например WS2812B, ще работи) Adafruit NeoPixels

Лист от 0,5 мм алуминий

Гъвкавият врат от стара запалка

Горният капак на пръстена от светодиодна лампа "Stick and Click" LED Cabinet Light - ал

Малък лист от шперплат от 1/4 инча

Тежко, плоско метално тегло с размери (приблизително) 1,5 "на 2,5" на 0,25"

Електрически проводник с многожилен проводник

Инструменти:

Пистолет за горещо лепило и лепило

Поялник и спойка

Акумулаторна електрическа бормашина и разнообразни малки завъртания

Нож X-acto (или помощен нож)

Машини за сваляне на тел

Клещи

Резачки/щипки за тел

Ножици за тежък режим на работа

Ако нямате плоско метално тегло, вие също се нуждаете от:

1 ролка евтин спойка (не материалът, който ще използвате за запояване) Евтин спойка без олово

Алкохолна свещ (или горелка на Бунзен)

Малка, закалена стоманена чиния, която нямате нищо против да съсипете (или малък тигел, ако имате такъв)

Триножник за споменатото блюдо/тигел (моят направих от стоманена тел от 12 габарита)

Глинен съд за растения (едно от онези неща, които минават под саксията)

Малко алуминиево фолио

ЗАБЕЛЕЖКА: Ако имате комплект за заваряване или 3D принтер, може да не се нуждаете от всички посочени тук инструменти.

Стъпка 2: Определяне на теглото

Осъществяване на теглото
Осъществяване на теглото
Осъществяване на теглото
Осъществяване на теглото
Осъществяване на теглото
Осъществяване на теглото

Това е доста трудна стъпка и трябва да бъдете изключително внимателни. Ако имате тежък метален товар или плосък неодимов магнит около 2,75 "на 1,75" на 0,25 ", бих препоръчал да го използвате вместо това (и магнитът дори би ви позволил да поставите лампата странично върху метални повърхности!).

Отказ от отговорност: Не нося отговорност за наранявания от ваша страна, така че, моля, използвайте здравия разум

Също така направете това навън върху бетонна повърхност, която няма да имате нищо против, ако се изгори малко (това е само предпазна мярка). Нямам снимки за този процес, защото камерата би била допълнително разсейване, от което не се нуждаех и не исках.

Първо, направете малка форма от алуминиево фолио или мокра глина, около 2 3/4 инча на 1 3/4 инча на 1/4 инча във вътрешните размери. Тя може да бъде с яйцевидна форма като моята или с правоъгълник. Използвайте няколко слоя фолио или дебели слоеве глина.

Поставете формата в керамичната чиния и напълнете формата и тавата със студена вода.

Вземете незапалената си алкохолна свещ/горелка за бунзени и поставете стоманения съд/тигел върху триножника, така че пламъкът да загрява центъра на съда (когато свети). Преди да запалите горелката, уверете се, че имате под ръка поне 1 чифт клещи или клещи за металообработка, ако не 2.

Добра идея е да носите кожени ръкавици, дълги ръкави, дълги панталони, затворени обувки и защита на очите, докато правите следващите няколко стъпки

Навийте и отчупете куп евтина спойка от макарата и я поставете в стоманения съд, след което запалете горелката. Изчакайте, докато бобината се стопи напълно, след това започнете да подавате останалата част от спойката в чинията с умерени темпове. Ако в спойката има колофон, това може спонтанно да се изгори в топлината, причинявайки бледожълт пламък и черен дим. Не се притеснявайте, това ми се е случвало няколко пъти и е напълно нормално.

Продължете да подавате спойката в съда, докато последната се разтопи.

Оставете всички пламъци от изгарянето на колофон да угаснат напълно и използвайте клещите/щипците, за да хванете съда и внимателно да завъртите разтопения метал вътре, като внимателно го държите в пламъка.

След като сте сигурни, че цялата спойка е напълно втечнена и при добра гореща температура, бързо и внимателно я извадете от пламъка и я изсипете във формата. Ще се чуе силно съскане и пара, тъй като част от водата се изпарява, а останалата част се изтласква от матрицата, за да бъде заменена с разтопен спойка.

Оставете спойката да се охлади, изключете горелката/издухайте свещта си и поставете стоманения съд на безопасно място за охлаждане. Може да искате да излеете студена вода върху охлаждащата спойка, за да ускорите охлаждането и да го втвърдите допълнително. (Студената вода кара външната част да се охлади по -бързо от вътрешната, създавайки вътрешно напрежение, което прави метала по -твърд и по -твърд, подобно на капката на принц Рупърт.) Можете също така да пуснете вода върху металната си чиния, но това ще доведе до това, че тя ще стане крехка, особено ако се прави няколко пъти.

След като спойката се охлади напълно (около 20 минути, за да бъде безопасна), извадете я от формата за фолио.

Моята се оказа по -дебела от едната страна от другата, затова използвах чук, за да я изравня и да изравня ръбовете (в резултат на формата, която виждате на снимките). След това леко го шлайфах под течаща вода, за да го полирам, и го оставих настрана за по -късно.

Стъпка 3: Изграждане на корпус за електроника, Стъпка 1

Изграждане на корпус за електроника, Стъпка 1
Изграждане на корпус за електроника, Стъпка 1
Изграждане на корпус за електроника, Стъпка 1
Изграждане на корпус за електроника, Стъпка 1
Изграждане на корпус за електроника, Стъпка 1
Изграждане на корпус за електроника, Стъпка 1
Изграждане на корпус за електроника, Стъпка 1
Изграждане на корпус за електроника, Стъпка 1

Това са частите за черупката, в които ще се помещава Nano, ще се монтира интерфейсът и е основно това, което държи лампата HALO заедно. Направих моята с моя 0,5 мм алуминий и горещо лепило, но ако имате 3D принтер (нещо, което се опитвах да си купя за магазина от известно време), направих. STL версия в Tinkercad, която прикачих тук, за да ви Изтегли. Тъй като самият аз нямам принтер, не успях да тествам модела за отпечатване, за да видя дали всичко се отпечатва правилно, но мисля, че би трябвало да е добре, ако добавите правилните структури за поддръжка във вашия резач. Можете също да копирате и редактирате изходния файл тук, ако имате нужда или искате малко по -различен дизайн или естетика.

Размерите всъщност бяха получени от теглото на метала, който си хвърлих от спойка, а не от размера на електрониката, но така или иначе се оказа доста добре и размерите са доста оптимални.

Снимките изобразяват малко по -различен ред на работа от това, което ще напиша тук, това е така, защото съм разработил подобрен метод въз основа на резултатите от моя оригинален метод.

Ако сглобявате от ламарина като мен, ето какво трябва да направите:

Стъпка 1: Лицеви пластини

Изрежете две еднакви полукръгли форми с височина около 1,5 "и ширина 3". (Аз съм моят от ръка, така че те приличат малко на предната част на кутия за джук).

В една от двете плочи пробийте трите отвора за бутоните и потенциометъра. Моите бяха с диаметър 1/4 инча. Те могат да бъдат във всяко оформление, но предпочитам потенциометърът ми да е леко повдигнат в центъра, като бутоните от двете страни образуват равнобедрен триъгълник. Когато пробивам, винаги правя малка пилотна дупка, преди да отида до бита с необходимия размер, това помага да се центрират дупките и ги прави малко по -чисти.

Стъпка 2: Извит капак

Наведете се върху парче алуминий, за да се побере около извивката на една от лицевите плочи, и маркирайте правилната дължина на ръба.

Изрежете лента с такава дължина и широчина около 2 инча и я оформете в дъга, която съответства на формата на извивката на лицевите плочи от двете страни.

Намерете централната точка в горната част на кривата и пробийте дупка, за да пасне на гъвкавата шийка на запалката. Отмених дупката към задната част на моята, защото лампата ми най -вече ще наклони гърлото напред, докато се използва, затова исках да добавя малко противовес към това. Моята гъвкава шия беше малко над 1/4 от инча в диаметър, така че използвах бит от 1/4 инча (най -големия усукващ бит, който притежавам, който е под 3/4 от инча) и просто внимателно наклони и усука пробийте, за да „пробиете“дупката, докато шията прилегне.

След като имаме частите за черупката, следващата стъпка е да добавим електроника и да я съберем!

Стъпка 4: Изграждане на корпус за електроника, Стъпка 2

Изграждане на корпус за електроника, Стъпка 2
Изграждане на корпус за електроника, Стъпка 2
Изграждане на корпус за електроника, Стъпка 2
Изграждане на корпус за електроника, Стъпка 2
Изграждане на корпус за електроника, Стъпка 2
Изграждане на корпус за електроника, Стъпка 2
Изграждане на корпус за електроника, Стъпка 2
Изграждане на корпус за електроника, Стъпка 2

Сега добавяме бутоните и потенциометъра и ги събираме заедно.

Стъпка 1: Бутони и болтове

Развийте шестостенните гайки от бутоните и потенциометъра. Под гайката трябва да има захващащо пръстенно устройство, оставете го на място.

Прокарайте всеки от компонентите през съответния отвор, след това завийте гайките отново, за да ги фиксирате на място. Затегнете гайките до точката, в която сте сигурни, че всеки компонент е напълно сигурен.

Стъпка 2. Гъвкав врат

Плъзнете гъвкавия врат през отвора в горната част на извитото парче. Горещо лепило или заварете (ако имате оборудването) гърлото здраво на място.

Ако използвате горещо лепило като мен, добра идея е да го залепите с много лепило от двете страни, разпределени върху голяма площ, за да предотвратите отлепването на лепилото по -късно.

Стъпка 3: Сглобяване на корпуса (Не се отнася за 3D отпечатана обвивка)

Използвайки заваръчен прът или горещо лепило, закрепете предната и задната лицева плоча на съответните им места на дъгообразния капак. Трябваха ми няколко опита лепилото ми да залепне и както преди, трикът е да използвам много лепило от двете страни на фугата, точно като шията. Колкото по -голяма е площта, покрита с лепилото, толкова по -добре ще се залепи.

Сега, когато имаме черупката, можем да продължим да добавяме всички битове на веригата.

Стъпка 5: Добавяне на електроника

Добавяне на електроника
Добавяне на електроника
Добавяне на електроника
Добавяне на електроника
Добавяне на електроника
Добавяне на електроника

И тук е забавната част: Запояване! През последните седмици честно казано се уморих малко от запояване, защото го правя толкова много напоследък, за да се опитам да завърша друг проект, който трябва да пусна скоро (внимавайте за радикализирана нова версия на моя роботизиран дисплей платформи).

Забележка: Ако вашият Nano вече има заглавки за щифтове, бих препоръчал да ги разпаявате за този проект, те само ще попречат.

На снимките по -горе има диаграма, която можете да следвате, ако желаете.

Стъпка 1: Интерфейс

От всеки от превключвателите запоявайте проводник от един щифт към страничен щифт на потенциометъра. Запоявайте проводник от същия страничен щифт към заземен щифт на Nano.

Запоявайте проводник от централния щифт на потенциометъра към A0 на Nano.

Запоявайте проводник от несвързания щифт на двата превключвателя към A1 на Nano.

Запояйте проводник от несвързания щифт на другия превключвател към A2 на Nano.

Забележка: Няма значение кой превключвател е кой, можете да ги промените много лесно в кода, освен факта, че един превключвател просто прави обратното на другото.

Изрежете дължина тел с 4 инча по -дълга от гъвкавата шийка и отстранете двете страни. Използвайки Sharpie, маркирайте едната страна с един ред.

Запоявайте проводник към последния несвързан страничен щифт на потенциометъра, завъртете несвързания край на този проводник заедно с немаркирания край на проводника от последната стъпка.

Запоявайте този съединен край към 5V на Nano.

Стъпка 2: Дисплей и захранващи проводници

Изрежете 2 дължини тел с 4 инча по -дълги от гъвкавата шийка и отстранете двата края.

С помощта на Sharpie маркирайте краищата на всеки проводник, един проводник с 2 линии и един с 3.

Запоявайте проводника с 2 линии към цифров щифт 9 на Nano.

На вашия 5 -милиметров жак, запойте проводник от централния щифт (положителен) към Vin на Nano.

Запояйте друг проводник към страничен щифт (заземен/отрицателен) на крика на цевта.

Завъртете дългия проводник с 3 линии заедно с жицата от страничния щифт на крика на цевта.

Запоявайте тези проводници към отворения щифт GND на Nano.

Изолирайте връзките с електрическа лента или горещо лепило, където е необходимо.

Стъпка 3: Изрязване на дупки (само в металната версия, ако сте отпечатали 3D корицата, трябва да сте добре)

С помощта на свредло и X-acto или помощен нож внимателно направете отвор отстрани на капака за USB порта на Nano.

Направете още един отвор с размерите на лицевата страна на жака на гърба на капака, за предпочитане по -близо до страната, противоположна на отвора за USB порта.

Стъпка 4: Монтиране на компоненти

Прокарайте трите дълги проводника през гъвкавото гърло и навън от другата страна.

Използвайки много горещо лепило, монтирайте крика на цевта на място с щифтовете към горната част на капака.

Отново с помощта на много горещо лепило, монтирайте Nano на място, с бутона за нулиране надолу и USB порта в слота. Направих „мост с горещо лепило“между крика на цевта и Nano, което кара всеки да държи другия здраво на място.

Сега можем да продължим да правим претеглената база!

Стъпка 6: Претеглена основа

Претеглена основа
Претеглена основа
Претеглена основа
Претеглена основа
Претеглена основа
Претеглена основа

Убеден съм в уменията си за запояване и бях планирал това добре, затова продължих и добавих базата, преди да тествам кода. Ако не сте уверени в уменията си, бих предложил да пропуснете тази стъпка и да се върнете към нея в края, когато знаете, че всичко работи.

Ако сте направили 3D печатната версия, можете да пропуснете първата стъпка и да преминете към втората.

Стъпка 1: Дърво

От лист шперплат от 1/4 инча изрежете основа около 3 инча на 2 инча.

Шлайфайте ръбовете, за да ги изгладите и премахнете борите.

Стъпка 2: Тегло

Първо, уверете се, че вашето тегло е по избор, независимо дали магнит, метал или спойка по поръчка, се вписват в краищата на металния капак, който направихме. Моят беше малко голям в една посока, затова се обръснах малко отстрани с нож X-acto. Ако вашият не е от типа, където можете да направите това, може да се наложи да се поразровите с различен основен дизайн.

Горещо залепете теглото си в центъра на парчето шперплат, или в случая с 3D отпечатания дизайн, в централната зона "тава", която проектирах за тази цел.

Стъпка 3: Основа

Поставете металния капак върху тежестта и го центрирайте върху дървената основа. (В случай на 3D отпечатан дизайн, поставете го в предварително направените канали.)

Уверете се, че теглото не пречи на електрониката

Използвайте горещо лепило, за да фиксирате основата на място. Използвайте достатъчно, за да осигурите стабилна връзка.

Сега, когато нашата контролна кутия е изцяло направена, нека преминем към светлините.

Стъпка 7: NeoPixel Halo Ring

NeoPixel Halo пръстен
NeoPixel Halo пръстен
NeoPixel Halo пръстен
NeoPixel Halo пръстен
NeoPixel Halo пръстен
NeoPixel Halo пръстен
NeoPixel Halo пръстен
NeoPixel Halo пръстен

Вдъхновението за името на тази лампа, тази част е хало пръстенът NeoPixel, който ще използваме като наш източник на осветление. Това конкретно парче може да бъде модифицирано или заменено с всеки NeoPixel или индивидуално адресируем LED пръстен, ако желаете.

Стъпка 1: Запояване

Изрежете лента от NeoPixels с дължина 12 светодиода.

Запоявайте щифта GND към проводника от гъвкавата шийка, която има 3 линии.

Запоявайте щифта Din към проводника, който има 2 линии.

Запоявайте 5V щифта към проводника, който има 1 линия.

Стъпка 2: Тествайте светлините

Изтеглете и инсталирайте библиотеката Adafruit_NeoPixel и отворете "strandtest" кода.

Променете постоянния ПИН на 9.

Променете линията, където лентата е дефинирана, така че да бъде конфигурирана за 12 светодиода.

Качете кода в Nano и се уверете, че всички ваши светодиоди функционират правилно.

Сменете всички дефектни светодиоди с работещи, докато цялата лента заработи.

Стъпка 3: Звънете

Вземете горния пръстен от лампа "Stick and Click" и отрежете всички винтови стойки на вътрешната джанта.

Изрежете малка прореза на ръба за проводниците от лентата.

Отлепете капака на залепващата лента на гърба на NeoPixels (ако има такъв) и ги залепете вътре в пръстена, като двата края на лентата са точно около прореза, който направихме.

Използвайте горещо лепило, за да закрепите здраво ръбовете на лентата

След като лепилото се охлади напълно, тествайте пикселите отново. Това е, за да се уверите, че никой не е придирчив по отношение на топлината и къдренето (няколко мои бяха).

Стъпка 4: Монтирайте

Изрежете два малки правоъгълника от 1/4 инчово дърво, около височината на пръстена и 1 2/3 пъти по -широко.

Залепете ги успоредно един от друг от двете страни на проводниците от пръстена, запълвайки празнината и покривайки жиците между тях изцяло с лепило.

Внимателно избутайте всяка излишна дължина на телта обратно в гъвкавата шийка и след това залепете дървените парчета в края на шията, като използвате много лепило и внимателно запълните всички празнини (без да запълвате шията с лепило).

Стъпка 6: Завършване

Можете да нарисувате пръстена и да монтирате всеки цвят, ако желаете, предпочитах сребърното покритие, така че използвах само Sharpie, за да прикрия логото, което (досадно) е отпечатано върху пръстена. Същото важи и за останалата част от лампата.

Сега можем да продължим, за да завършим с окончателния код!

Стъпка 8: Кодове и тестове

Кодове и тестове
Кодове и тестове
Кодове и тестове
Кодове и тестове

Така че сега всичко, което трябва да направим, е да програмираме лампата и да я тестваме. Приложена е текущата версия на кода (rev1.0), тествах този код доста обширно и работи много добре. Работя върху rev2.0, където бутоните са конфигурирани като външни прекъсвания, така че режимите могат да се превключват по -лесно, но тази версия е бъги и все още не е готова за пускане. С текущата версия трябва да задържите бутона, докато той стартира цикъла Debounce и разпознае промяната на състоянието, което може да бъде досадно при по -дългите "динамични" цикли. По -долу е кодът с някои обяснения, написани на (има същите обяснения във версията за изтегляне).

#include #ifdef _AVR_ #include #endif

#дефинирайте ПИН 9

#дефинирайте POT A0 #define BUTTON1 A1 #define BUTTON2 A2

// Параметър 1 = брой пиксели в лентата

// Параметър 2 = ПИН номер на Arduino (повечето са валидни) // Параметър 3 = флагове тип пиксел, добавете заедно, ако е необходимо: // NEO_KHZ800 800 KHz битов поток (повечето NeoPixel продукти с WS2812 светодиоди) // NEO_KHZ400 400 KHz (класически ' v1 '(не v2) FLORA пиксели, драйвери WS2811) // NEO_GRB Пикселите са свързани за GRB битстрийм (повечето продукти NeoPixel) // NEO_RGB Пикселите са свързани за RGB битови потоци (v1 FLORA пиксели, а не v2) // NEO_RGBW Пикселите са свързани за RGBW битов поток (NeoPixel RGBW продукти) Adafruit_NeoPixel halo = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800);

// И сега, съобщение за безопасност от нашите приятели в Adafruit:

// ВАЖНО: За да намалите риска от изгаряне на NeoPixel, добавете 1000 uF кондензатор

// захранващи проводници на пиксели, добавете 300 - 500 ома резистор към входа за данни на първия пиксел // и минимизирайте разстоянието между Arduino и първия пиксел. Избягвайте свързването // на верига под напрежение … ако трябва, свържете първо GND.

// Променливи

int buttonState1; int buttonState2; // текущото отчитане от входния щифт int lastButtonState1 = LOW; // предишното отчитане от входния щифт int lastButtonState2 = LOW; int режим; // режимът на нашите светлини, може да бъде една от 16 настройки (0 до 15) int brightVal = 0; // яркостта/ скоростта, зададена от потенциометъра

// следните променливи са дълги, защото времето, измерено в милисекунди, // бързо ще стане по -голямо число, отколкото може да се съхранява в int. long lastDebounceTime = 0; // последният път, когато изходният щифт е бил превключен long debounceDelay = 50; // времето за деблокиране; увеличете, ако изходът трепти

void debounce () {

// чете състоянието на превключвателя в локална променлива: int reading1 = digitalRead (BUTTON1); int read2 = digitalRead (BUTTON2); // Ако някой от бутоните се промени, поради шум или натискане: if (reading1! = LastButtonState1 || reading2! = LastButtonState2) {// нулиране на таймера за отстраняване lastDebounceTime = millis (); } if ((millis () - lastDebounceTime)> debounceDelay) {// ако състоянието на бутона определено се е променило поради натискане/освобождаване: if (четене1! = buttonState1) {buttonState1 = четене1; // задаваме го като четене, ако е променен, ако (buttonState1 == LOW) {// те са зададени като активен режим на ниски превключватели ++; if (mode == 16) {mode = 0; }}} ако (четене2! = buttonState2) {buttonState2 = четене2; if (buttonState2 == LOW) {mode = mode - 1; if (mode == -1) {mode = 15; }}}} // запазваме показанията за следващия път през цикъла lastButtonState1 = четене1; lastButtonState2 = четене2; }

void getBright () {// нашият код за четене на потенциометъра, извежда стойност между 0 и 255. Използва се за задаване на яркост в някои режими и скорост в други.

int potVal = analogRead (POT); brightVal = карта (potVal, 0, 1023, 0, 255); }

// Ето нашите цветови режими. Някои от тях са получени от най -простия пример, други са оригинални.

// Попълнете точките една след друга с цвят (colorwipe, получено от strandtest)

void colorWipe (uint32_t c, uint8_t чакане) {for (uint16_t i = 0; i

// функции на дъгата (също получени от strandtest)

void rainbow (uint8_t wait) {

uint16_t i, j;

за (j = 0; j <256; j ++) {за (i = 0; i

// Малко по -различно, това прави дъгата равномерно разпределена навсякъде

void rainbowCycle (uint8_t чакане) {uint16_t i, j;

за (j = 0; j <256*5; j ++) {// 5 цикъла на всички цветове на колелото за (i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, Wheel (((i * 256 / halo.numPixels ()) + j) & 255)); } halo.show (); забавяне (изчакване); }}

// Въведете стойност от 0 до 255, за да получите стойност на цвета.

// Цветовете са преход r - g - b - обратно към r. uint32_t Wheel (байт WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {return halo. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; връщане halo. Color (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; връщане halo. Color (WheelPos * 3, 255 - WheelPos * 3, 0); }

void setup () {

// Това е за Trinket 5V 16MHz, можете да премахнете тези три реда, ако не използвате Trinket #if дефиниран (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // Край на дрънкулка специален код pinMode (POT, INPUT); pinMode (BUTTON1, INPUT_PULLUP); pinMode (BUTTON2, INPUT_PULLUP); pinMode (PIN, OUTPUT); Serial.begin (9600); // отстраняване на грешки halo.begin (); halo.show (); // Инициализиране на всички пиксели на „изключено“}

void loop () {

debounce ();

//Serial.println(mode); // още отстраняване на грешки //Serial.println(lastButtonState1); //Serial.println(lastButtonState2);

ако (режим == 0) {

getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, brightVal, brightVal)); // задаваме всички пиксели на бяло} halo.show (); }; if (mode == 1) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, 0, 0)); // задаваме всички пиксели на червено} halo.show (); }; if (mode == 2) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, brightVal, 0)); // задаваме всички пиксели на зелено} halo.show (); }; if (mode == 3) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, 0, brightVal)); // задаваме всички пиксели в синьо} halo.show (); }; if (mode == 4) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, brightVal, brightVal)); // задаваме всички пиксели на циан} halo.show (); }; if (mode == 5) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, 0, brightVal)); // задаваме всички пиксели на лилаво/магента} halo.show (); }; if (mode == 6) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, brightVal, 0)); // задаваме всички пиксели на оранжево/жълто} halo.show (); }; if (mode == 7) {// сега динамичните режими getBright (); colorWipe (halo. Color (brightVal, 0, 0), 50); // Червен }; if (mode == 8) {getBright (); colorWipe (halo. Color (0, brightVal, 0), 50); // Зелено}; if (mode == 9) {getBright (); colorWipe (halo. Color (0, 0, brightVal), 50); // Син }; if (mode == 10) {getBright (); colorWipe (halo. Color (brightVal, brightVal, brightVal), 50); // бял}; if (mode == 11) {getBright (); colorWipe (halo. Color (brightVal, brightVal, 0), 50); // оранжево/жълто}; if (mode == 12) {getBright (); colorWipe (halo. Color (0, brightVal, brightVal), 50); // циан }; if (mode == 13) {getBright (); colorWipe (halo. Color (brightVal, 0, brightVal), 50); // лилаво/магента}; if (mode == 14) {// последните две са контрол на скоростта, тъй като яркостта е динамична getBright (); дъга (brightVal); }; if (mode == 15) {getBright (); rainbowCycle (brightVal); }; забавяне (10); // оставяме на процесора малко почивка}

Стъпка 9: Големият финал

Големият финал
Големият финал

И сега имаме фантастична, супер ярка малка лампа!

Можете да го промените допълнително от тук или да го оставите такъв, какъвто е. Можете да промените кода или дори да напишете изцяло нов. Можете да увеличите основата и да добавите батерии. Можете да добавите фен. Можете да добавите още NeoPixels. Списъкът с всичко, което бихте могли да направите с това, е почти безкраен. Казвам "почти", защото съм почти сигурен, че все още нямаме технология да преобразуваме това в генератор на мини портали (за съжаление), но освен такива неща, единственото ограничение е вашето въображение (и до известна степен, както открих наскоро, инструментите във вашата работилница). Но ако нямате инструменти, не позволявайте това да ви спре, ако наистина искате да направите нещо, винаги има начин.

Това е част от смисъла на този проект, за да докажа на себе си (и в по -малка степен на света), че мога да направя полезни неща, които биха харесали и други хора, дори ако всичко, което имам, е истинска купчина боклуци от стари и бракувани компоненти и контейнер за доставки на Arduino.

Ще спра дотук, защото мисля, че този се получи доста добре. Ако имате предложение за подобрение или въпрос относно моите методи, моля, оставете коментар по -долу. Ако сте направили това, направете снимка, всички искаме да я видим!

Моля, не забравяйте да гласувате, ако ви харесва това!

Както винаги, това са проектите на Dangerously Explosive, неговата мисия през целия живот, „Да изградиш смело това, което искаш да построиш, и още!“

Можете да намерите останалите ми проекти тук.

Благодаря за четенето и щастливо създаване!

Препоръчано: