Mundarija:

Masofadan boshqariladigan LED ko'zlar va kostyum qopqog'i: 7 qadam (rasmlar bilan)
Masofadan boshqariladigan LED ko'zlar va kostyum qopqog'i: 7 qadam (rasmlar bilan)

Video: Masofadan boshqariladigan LED ko'zlar va kostyum qopqog'i: 7 qadam (rasmlar bilan)

Video: Masofadan boshqariladigan LED ko'zlar va kostyum qopqog'i: 7 qadam (rasmlar bilan)
Video: TEKIN WIFI ISH BERADIMA ISH BERMAYDIMA SINAB KO'RAMIZ 2024, Iyul
Anonim

BekathwiaBecky SternFollow tomonidan muallifning boshqa maqolalari:

Veb -kamera maxfiylik do'sti
Veb -kamera maxfiylik do'sti
Veb -kamera maxfiylik do'sti
Veb -kamera maxfiylik do'sti
Tasma o'lchovi Yagi antennasi 3D bosilgan ulagichlar bilan
Tasma o'lchovi Yagi antennasi 3D bosilgan ulagichlar bilan
Tasma o'lchovi Yagi antennasi 3D bosilgan ulagichlar bilan
Tasma o'lchovi Yagi antennasi 3D bosilgan ulagichlar bilan
Zodiak kashtalari
Zodiak kashtalari
Zodiak kashtalari
Zodiak kashtalari

Haqida: Qilish va almashish - bu mening eng katta ehtiroslarim! Umuman olganda, men mikrokontrolderlardan tortib to'qishgacha bo'lgan hamma narsa haqida yuzlab darsliklar nashr qildim. Men Nyu -York shahridagi mototsiklchi va tavba qilmagan itning onasiman. Voy … Bekathwia haqida ko'proq ma'lumot »

Egizak Jawas! Ikkita Orko! Bubble-Bobble-dan ikkita ruhiy sehrgar! Bu kostyum qalpog'i ranglarni o'zgartirish orqali tanlagan har qanday LED ko'zli jonzot bo'lishi mumkin. Men bu loyihani birinchi marta 2015 yilda juda oddiy sxema va kod bilan yaratganman, lekin bu yil men ikkita kostyumda bir vaqtning o'zida animatsiyani boshqarish bilan yangilangan versiyasini yaratmoqchi edim. Bu elektron bir xil chastotadagi ikkita qabul qiluvchini boshqarish uchun bitta oddiy, yaqin masofali RF masofadan boshqarish pultidan foydalanadi va Bill Erlning o'quv kodiga asoslanib, sezgir animatsion o'zgarishlarga erishish uchun uzilishlardan foydalanadigan Arduino kodi.

Ushbu loyiha uchun sizga kerak bo'ladi:

  • NeoPixel -dan ikkita zargarlik buyumlari
  • GEMMA M0 mikrokontroller
  • 315 MGts simsiz qabul qilgich, qulflash turi
  • To'rt, ikkita yoki bitta tugmachali 315 MGts simsiz chastotali masofadan boshqarish pulti
  • Silikon qoplamali torli sim (30awg tavsiya etiladi)
  • Lehimlash temir va lehim
  • Tel -chiziqlar
  • Yuvish uchun kesgichlar
  • Cımbızlar
  • Uchinchi qo'l asbobiga yordam (ixtiyoriy)
  • Tikuv pinlari
  • Tikuvchi bo'r (ixtiyoriy)
  • 19awg galvanizli po'lat sim
  • Kaput/qalpoqcha uchun qalin mato (bu versiya uchun men ikki qatlamli oq tamaki matosi va bir qatlamli oq tülbentdan foydalanardim, keyin yorug'likni to'sish uchun kaputning ichki qismini qattiq qora bilan o'rab oldim)
  • Yuz paneli uchun shaffof qora mato
  • Tikuv mashinasi
  • Qaychi
  • Igna va ip
  • Moslashuvchan filamentli 3D printer (ixtiyoriy)

Men ishlayotgan narsadan xabardor bo'lish uchun meni YouTube, Instagram, Twitter, Pinterest -da kuzatib boring va mening axborot byulletenimga obuna bo'ling. Amazon Associate sifatida men sheriklik havolalarim orqali qilgan xaridlaringizdan daromad olaman.

Ishni boshlashdan oldin siz quyidagi shartlarni o'qib chiqishingiz mumkin:

  • Gemma M0 bilan tanishish
  • NeoPixel Uberguide
  • Kaput loyihasining birinchi versiyasi (2015 yilda klassik Gemma bilan qurilgan va simsiz boshqaruvsiz)
  • Arduino pt 3 uchun ko'p vazifalar

1 -qadam: O'chirish diagrammasi va kodi

O'chirish diagrammasi va kodi
O'chirish diagrammasi va kodi

O'chirish ulanishlari quyidagicha:

  • Gemma D2 simsiz qabul qiluvchiga D0
  • Gemma D0 simsiz qabul qiluvchiga D1
  • Gemma 3V simsiz qabul qilgichga +5V
  • Gemma GND simsiz qabul qiluvchisi GND va NeoPixel zargarlik buyumlari GND
  • Gemma D1 - NeoPixel marvarid ma'lumotlari IN
  • Gemma Vout PWR NeoPixel zargarlik buyumlariga
  • NeoPixel marvarid ma'lumotlari boshqa NeoPixel Jewel ma'lumotlariga OUT

Yig'ish yozuvlari uchun keyingi bosqichga qarang.

Kod Bill Erlning ko'p vazifali Arduino eskiziga asoslangan va ikkita raqamli kirish bilan ikkita NeoPixel zargarlik buyumlarini boshqarish uchun o'zgartirilgan. Shunday qilib, siz simsiz qabul qilgichni ishlatmasligingiz kerak- buning o'rniga siz kontaktlarning zanglashiga olib kelishi mumkin. Ushbu Arduino kod faylini ushbu qo'shimchalardan yuklab oling yoki bu erdan bo'sh Arduino eskiziga nusxa ko'chiring:

#"Adafruit_NeoPixel.h" ni qo'shing

// Qo'llab -quvvatlanadigan naqsh turlari: enum naqsh {NONE, RAINBOW_CYCLE, THEATER_CHASE, COLOR_WIPE, SCANNER, FADE}; // Qo'llab -quvvatlanadigan ota -ona yo'nalishlari: enum yo'nalishi {FORWARD, REVERSE}; // NeoPattern klassi - Adafruit_NeoPixel sinfining NeoPatterns sinfidan olingan: public Adafruit_NeoPixel {public: // Ro'yxat o'zgaruvchilari: naqsh ActivePattern; // qaysi naqsh Yo'nalish yo'nalishi bo'yicha ishlaydi; // naqshni imzosiz uzoq intervalgacha ishlatish uchun yo'nalish; // yangilanishlar orasidagi millisekundlar imzolanmagan long lastUpdate; // pozitsiyaning oxirgi yangilanishi uint32_t Color1, Color2; // Qanday ranglar ishlatilmoqda uint16_t TotalSteps; // naqshdagi qadamlarning umumiy soni uint16_t Indeks; // namuna ichidagi joriy qadam (*OnComplete) (); // Naqsh tugagandan so'ng qayta qo'ng'iroq qilish // Konstruktor - NeoPatterns tasmasini ishga tushirish uchun bazaviy sinf konstruktorini chaqiradi (uint16_t piksel, uint8_t pin, uint8_t turi, void (*qayta qo'ng'iroq) ()): Adafruit_NeoPixel (piksel, pin, tur) {OnComplete = qayta qo'ng'iroq qilish; } // namuna voidini yangilang Update () {if ((millis () - lastUpdate)> Interval) // yangilash vaqti {lastUpdate = millis (); switch (ActivePattern) {case RAINBOW_CYCLE: RainbowCycleUpdate (); tanaffus; ish THEATER_CHASE: TheaterChaseUpdate (); tanaffus; COLOR_WIPE holati: ColorWipeUpdate (); tanaffus; ish skaneri: ScannerUpdate (); tanaffus; FADE holati: FadeUpdate (); tanaffus; standart: tanaffus; }}} // Indeksni oshiring va oxirida bekor qiling void Increment () {if (Direction == FORWARD) {Index ++; if (Indeks> = TotalSteps) {Indeks = 0; if (OnComplete! = NULL) {OnComplete (); // qo'ng'iroqni qaytarib chaqirish}}} else // Yo'nalish == REVERSE {--Index; if (Indeks <= 0) {Indeks = TotalSteps-1; if (OnComplete! = NULL) {OnComplete (); // qayta qo'ng'iroq qilish}}}} // teskari naqsh yo'nalishi void Reverse () {if (Direction == FORWARD) {Direction = REVERSE; Indeks = TotalSteps-1; } else {Direction = FORWARD; Indeks = 0; }} // RainbowCycle bo'shligi uchun boshlang RainbowCycle (uint8_t interval, yo'nalish dir = FORWARD) {ActivePattern = RAINBOW_CYCLE; Interval = interval; TotalSteps = 255; Indeks = 0; Yo'nalish = dir; } // RainbowCycleUpdate () {RainbowCycleUpdate () {Rainbow Cycle Pattern void -ni yangilang)); } ko'rsatish (); Kattalashtirish (); } // Theatre Chase void TheaterChase uchun ishga tushirish (uint32_t color1, uint32_t color2, uint8_t interval, yo'nalish dir = FORWARD) {ActivePattern = THEATER_CHASE; Interval = interval; TotalSteps = numPixels (); Rang1 = rang1; Rang2 = rang2; Indeks = 0; Yo'nalish = dir; } // Theatre Chase Pattern void bekor qilingan TheaterChaseUpdate () {for (int i = 0; i <numPixels (); i ++) {if ((i+Index) % 3 == 0) {setPixelColor (i, Color1); } boshqa {setPixelColor (i, Color2); }} ko'rsatish (); Kattalashtirish (); } // ColorWipe bo'shligi uchun ColorWipe -ni ishga tushiring (uint32_t rang, uint8_t interval, yo'nalish dir = FORWARD) {ActivePattern = COLOR_WIPE; Interval = interval; TotalSteps = numPixels (); Rang1 = rang; Indeks = 0; Yo'nalish = dir; } // Color Wipe Pattern void ColorWipeUpdate () {setPixelColor (Index, Color1) yangilash; ko'rsatish (); Kattalashtirish (); } // SCANNNER bo'sh skanerini ishga tushiring (uint32_t color1, uint8_t interval) {ActivePattern = SCANNER; Interval = interval; TotalSteps = (numPixels () - 1) * 2; Rang1 = rang1; Indeks = 0; } // Scanner Pattern void ScannerUpdate () {ni yangilang (int i = 0; i > 1, yashil (rang) >> 1, ko'k (rang) >> 1); qaytarish dimColor; } // Barcha piksellarni rangsiz (bir vaqtda) ColorSet (uint32_t color) {uchun (int i = 0; i> 16) & 0xFF; } // 32-bitli yashil komponentni qaytaradi uint8_t Green (uint32_t color) {return (color >> 8) & 0xFF; } // 32-bitli ko'k komponentni qaytaradi uint8_t Moviy (uint32_t rang) {qaytish rangi & 0xFF; } // Rang qiymatini olish uchun 0 dan 255 gacha bo'lgan qiymatni kiriting. // Ranglar - r - g - b - r ga qaytish. uint32_t Wheel (WheelPos bayt) {WheelPos = 255 - WheelPos; if (WheelPos <85) {Qaytish Rangi (255 - WheelPos * 3, 0, WheelPos * 3); } if if (WheelPos <170) {WheelPos -= 85; Qaytish rangi (0, WheelPos * 3, 255 - WheelPos * 3); } boshqa {WheelPos -= 170; Qaytish rangi (WheelPos * 3, 255 - WheelPos * 3, 0); }}}; void JewelsComplete (); // ikkita halqa va tayoq uchun bir nechta NeoPatternsni belgilang // shuningdek NeoPatterns Jewels (14, 1, NEO_GRBW + NEO_KHZ800, & JewelsComplete) ning bajarilish tartibini; const int Yorqinligi = 50; // Hamma narsani boshlang va bo'sh joyni o'rnatishga tayyorlaning () {Serial.begin (115200); pinMod (2, Kirish); pinMod (0, Kirish); // Jewels.setBrightness (BRIGHTNESS) barcha piksellarini ishga tushiring; Jewels.begin (); // Naqshni taqinchoqlardan boshlang. TheaterChase (Jewels. Color (255, 50, 0), Jewels. Color (0, 0, 0, 50), 100); } // Main loop void loop () {// Marvaridlarni yangilang. Jewels. Update (); // Tugmani bosishda naqshlarni almashtirish: if (digitalRead (2) == HIGH) // 1 -tugma bosilgan {Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = FADE; Zargarlik buyumlari. TotalSteps = 100; Marvaridlar oralig'i = 1; } if if (digitalRead (0) == HIGH) // 2 -tugma bosilgan {Jewels. Color1 = Jewels. Color (255, 0, 0); Jewels. ActivePattern = SCANNER; Jewels. TotalSteps = Jewels.numPixels (); Marvaridlar oralig'i = 100; } else // Oddiy ishlashga qaytish {// Barcha naqsh parametrlarini normal qiymatlarga qaytarish Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = THEATER_CHASE; Jewels. TotalSteps = Jewels.numPixels (); Marvaridlar oralig'i = 100; }} // ---------------------------------------------- -------------- // To'ldirish tartibi-naqshni to'ldirishda chaqiriladi // ---------------------- -------------------------------------- // qimmatbaho toshlarni qaytarish bekor qilingan JewelsComplete () {// Keyingi ko'rish uchun ranglarning tasodifiy o'zgarishi //Jewels. Color1 = Jewels. Wheel (tasodifiy (255)); Zargarlik buyumlari. Teskari (); }

2 -qadam: O'chirish davri

O'chirish davri
O'chirish davri
O'chirish davri
O'chirish davri

Uchinchi qo'l ushlagichlariga yordam berish to'plami simlarni qismlarga lehimlash jarayonini juda sodda va qiziqarli qilishi mumkin. Agar sizda to'plam bo'lmasa, xavotir olmang; Lehimlash paytida taxtangizni barqaror ushlab turish uchun siz har doim lenta yoki plakat macunidan foydalanishingiz mumkin.

Ikkita NeoPixel zargarlik buyumlari orasidagi ulanish uchun ingichka simli bo'laklardan (uzunligi taxminan 6in/15smin) foydalaning (oldingi bosqichdagi diagramma). Agar siz juda qisqa simlardan foydalansangiz, siz LED ko'zlaringizni bir -biridan uzoqroq joylashtira olmaysiz va agar siz simni juda ko'p ishlatsangiz, kostyum kiyganingizda bo'shashib qoladi.

Asosiy sxema lapel zonasida (ko'kragingiz elkangiz bilan uchrashadigan joyda) yashaydi, shuning uchun zanjirdagi birinchi NeoPixel zargarlik buyumlari va Gemma o'rtasidagi aloqalar uchun simlar ancha uzunroq bo'ladi. Siz simni ko'z atrofigacha ushlab turishingiz va simni bosib o'tishi kerak bo'lgan masofani o'lchash uchun chizishingiz mumkin, keyin bo'shashish va sug'urta uchun biroz ko'proq qo'shing.

Gemma va simsiz qabul qilgich o'rtasida ulanish uchun men prototipli simlarni ayol sarlavhali ishlatishni tanladim, chunki simsiz qabul qilgichda allaqachon bosh pinlari o'rnatilgan.

3 -qadam: Batareya quvvati

Batareya quvvati
Batareya quvvati
Batareya quvvati
Batareya quvvati

Zanjirni quvvatlantirish uchun men 500 mA / soatlik lipoli batareyadan foydalanardim. Agar siz lipolli batareyadan foydalansangiz, uni chizish, teshilish, ishqalanish, egilish va boshqa suiiste'molliklardan himoya qilish oqilona bo'ladi. Siz uni mustahkam mato lentasiga o'rashingiz yoki 3D bosma ushlagich qilishingiz mumkin.

3xAAA ushlagichini osongina ishlatishingiz mumkin (uni lapel ichida emas, cho'ntagingizda olib yurasiz).

4 -qadam: Tikuv namunasi va matoni kesish

Tikuv namunasi va matoni kesish
Tikuv namunasi va matoni kesish

Men bu kostyumning birinchi versiyasi uchun yaratgan naqshdan foydalandim, bu ko'p sahifali PDF bo'lib, naqshli bo'laklarni yaratish uchun bir-biriga yopishtirilgan.

Matoni katlang, qirralarning chetini tekislang va matoni tekislang va naqsh qismlarini belgilangan tarzda katlayın. Belgilangan bo'r yoki qalam yordamida 5/8 dyuym/3 sm uzunlikdagi naqshli bo'laklardan tashqarida (tikuvdan tashqari) tikuv payini aniqlang. Mening matolarim ingichka bo'lgani uchun, men uni ikki baravar ko'paytirmoqchi edim va ikkita kaput yasaganimdan so'ng, men asosiy matodan har bir naqshning to'rttasini kesib tashladim, so'ngra doka tülbentda yana bir qavat qo'yib, tashqariga tekstura qo'shdim. qora matoning qatlami yorug'lik kirishiga to'sqinlik qiladigan astar sifatida. Menimcha, agar men buni oldindan rejalashtirganimda, men birinchi oq qatlamlardan birini tashlab yuborgan bo'lardim va kaputlar har biri to'rtta emas, faqat uchta qatlamdan iborat bo'lardi.

5 -qadam: mato qismlarini yig'ing

Mato bo'laklarini yig'ish
Mato bo'laklarini yig'ish
Mato bo'laklarini yig'ish
Mato bo'laklarini yig'ish
Mato bo'laklarini yig'ish
Mato bo'laklarini yig'ish
Mato qismlarini yig'ish
Mato qismlarini yig'ish

Har bir naqshli bo'lakka dart/yelka choklarini mahkamlang va tikib qo'ying, so'ng kaput va kepka qismlarini bo'yin tikuvi bo'ylab o'ng tomonlarini bir -biriga tekislang. To'g'ridan -to'g'ri tikuvni, shuningdek, qopqoqning yuqori qismiga tikib qo'ying.

Kaputni sinab ko'ring. Qopqoqning old chetini buking va mahkamlang va uni tikib qo'ying, shunda toza qirrani va sim o'tkazadigan kanalni yarating.

Keyin, kaputning old qismini yopish uchun dumaloq qora matodan kesib oling. Bu aylanani qo'llab -quvvatlaydigan va yuzingizni yashiradigan narsa. Qopqoqni kiyish paytida uni mahkamlang, so'ngra qo'l yoki mashina bilan qopqoqning ochiladigan joyiga tikib qo'ying.

6 -qadam: davlumbazga kontaktlarning zanglashini o'rnating

Davlumbazga davra o'rnatish
Davlumbazga davra o'rnatish

Men kaputni qo'ydim, kontaktni yoqdim va ko'zgu yordamida LEDlarning eng yaxshi joyini aniqladim. Keyin men joylarni belgilash uchun pinlardan foydalandim va qora ip bilan ehtiyotkorlik bilan tikib qo'ydim, NeoPixel zargarlik buyumlarini o'rnatish teshiklarini qora old panelga mahkamladim. Mening ko'zlarim mening haqiqiy ko'zlarim tagida o'tiribdi, bu esa ularning o'tmishini ko'rishni osonlashtiradi.

Agar siz ikkinchi kaput yasasangiz, yuving va takrorlang.

7 -qadam: kiying

Uni kiying!
Uni kiying!
Uni kiying!
Uni kiying!
Uni kiying!
Uni kiying!
Uni kiying!
Uni kiying!

Bularni kiyish juda qiziq. Tashqaridan ko'rish oson, boshqalar uchun esa yuzingizni ko'rish oson emas. Hamma narsa juda qulay, chunki old matoni yuzingizga tekkizishdan saqlaydigan katta kaput va simli ramka.

Yigitim va men bu yil men ularni hackerlar makonidagi Halloween partiyasida kiyganman, va men lazer proyektorining dasturiy interfeysini ko'rsam -da, u Abeltondagi kichik matnni aniqlay olmadi, shuning uchun biz uni moslashtirishga majbur bo'ldik. yaxshiroq ko'rish. Men qopqoqning yuqori qismidan qora mato panelini olib tashladim va ortiqcha qismini bukladim. Qorong'i xonada siz ikkalasini bir -biridan ajrata olmas edingiz, garchi buni biz birga suratda ko'rsangiz.

O'qiganingiz uchun tashakkur! Agar sizga ushbu loyiha yoqsa, siz mening ba'zi loyihalarimga qiziqishingiz mumkin:

  • LEDlarni tarqatish uchun 13 ta fikr
  • Arduino/Bluetooth bilan tarqalgan LED chiziqli belgi
  • ESP8266 bilan YouTube obunachilari hisoblagichi
  • Oson cheksizlik oynasi
  • 3 boshlang'ich Arduino xatolar

Men ishlayotgan narsadan xabardor bo'lish uchun meni YouTube, Instagram, Twitter va Pinterest -da kuzatib boring.

Tavsiya: