İçindekiler:

Uzaktan Kumandalı LED Gözlü & Kostümlü Başlık: 7 Adım (Resimli)
Uzaktan Kumandalı LED Gözlü & Kostümlü Başlık: 7 Adım (Resimli)

Video: Uzaktan Kumandalı LED Gözlü & Kostümlü Başlık: 7 Adım (Resimli)

Video: Uzaktan Kumandalı LED Gözlü & Kostümlü Başlık: 7 Adım (Resimli)
Video: Led Işıklı Oda 😫🤤#Shorts 2024, Kasım
Anonim

bekathwiaBecky SternTakip edinYazarın devamı:

Web kamerası Gizlilik Arkadaş
Web kamerası Gizlilik Arkadaş
Web kamerası Gizlilik Arkadaş
Web kamerası Gizlilik Arkadaş
3D Baskılı Kuplörlü Mezura Yagi Anteni
3D Baskılı Kuplörlü Mezura Yagi Anteni
3D Baskılı Kuplörlü Mezura Yagi Anteni
3D Baskılı Kuplörlü Mezura Yagi Anteni
Zodyak Nakış
Zodyak Nakış
Zodyak Nakış
Zodyak Nakış

Hakkında: Yapmak ve paylaşmak benim en büyük iki tutkum! Toplamda mikrodenetleyicilerden örgüye kadar her şey hakkında yüzlerce eğitim yayınladım. Ben New York City'li bir motosikletçi ve pişmanlık duymayan köpek anneyim. Benim wo… bekathwia hakkında daha fazla »

İkiz Jawalar! Çift Orko! Bubble-Bobble'dan iki hayalet büyücü! Bu kostüm başlığı, sadece renkleri değiştirerek seçtiğiniz herhangi bir LED gözlü yaratık olabilir. Bu projeyi ilk olarak 2015 yılında çok basit bir devre ve kod ile yapmıştım ama bu yıl iki kostüm arasında eş zamanlı animasyon kontrolü ile yükseltilmiş bir versiyon oluşturmak istedim. Bu devre, aynı frekansta iki alıcıyı kontrol etmek için basit, yakın mesafeli bir RF uzaktan kumanda ve Bill Earl'ün eğitim koduna dayalı olarak duyarlı animasyon değişiklikleri elde etmek için kesintiler kullanan Arduino kodu kullanır.

Bu proje için ihtiyacınız olacak:

  • İki NeoPixel Mücevheri
  • GEMMA M0 mikrodenetleyici
  • 315MHz kablosuz alıcı, mandallı tip
  • Dört, iki veya tek düğme yapılandırmasında 315MHz kablosuz RF uzaktan kumanda
  • Silikon kaplı çok telli tel (30awg önerilir)
  • Havya ve lehim
  • Tel striptizci
  • Düz kesiciler
  • Cımbız
  • Üçüncü el aletine yardım etmek (isteğe bağlı)
  • Dikiş iğneleri
  • Terzi tebeşiri (isteğe bağlı)
  • 19awg galvanizli çelik tel
  • Başlık/pelerin için kalın kumaş (bu versiyon için iki kat beyaz tütün bezi ve bir kat beyaz tülbent kullandım, ardından ışığı engellemek için kapşonun içini düz siyahla kapladım)
  • Yüz paneli için yarı saydam siyah kumaş
  • Dikiş makinesi
  • Makas
  • İğne iplik
  • Esnek filamanlı 3D yazıcı (isteğe bağlı)

Ne üzerinde çalıştığımı takip etmek için beni YouTube, Instagram, Twitter, Pinterest'te takip edin ve bültenime abone olun. Bir Amazon İş Ortağı olarak, bağlı kuruluş bağlantılarımı kullanarak yaptığınız nitelikli satın alımlardan kazanıyorum.

Başlamadan önce, aşağıdaki ön koşulları okumak isteyebilirsiniz:

  • Gemma M0 Tanıtımı
  • NeoPixel Uberguide
  • İlk başlık projesi versiyonu (2015 yılında klasik Gemma ile üretilmiştir ve kablosuz kontrol yoktur)
  • Arduino pt 3'ü çoklu görev yapmak

