Съдържание:

Дистанционно управлявани LED очи и качулка: 7 стъпки (със снимки)
Дистанционно управлявани LED очи и качулка: 7 стъпки (със снимки)

Видео: Дистанционно управлявани LED очи и качулка: 7 стъпки (със снимки)

Видео: Дистанционно управлявани LED очи и качулка: 7 стъпки (със снимки)
Видео: Детето ми се храни само със зеленчуци 2024, Ноември
Anonim

От bekathwiaBecky Stern Следвайте още от автора:

Приятел за поверителност на уеб камерата
Приятел за поверителност на уеб камерата
Приятел за поверителност на уеб камерата
Приятел за поверителност на уеб камерата
Мерна лента Yagi Антена с 3D отпечатани съединители
Мерна лента Yagi Антена с 3D отпечатани съединители
Мерна лента Yagi Антена с 3D отпечатани съединители
Мерна лента Yagi Антена с 3D отпечатани съединители
Зодиакална бродерия
Зодиакална бродерия
Зодиакална бродерия
Зодиакална бродерия

За: Създаването и споделянето са двете ми най -големи страсти! Общо съм публикувал стотици уроци за всичко - от микроконтролери до плетене. Аз съм мотоциклетистка от Ню Йорк и неразкайваща се кучешка майка. Моето уо … Повече за bekathwia »

Двойни Джави! Двойно Орко! Двама призрачни магьосници от Bubble-Bobble! Тази качулка за костюми може да бъде всяко създание със светодиодни очи, което изберете, само като смените цветовете. За първи път направих този проект през 2015 г. с много проста схема и код, но тази година исках да създам подобрена версия с едновременно управление на анимацията в два костюма. Тази схема използва едно просто радиочестотно дистанционно управление от близко разстояние за управление на два приемника на една и съща честота и код на Arduino, използващ прекъсвания за постигане на отзивчиви промени в анимацията, въз основа на учебния код на Бил Ърл.

За този проект ще ви трябва:

  • Две бижута NeoPixel
  • GEMMA M0 микроконтролер
  • 315MHz безжичен приемник, тип заключване
  • 315MHz безжично RF дистанционно в конфигурация с четири, два или един бутон
  • Многожилен проводник със силиконово покритие (препоръчително 30 awg)
  • Поялник и спойка
  • Машини за сваляне на тел
  • Фрези за промиване
  • Пинсети
  • Помагащ инструмент от трета ръка (по избор)
  • Шиене на щифтове
  • Шивашка креда (по избор)
  • 19awg поцинкована стоманена тел
  • Дебел плат за качулка/пелерина (за тази версия използвах два слоя бяла тютюнева кърпа и един слой бяла тензух, след което облицовах вътрешната страна на качулката с плътно черно, за да блокирам светлината)
  • Прозрачна черна материя за панел за лице
  • Шевна машина
  • Ножици
  • Игла и конец
  • 3D принтер с гъвкава нишка (по избор)

За да сте в крак с това, върху което работя, следвайте ме в YouTube, Instagram, Twitter, Pinterest и се абонирайте за моя бюлетин. Като партньор на Amazon печеля от квалифицирани покупки, които правите с помощта на моите партньорски връзки.

Преди да започнете, може да искате да прочетете следните предпоставки:

  • Представяме ви Gemma M0
  • NeoPixel Uberguide
  • Първа версия на проекта за качулка (построена през 2015 г. с класическа Gemma и без безжично управление)
  • Многозадачност на Arduino pt 3

Стъпка 1: Схема и код

Електрическа схема и код
Електрическа схема и код

Свързването на веригата е както следва:

  • Gemma D2 към безжичен приемник D0
  • Gemma D0 към безжичен приемник D1
  • Gemma 3V към безжичен приемник +5V
  • Gemma GND към безжичен приемник GND и NeoPixel бижута GND
  • Gemma D1 към данни за бижута NeoPixel IN
  • Gemma Vout към NeoPixel бижута PWR
  • Данни за NeoPixel Jewel OUT към други данни за NeoPixel Jewel IN

Вижте следващата стъпка за бележки за сглобяване.

Кодът се основава на многозадачна скица на Arduino от Бил Ърл и е модифицирана, за да контролира две бижута NeoPixel с два цифрови входа. Така че не е нужно да използвате безжичния приемник- вместо това можете да използвате бутони на самата верига. Изтеглете този код на Arduino от прикачените файлове на тази стъпка или копирайте и поставете от тук в празна скица на Arduino:

#include "Adafruit_NeoPixel.h"

// Поддържани типове модели: модел на изброяване {NONE, RAINBOW_CYCLE, THEATER_CHASE, COLOR_WIPE, SCANNER, FADE}; // Поддържани посоки на шаблона: посока на изброяване {FORWARD, REVERSE}; // NeoPattern Class - извлечен от класа Adapruit_NeoPixel клас NeoPatterns: публичен Adafruit_NeoPixel {public: // Членски променливи: модел ActivePattern; // кой модел е посока на движение посока; // посока за изпълнение на шаблона unsigned long Interval; // милисекунди между актуализации unsigned long lastUpdate; // последна актуализация на позиция uint32_t Color1, Color2; // Какви цветове се използват uint16_t TotalSteps; // общ брой стъпки в шаблона uint16_t Index; // текуща стъпка в шаблона void (*OnComplete) (); // Обратно извикване при завършване на шаблона // Конструктор - извиква конструктора на базовия клас за инициализиране на ленти NeoPatterns (uint16_t пиксели, uint8_t щифт, тип uint8_t, void (*обратно повикване) ()): Adafruit_NeoPixel (пиксели, щифт, тип) {OnComplete = обратно повикване; } // Актуализиране на шаблона void Update () {if ((millis () - lastUpdate)> Интервал) // време за актуализиране {lastUpdate = millis (); ключ (ActivePattern) {случай RAINBOW_CYCLE: RainbowCycleUpdate (); прекъсване; случай THEATER_CHASE: TheaterChaseUpdate (); прекъсване; случай COLOR_WIPE: ColorWipeUpdate (); прекъсване; случай SCANNER: ScannerUpdate (); прекъсване; случай FADE: FadeUpdate (); прекъсване; по подразбиране: break; }}} // Увеличете индекса и нулирайте в края void Increment () {if (Direction == FORWARD) {Index ++; if (Index> = TotalSteps) {Index = 0; if (OnComplete! = NULL) {OnComplete (); // извикваме обратното извикване на комплицията}}} else // Посока == ОБРАТНО {--Индекс; if (Index <= 0) {Index = TotalSteps-1; if (OnComplete! = NULL) {OnComplete (); // извикване на обратното извикване на комплицията}}}} // Обратна посока на шаблона void Reverse () {if (Direction == FORWARD) {Direction = REVERSE; Индекс = TotalSteps-1; } else {Посока = НАПРЕД; Индекс = 0; }} // Инициализиране за RainbowCycle void RainbowCycle (uint8_t интервал, посока dir = НАПРЕД) {ActivePattern = RAINBOW_CYCLE; Интервал = интервал; TotalSteps = 255; Индекс = 0; Посока = реж. } // Актуализиране на Rainbow Cycle Pattern void RainbowCycleUpdate () {for (int i = 0; i <numPixels (); i ++) {setPixelColor (i, Wheel (((i * 256 / numPixels ())+Index) & 255)); } show (); Инкремент (); } // Инициализиране за театър Chase void TheaterChase (uint32_t color1, uint32_t color2, uint8_t интервал, посока dir = НАПРЕД) {ActivePattern = THEATER_CHASE; Интервал = интервал; TotalSteps = numPixels (); Цвят1 = цвят1; Цвят2 = цвят2; Индекс = 0; Посока = реж. } // Актуализиране на модела Theatre Chase void TheaterChaseUpdate () {for (int i = 0; i <numPixels (); i ++) {if ((i+Index) % 3 == 0) {setPixelColor (i, Color1); } else {setPixelColor (i, Color2); }} show (); Инкремент (); } // Инициализиране за ColorWipe void ColorWipe (uint32_t цвят, uint8_t интервал, посока dir = НАПРЕД) {ActivePattern = COLOR_WIPE; Интервал = интервал; TotalSteps = numPixels (); Цвят1 = цвят; Индекс = 0; Посока = реж. } // Актуализиране на шаблона за изтриване на цвят void ColorWipeUpdate () {setPixelColor (Index, Color1); show (); Инкремент (); } // Инициализиране за SCANNNER празен скенер (uint32_t color1, uint8_t интервал) {ActivePattern = SCANNER; Интервал = интервал; TotalSteps = (numPixels () - 1) * 2; Цвят1 = цвят1; Индекс = 0; } // Актуализиране на Scanner Pattern void ScannerUpdate () {for (int i = 0; i > 1, зелено (цвят) >> 1, синьо (цвят) >> 1); връщане dimColor; } // Задайте всички пиксели на цвят (синхронно) void ColorSet (uint32_t color) {for (int i = 0; i> 16) & 0xFF; } // Връща компонента Green на 32-битов цвят uint8_t Green (uint32_t color) {return (color >> 8) & 0xFF; } // Връща синия компонент на 32-битов цвят uint8_t Син (uint32_t цвят) {return color & 0xFF; } // Въведете стойност от 0 до 255, за да получите стойност на цвета. // Цветовете са преход r - g - b - обратно към r. uint32_t Wheel (байт WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {връщане на цвят (255 - WheelPos * 3, 0, WheelPos * 3); } else if (WheelPos <170) {WheelPos -= 85; връщане на цвят (0, WheelPos * 3, 255 - WheelPos * 3); } else {WheelPos -= 170; връщане на цвят (WheelPos * 3, 255 - WheelPos * 3, 0); }}}; void JewelsComplete (); // Определете някои NeoPatterns за двата пръстена и пръчката //, както и някои процедури за завършване NeoPatterns Jewels (14, 1, NEO_GRBW + NEO_KHZ800, & JewelsComplete); const int ЯРКОСТ = 50; // Инициализираме всичко и се подготвяме за стартиране на void setup () {Serial.begin (115200); pinMode (2, INPUT); pinMode (0, INPUT); // Инициализираме всички пиксели Jewels.setBrightness (BRIGHTNESS); Jewels.begin (); // Започваме модел Jewels. TheaterChase (Jewels. Color (255, 50, 0), Jewels. Color (0, 0, 0, 50), 100); } // Основен цикъл void loop () {// Актуализиране на бижутата. Jewels. Update (); // Превключване на шаблони при натискане на бутон: if (digitalRead (2) == HIGH) // Бутон #1 натиснат {Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = FADE; Jewels. TotalSteps = 100; Драгоценности. Интервал = 1; } else if (digitalRead (0) == HIGH) // Бутон #2 натиснат {Jewels. Color1 = Jewels. Color (255, 0, 0); Jewels. ActivePattern = СКАНЕР; Jewels. TotalSteps = Jewels.numPixels (); Бижута. Интервал = 100; } else // Връщане към нормална работа {// Възстановяване на всички параметри на шаблона до нормални стойности Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = THEATER_CHASE; Jewels. TotalSteps = Jewels.numPixels (); Бижута. Интервал = 100; }} // ---------------------------------------------- -------------- // Процедури за завършване-извикайте при завършване на модел // ---------------------- -------------------------------------- // Завършване на скъпоценности Обратно извикване невалидно JewelsComplete () {// Случайна промяна на цвета за следващо сканиране //Jewels. Color1 = Jewels. Wheel (произволно (255)); Драгоценности. Обратно (); }

Стъпка 2: Сглобете веригата

Сглобете веригата
Сглобете веригата
Сглобете веригата
Сглобете веригата

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

Използвайте тънки парчета жила с дължина (около 6in/15cmin дължина) за връзките между двете бижута NeoPixel (диаграма в предишната стъпка). Ако използвате прекалено къси проводници, няма да можете да поставите светодиодните си очи достатъчно далеч един от друг, а ако използвате прекалено много жица, хлабавото ще влезе в лицето ви, докато носите костюма.

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

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

Стъпка 3: Захранване на батерията

Захранване на батерията
Захранване на батерията
Захранване на батерията
Захранване на батерията

За захранване на веригата използвах липолидна батерия от 500mAh. Ако използвате липолийна батерия, е разумно да я предпазите от надраскване, пробиване, ожулване, огъване и други злоупотреби. Можете да го увиете в здрава лента от плат или да направите 3D отпечатан държач за него.

Вместо това лесно можете да използвате държач 3xAAA (носете го в джоба си, вместо в ревера).

Стъпка 4: Модел за шиене и тъкан за рязане

Модели за шиене и тъкани за рязане
Модели за шиене и тъкани за рязане

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

Сгънете тъканта си, подравнявайки ръбовете на ръбовете, за да подравните зърната на тъканта, и поставете/закрепете парчета модел по сгъването, както е отбелязано. Начертайте надбавка за шев извън парчетата на шаблона (с изключение на гънката) от около 5/8in/3cm, като използвате креда за маркиране или молив. Тъй като тъканта ми беше тънка, исках да я удвоя и тъй като направих две качулки, накрая нарязах четири от всяко парче шарка в основната тъкан, след това още един слой в тънка тензух, за да добавя текстура отвън и в крайна сметка слой от черен плат като подложка, която да блокира навлизащата светлина. Мисля, че ако бях планирал предварително това, можех да изпусна един от първоначалните бели слоеве и качулките щяха да се състоят само от три слоя всеки вместо четири.

Стъпка 5: Сглобете парчета плат

Сглобете парчета плат
Сглобете парчета плат
Сглобете парчета плат
Сглобете парчета плат
Сглобете парчета плат
Сглобете парчета плат
Сглобете парчета плат
Сглобете парчета плат

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

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

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

Стъпка 6: Инсталирайте верига в качулката

Инсталирайте верига в качулката
Инсталирайте верига в качулката

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

Изплакнете и повторете, ако правите втора качулка.

Стъпка 7: Носете го

Носи го!
Носи го!
Носи го!
Носи го!
Носи го!
Носи го!
Носи го!
Носи го!

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

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

Благодаря за четенето! Ако този проект ви харесва, може да се интересувате от някои от другите ми:

  • 13 идеи за дифузни светодиоди
  • Дифузен светодиоден знак с Arduino/Bluetooth
  • Брояч на абонати в YouTube с ESP8266
  • Лесно безкрайно огледало
  • 3 грешки в начинаещите Arduino

За да сте в крак с това, върху което работя, следвайте ме в YouTube, Instagram, Twitter и Pinterest.

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