Adım 1: Devre Şeması ve Kodu

Devre Şeması ve Kodu
Devre Şeması ve Kodu

Devre bağlantıları aşağıdaki gibidir:

  • Gemma D2'den kablosuz alıcıya D0
  • Gemma D0'dan kablosuz alıcı D1'e
  • Gemma 3V kablosuz alıcıya +5V
  • Gemma GND'den kablosuz alıcıya GND ve NeoPixel mücevherleri GND
  • Gemma D1'den NeoPixel mücevher verilerine IN
  • NeoPixel mücevherleri PWR'ye Gemma Vout
  • NeoPixel mücevher verileri ÇIKIŞ, diğer NeoPixel Mücevher verileri GİRİŞİ

Montaj notları için sonraki adıma bakın.

Kod, Bill Earl tarafından Arduino taslağının Çoklu görevlendirilmesine dayanmaktadır ve iki dijital girişli iki NeoPixel mücevherini kontrol etmek için modifiye edilmiştir. Yani kablosuz alıcıyı kullanmak zorunda değilsiniz - bunun yerine devrenin üzerindeki düğmeleri kullanabilirsiniz. Bu Arduino kod dosyasını bu adımın eklerinden indirin veya buradan kopyalayıp boş bir Arduino çizimine yapıştırın:

#include "Adafruit_NeoPixel.h"

// Desteklenen model türleri: enum pattern { NONE, RAINBOW_CYCLE, THEATER_CHASE, COLOR_WIPE, SCANNER, FADE }; // Desteklenen model yönleri: numaralandırma yönü { İLERİ, GERİ }; // NeoPattern Sınıfı - Adafruit_NeoPixel sınıfından türetilmiştir sınıf NeoPatterns: public Adafruit_NeoPixel { public: // Üye Değişkenleri: pattern ActivePattern; // hangi desenin çalıştığı yön Yön; // kalıbı çalıştırmak için yön unsigned long Interval; // güncellemeler arasında milisaniye imzasız uzun lastUpdate; // pozisyonun son güncellemesi uint32_t Color1, Color2; // Hangi renkler kullanılıyor uint16_t TotalSteps; // kalıptaki toplam adım sayısı uint16_t İndeks; // şablon void içindeki geçerli adım (*OnComplete)(); // Model tamamlandığında geri arama // Yapıcı - NeoPatterns şeridini başlatmak için temel sınıf kurucuyu çağırır(uint16_t piksel, uint8_t pin, uint8_t type, void (*callback)()):Adafruit_NeoPixel(piksel, pin, tip) { OnComplete = geri aramak; } // Kalıbı güncelleyin void Update() { if((millis() - lastUpdate) > Interval) // güncelleme zamanı { lastUpdate = millis(); switch(ActivePattern) { case RAINBOW_CYCLE: RainbowCycleUpdate(); kırmak; durum THEATER_CHASE: TheaterChaseUpdate(); kırmak; durum COLOR_WIPE: ColorWipeUpdate(); kırmak; durum TARAYICI: TarayıcıGüncelleme(); kırmak; durum FADE: FadeUpdate(); kırmak; varsayılan: ara; } } } // Dizini artır ve sonunda sıfırla void Increment() { if (Direction == FORWARD) { Index++; if (İndeks >= Toplam Adımlar) { İndeks = 0; if (OnComplete != NULL) { OnComplete(); // geri aramayı çağır } } } else // Yön == REVERSE { --Index; if (İndeks <= 0) { İndeks = TotalSteps-1; if (OnComplete != NULL) { OnComplete(); // tamamlama geri aramasını çağır } } } } // Ters model yönü void Reverse() { if (Direction == FORWARD) { Direction = REVERSE; Dizin = ToplamAdımlar-1; } else { Yön = İLERİ; dizin = 0; } } // RainbowCycle void RainbowCycle için başlat(uint8_t aralığı, yön dir = FORWARD) { ActivePattern = RAINBOW_CYCLE; Aralık = aralık; ToplamAdımlar = 255; dizin = 0; yön = yön; } // Rainbow Döngüsü Modelini güncelle void RainbowCycleUpdate() { for(int i=0; i< numPixels(); i++) { setPixelColor(i, Wheel(((i * 256 / numPixels()) + Index) & 255)); } göstermek(); Artış(); } // Theater Chase için başlat void TheaterChase(uint32_t color1, uint32_t color2, uint8_t interval, direction dir = FORWARD) { ActivePattern = THEATER_CHASE; Aralık = aralık; TotalSteps = numPixels(); Renk1 = renk1; Renk2 = renk2; dizin = 0; yön = yön; } // Theater Chase Modelini güncelleyin void TheaterChaseUpdate() { for(int i=0; i< numPixels(); i++) { if ((i + Index) % 3 == 0) { setPixelColor(i, Color1); } else { setPixelColor(i, Color2); } } göstermek(); Artış(); } // ColorWipe void ColorWipe için başlat(uint32_t color, uint8_t interval, direction dir = FORWARD) { ActivePattern = COLOR_WIPE; Aralık = aralık; TotalSteps = numPixels(); Renk1 = renk; dizin = 0; yön = yön; } // Color Wipe Pattern'i güncelleyin void ColorWipeUpdate() { setPixelColor(Index, Color1); göstermek(); Artış(); } // SCANNNER void Scanner için başlat(uint32_t color1, uint8_t interval) { ActivePattern = SCANNER; Aralık = aralık; TotalSteps = (numPixels() - 1) * 2; Renk1 = renk1; dizin = 0; } // Tarayıcı Kalıbını güncelleyin void ScannerUpdate() { for (int i = 0; i > 1, Yeşil(renk) >> 1, Mavi(renk) >> 1); dimColor'ı döndür; } // Tüm pikselleri bir renge (eşzamanlı olarak) ayarlayın void ColorSet(uint32_t color) { for (int i = 0; i > 16) & 0xFF; } // 32 bit rengin Green bileşenini döndürür uint8_t Green(uint32_t color) { return (color >> 8) & 0xFF; } // 32-bit color uint8_t Blue(uint32_t color) { return color & 0xFF; } // Bir renk değeri elde etmek için 0 ile 255 arasında bir değer girin. // Renkler r - g - b - r'ye bir geçiştir. uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if(WheelPos < 85) { dönüş Renk(255 - WheelPos * 3, 0, WheelPos * 3); } else if(WheelPos < 170) { WheelPos -= 85; dönüş Renk(0, WheelPos * 3, 255 - WheelPos * 3); } else { WheelPos -= 170; dönüş Renk(WheelPos * 3, 255 - WheelPos * 3, 0); } } }; geçersiz JewelsComplete(); // İki yüzük ve çubuk için bazı NeoPatterns tanımlayın // ve ayrıca bazı tamamlama rutinleri NeoPatterns Jewels(14, 1, NEO_GRBW + NEO_KHZ800, &JewelsComplete); const int PARLAKLIK = 50; // Her şeyi sıfırlayın ve void kurulumunu başlatmaya hazırlanın() { Serial.begin(115200); pinMode(2, GİRİŞ); pinMode(0, GİRİŞ); // Tüm pikselleri sıfırla Jewels.setBrightness(BRIGHTNESS); Jewels.begin(); // Bir deseni başlatın Jewels. TheaterChase(Jewels. Color(255, 50, 0), Jewels. Color(0, 0, 0, 50), 100); } // Ana döngü void döngüsü() { // Mücevherleri güncelle. Jewels. Update(); // Bir düğmeye basarak desenleri değiştirin: if (digitalRead(2) == HIGH) // Düğme #1'e basıldı { Jewels. Color1 = Jewels. Color(255, 50, 0); Jewels. ActivePattern = FADE; Jewels. TotalSteps = 100; Mücevherler. Aralık = 1; } else if (digitalRead(0) == YÜKSEK) // 2 numaralı düğmeye basıldı { Jewels. Color1 = Jewels. Color(255, 0, 0); Jewels. ActivePattern = TARAYICI; Jewels. TotalSteps = Jewels.numPixels(); Mücevherler. Aralık = 100; } else // Normal işleme dön { // Tüm desen parametrelerini normal değerlere geri yükle Jewels. Color1 = Jewels. Color(255, 50, 0); Jewels. ActivePattern = THEATER_CHASE; Jewels. TotalSteps = Jewels.numPixels(); Mücevherler. Aralık = 100; } } //------------------------------------------------- -------------- //Tamamlama Rutinleri - bir model tamamlandığında çağrılır //---------------------- -------------------------------------- // Jewels Completion Geri Arama void JewelsComplete() { // Sonraki tarama için rastgele renk değişimi //Jewels. Color1 = Jewels. Wheel(random(255)); Jewels. Reverse(); }

Adım 2: Devreyi Birleştirin

Montaj Devresi
Montaj Devresi
Montaj Devresi
Montaj Devresi

Üçüncü el tutuculara yardımcı olan bir dizi, kabloları bileşenlere lehimleme işlemini çok basit ve eğlenceli hale getirebilir. Ancak bir setiniz yoksa endişelenmeyin; Lehim yaparken tahtanızı sabit tutmak için her zaman biraz bant veya poster macunu kullanabilirsiniz.

İki NeoPixel mücevher arasındaki bağlantılar için ince telli tel parçaları (yaklaşık 6 inç/15 cm uzunluk) kullanın (önceki adımdaki diyagram). Çok kısa teller kullanırsanız, LED gözlerinizi yeterince uzağa yerleştiremezsiniz ve çok fazla tel kullanırsanız, kostümü giyerken gevşeklik yüzünüze girer.

Ana devre yaka bölgesinde (göğsünüzün omzunuzla birleştiği yerde) yaşayacak, bu nedenle zincirdeki ilk NeoPixel mücevher ile Gemma arasındaki bağlantılar için teller çok daha uzun olacak. Teli göz çevrenize kadar tutabilir ve telin kat etmesi gereken mesafeyi ölçmek için dışarı çekebilir, ardından gevşeklik ve sigorta için biraz daha ekleyebilirsiniz.

Gemma ve kablosuz alıcı arasında bağlantı kurmak için, kablosuz alıcıda zaten başlık pimleri takılı olduğundan, dişi başlıklı prototipleme kabloları kullanmayı seçtim.

3. Adım: Pil Gücü

Pil gücü
Pil gücü
Pil gücü
Pil gücü

Devreye güç sağlamak için 500mAh lipoly pil kullandım. Bir lipoly pil kullanıyorsanız, pili çiziklerden, delinmelerden, aşınmalardan, bükülmelerden ve diğer suistimallerden korumak akıllıca olacaktır. Sağlam bir kumaş bantla sarabilir veya bunun için 3D baskılı bir tutucu yapabilirsiniz.

Bunun yerine kolayca bir 3xAAA tutucu kullanabilirsiniz (yaka yerine cebinizde taşıyın).

Adım 4: Dikiş Deseni ve Kumaş Kesme

Dikiş Deseni ve Kesim Kumaşı
Dikiş Deseni ve Kesim Kumaşı

Bu kostümün ilk versiyonu için oluşturduğum kalıbın aynısını kullandım; bu, desen parçalarını oluşturmak için birlikte döşenen çok sayfalı bir PDF'dir.

Kumaş damarlarını hizalamak için kenar kenarlarını hizalayarak kumaşınızı katlayın ve desen parçalarını katlama boyunca işaretlendiği gibi yerleştirin/iğneleyin. Bir işaretleme tebeşiri veya kurşun kalem kullanarak yaklaşık 5/8 inç/3 cm'lik desen parçalarının dışında (katlama hariç) bir dikiş payı bırakın. Kumaşım ince olduğu için ikiye katlamak istedim ve iki başlık yaptığım için, ana kumaşta her bir desen parçasından dördünü kestim, sonra dışarıya doku eklemek için gazlı tülbentte başka bir katman ve nihayetinde bir içeri giren ışığı engellemek için astar olarak siyah kumaş tabakası. Sanırım bunun için önceden plan yapsaydım, ilk beyaz katmanlardan birini atabilirdim ve davlumbazlar dört yerine sadece üç katmandan oluşurdu.

Adım 5: Kumaş Parçalarını Birleştirin

Kumaş Parçalarını Birleştirin
Kumaş Parçalarını Birleştirin
Kumaş Parçalarını Birleştirin
Kumaş Parçalarını Birleştirin
Kumaş Parçalarını Birleştirin
Kumaş Parçalarını Birleştirin
Kumaş Parçalarını Birleştirin
Kumaş Parçalarını Birleştirin

Her desen parçasına dart/omuz dikişlerini sabitleyin ve dikin, ardından kapüşon ve pelerin parçalarını boyun dikişi boyunca sağ taraflarla birlikte hizalayın. Dikişin yanı sıra kaputun üst kısmına düz bir dikiş dikin.

Kaputu deneyin. Kaputun ham ön kenarını katlayın ve sabitleyin ve düzgün bir kenar ve ayrıca bir telin geçmesi için bir kanal oluşturmak için dikin.

Ardından, kaputun önünü kaplamak için yuvarlak bir şeffaf siyah kumaş parçası kesin. Devreyi destekleyecek ve yüzünüzü gizleyecek olan budur. En iyi oturması için başlığı takarken yerine sabitleyin, ardından başlık açıklığına elle veya makineyle dikin.

Adım 6: Devreyi Hood'a Takın

Devreyi Hood'a Takın
Devreyi Hood'a Takın

Başlığı taktım, devreyi açtım ve LED'ler için en iyi yeri belirlemek için bir ayna kullandım. Sonra yerleri işaretlemek için pimler kullandım ve NeoPixel mücevherlerindeki montaj deliklerini şeffaf siyah ön panele bağlayarak siyah iplik kullanarak dikkatlice diktim. Benimkiler gerçek gözlerimin hemen altında oturuyor, bu da onların arkasını görmeyi kolaylaştırıyor.

İkinci bir başlık yapıyorsanız durulayın ve tekrarlayın.

Adım 7: Giyin

Onu giy!
Onu giy!
Onu giy!
Onu giy!
Onu giy!
Onu giy!
Onu giy!
Onu giy!

Bunları giymek çok eğlenceli. Dışarıyı görmek kolaydır ve başkalarının yüzünü görmesi kolay değildir. Ön kumaşın yüzünüze düşmesini önleyen büyük boy başlık ve tel çerçeve sayesinde her şey oldukça rahat.

Erkek arkadaşım ve ben bunları bu yıl hackerspace'imin Cadılar Bayramı partisinde DJ'lik yapmak için giydik ve ben lazer projektör yazılımının arayüzünü görebiliyorken, o abelton'daki küçük metni tam olarak seçemiyordu, bu yüzden onunkini bir daha iyi görüntü. Siyah kumaş paneli kaputun üst kısmından çıkardım ve fazlalığın üzerine katladım. Karanlık bir odada, ikisi arasındaki farkı tam olarak anlayamazsınız, ancak yukarıdaki birlikte fotoğrafımızda görebilirsiniz.

Okuduğunuz için teşekkürler! Bu projeyi beğendiyseniz, diğerlerinden bazıları da ilginizi çekebilir:

  • LED'leri Yaymak için 13 Fikir
  • Arduino/Bluetooth ile Dağınık LED Şerit İşareti
  • ESP8266 ile YouTube Abone Sayacı
  • Kolay Sonsuzluk Aynası
  • 3 Acemi Arduino Hatası

Ne üzerinde çalıştığımı takip etmek için beni YouTube, Instagram, Twitter ve Pinterest'te takip edin.

Önerilen: