Indholdsfortegnelse:

Fjernstyret LED -øjne og kostumehætte: 7 trin (med billeder)
Fjernstyret LED -øjne og kostumehætte: 7 trin (med billeder)

Video: Fjernstyret LED -øjne og kostumehætte: 7 trin (med billeder)

Video: Fjernstyret LED -øjne og kostumehætte: 7 trin (med billeder)
Video: Stuntcar RC med LED-Lys og 2 remotes - Se den på www.satana.dk 2024, December
Anonim

Af bekathwiaBecky SternFølg mere af forfatteren:

Webcam Privacy Friend
Webcam Privacy Friend
Webcam Privacy Friend
Webcam Privacy Friend
Målebånd Yagi -antenne med 3D -printede koblinger
Målebånd Yagi -antenne med 3D -printede koblinger
Målebånd Yagi -antenne med 3D -printede koblinger
Målebånd Yagi -antenne med 3D -printede koblinger
Zodiac broderi
Zodiac broderi
Zodiac broderi
Zodiac broderi

Om: At lave og dele er mine to største lidenskaber! I alt har jeg udgivet hundredvis af tutorials om alt fra mikrokontrollere til strikning. Jeg er en motorcyklist i New York og hundemor uden anger. My wo… Mere om bekathwia »

Twin Jawas! Dobbelt Orko! To spøgelsesguider fra Bubble-Bobble! Denne kostumehætte kan være enhver LED-øjne, du vælger, bare ved at ændre farverne. Jeg lavede først dette projekt i 2015 med et meget simpelt kredsløb og kode, men i år ville jeg oprette en opgraderet version med samtidig animationskontrol på tværs af to kostumer. Dette kredsløb bruger en enkel RF-fjernbetjening på nært hold til at styre to modtagere på den samme frekvens, og Arduino-kode anvender afbrydelser for at opnå responsive animationsændringer baseret på Bill Earls tutorial-kode.

Til dette projekt skal du bruge:

  • To NeoPixel juveler
  • GEMMA M0 mikrokontroller
  • 315MHz trådløs modtager, låsetype
  • 315MHz trådløs RF -fjernbetjening i fire, to eller enkelt knapper
  • Silikone overtrukket tråd (30awg anbefales)
  • Loddejern og loddetin
  • Wire strippere
  • Skyl kuttere
  • Pincet
  • Hjælp til tredje hånds værktøj (valgfrit)
  • Synåle
  • Skrædderkridt (valgfrit)
  • 19awg galvaniseret ståltråd
  • Tyk stof til hætte/kappe (til denne version brugte jeg to lag hvid tobaksklud og et lag hvid osteklud, derefter beklædte indersiden af hætten med fast sort for at blokere lyset)
  • Gennemsigtig sort stof til ansigtspanel
  • Symaskine
  • Saks
  • Nål og tråd
  • 3D -printer med fleksibelt filament (valgfrit)

For at følge med i det, jeg arbejder på, skal du følge mig på YouTube, Instagram, Twitter, Pinterest og abonnere på mit nyhedsbrev. Som Amazon Associate tjener jeg på kvalificerede køb, du foretager ved hjælp af mine affiliate links.

Inden du begynder, kan du læse om følgende forudsætninger:

  • Introduktion til Gemma M0
  • NeoPixel Uberguide
  • Første emhætte -projektversion (bygget i 2015 med klassisk Gemma og ingen trådløs kontrol)
  • Multitasking af Arduino pt 3

Trin 1: Kredsløbsdiagram og kode

Kredsløbsdiagram og kode
Kredsløbsdiagram og kode

Kredsløbstilslutningerne er som følger:

  • Gemma D2 til trådløs modtager D0
  • Gemma D0 til trådløs modtager D1
  • Gemma 3V til trådløs modtager +5V
  • Gemma GND til trådløs modtager GND og NeoPixel juveler GND
  • Gemma D1 til NeoPixel juveldata IN
  • Gemma Vout til NeoPixel juveler PWR
  • NeoPixel juvel data OUT til andre NeoPixel Jewel data IN

Se næste trin for monteringsnotater.

Koden er baseret på Multi-tasking af Arduino-skitsen af Bill Earl, og ændret til at styre to NeoPixel juveler med to digitale indgange. Så du behøver ikke at bruge den trådløse modtager- du kan bruge knapper på selve kredsløbet i stedet. Download denne Arduino -kodefil fra dette trins vedhæftede filer, eller kopier og indsæt herfra i en tom Arduino -skitse:

#include "Adafruit_NeoPixel.h"

// Understøttede mønstertyper: enum -mønster {NONE, RAINBOW_CYCLE, THEATER_CHASE, COLOR_WIPE, SCANNER, FADE}; // Patern retninger understøttet: enum retning {FREM, REVERSE}; // NeoPattern -klasse - afledt af Adafruit_NeoPixel -klassen NeoPatterns: public Adafruit_NeoPixel {public: // Member Variables: pattern ActivePattern; // hvilket mønster der kører retning Retning; // retning for at køre mønsteret usigneret langt interval; // millisekunder mellem opdateringer unsigned long lastUpdate; // sidste opdatering af position uint32_t Color1, Color2; // Hvilke farver er i brug uint16_t TotalSteps; // samlet antal trin i mønsteret uint16_t Index; // nuværende trin inden for mønsteret tomrum (*OnComplete) (); // Tilbagekald ved færdiggørelse af mønster // Konstruktør - kalder konstruktør i basisklasse til at initialisere strip NeoPatterns (uint16_t pixels, uint8_t pin, uint8_t type, void (*callback) ()): Adafruit_NeoPixel (pixels, pin, type) {OnComplete = ring tilbage; } // Opdater mønsteret ugyldig Opdatering () {if ((millis () - lastUpdate)> Interval) // tid til at opdatere {lastUpdate = millis (); switch (ActivePattern) {case RAINBOW_CYCLE: RainbowCycleUpdate (); pause; sag THEATER_CHASE: TheaterChaseUpdate (); pause; sag COLOR_WIPE: ColorWipeUpdate (); pause; case SCANNER: ScannerUpdate (); pause; sag FADE: FadeUpdate (); pause; standard: pause; }}}} // Forøg indekset og nulstil i slutningen tomrum Inkrement () {if (Retning == FREM) {Index ++; hvis (Indeks> = TotalSteps) {Indeks = 0; hvis (OnComplete! = NULL) {OnComplete (); // ring til tilbagekaldet}}} else // Direction == REVERSE {--Index; hvis (Indeks <= 0) {Indeks = TotalSteps-1; hvis (OnComplete! = NULL) {OnComplete (); // ring til tilbagekaldet}}}} // // Reverse pattern direction void Reverse () {if (Direction == FORWARD) {Direction = REVERSE; Indeks = TotalSteps-1; } ellers {Retning = FREM; Indeks = 0; }}} // Initialiser for et RainbowCycle -tomrum RainbowCycle (uint8_t interval, retning dir = FORWARD) {ActivePattern = RAINBOW_CYCLE; Interval = interval; Total trin = 255; Indeks = 0; Retning = dir; } // Opdater Rainbow Cycle Pattern void RainbowCycleUpdate () {for (int i = 0; i <numPixels (); i ++) {setPixelColor (i, Wheel (((i * 256 / numPixels ())+Index) & 255)); } at vise(); Forøgelse (); } // Initialiser for et Theatre Chase -tomrum TheaterChase (uint32_t color1, uint32_t color2, uint8_t interval, direction dir = FORWARD) {ActivePattern = THEATER_CHASE; Interval = interval; TotalSteps = numPixels (); Farve1 = farve1; Farve2 = farve2; Indeks = 0; Retning = dir; } // Opdater Theater Chase Pattern void TheaterChaseUpdate () {for (int i = 0; i <numPixels (); i ++) {if ((i+Index) % 3 == 0) {setPixelColor (i, Color1); } ellers {setPixelColor (i, Color2); } } at vise(); Forøgelse (); } // Initialiser for et ColorWipe -tomrum ColorWipe (uint32_t farve, uint8_t interval, retning dir = FORWARD) {ActivePattern = COLOR_WIPE; Interval = interval; TotalSteps = numPixels (); Farve1 = farve; Indeks = 0; Retning = dir; } // Opdater Color Wipe Pattern void ColorWipeUpdate () {setPixelColor (Index, Color1); at vise(); Forøgelse (); } // Initialiser for en SCANNNER -tom scanner (uint32_t color1, uint8_t interval) {ActivePattern = SCANNER; Interval = interval; TotalSteps = (numPixels () - 1) * 2; Farve1 = farve1; Indeks = 0; } // Opdater Scanner Pattern void ScannerUpdate () {for (int i = 0; i > 1, Grøn (farve) >> 1, Blå (farve) >> 1); returner dimColor; } // Indstil alle pixels til et farve (synkront) tomrum ColorSet (uint32_t farve) {for (int i = 0; i> 16) & 0xFF; } // Returnerer den grønne komponent i en 32-bit farve uint8_t grøn (uint32_t farve) {return (farve >> 8) & 0xFF; } // Returnerer den blå komponent i en 32-bit farve uint8_t blå (uint32_t farve) {return color & 0xFF; } // Indtast en værdi 0 til 255 for at få en farveværdi. // Farverne er en overgang r - g - b - tilbage til r. uint32_t Wheel (byte WheelPos) {WheelPos = 255 - WheelPos; hvis (WheelPos <85) {return Color (255 - WheelPos * 3, 0, WheelPos * 3); } ellers hvis (WheelPos <170) {WheelPos -= 85; returfarve (0, WheelPos * 3, 255 - WheelPos * 3); } ellers {WheelPos -= 170; returfarve (WheelPos * 3, 255 - WheelPos * 3, 0); }}}; void JewelsComplete (); // Definer nogle NeoPatterns for de to ringe og pinden // samt nogle færdiggørelsesrutiner NeoPatterns Jewels (14, 1, NEO_GRBW + NEO_KHZ800, & JewelsComplete); const int BRIGHTNESS = 50; // Initialiser alt og forbered dig på at starte hulrumsopsætning () {Serial.begin (115200); pinMode (2, INPUT); pinMode (0, INPUT); // Initialiser alle pixels Jewels.setBrightness (BRIGHTNESS); Jewels.begin (); // Start et mønster Jewels. TheaterChase (Jewels. Color (255, 50, 0), Jewels. Color (0, 0, 0, 50), 100); } // Main loop void loop () {// Opdater juvelerne. Juveler. Update (); // Skift mønstre ved et tryk på en knap: hvis (digitalRead (2) == HIGH) // Knap #1 trykkes på {Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = FADE; Jewels. TotalSteps = 100; Juveler. Interval = 1; } ellers hvis (digitalRead (0) == HIGH) // Knap #2 trykkes på {Jewels. Color1 = Jewels. Color (255, 0, 0); Jewels. ActivePattern = SCANNER; Jewels. TotalSteps = Jewels.numPixels (); Juveler. Interval = 100; } else // Tilbage til normal drift {// Gendan alle mønsterparametre til normale værdier Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = THEATER_CHASE; Jewels. TotalSteps = Jewels.numPixels (); Juveler. Interval = 100; }} // ---------------------------------------------- -------------- // Gennemførelsesrutiner-ring til ved færdiggørelse af et mønster // ---------------------- -------------------------------------- // Jewels Completion Callback void JewelsComplete () {// Tilfældig farveændring til næste scanning //Jewels. Color1 = Jewels. Wheel (random (255)); Juveler. Reverse (); }

Trin 2: Saml kredsløb

Saml kredsløb
Saml kredsløb
Saml kredsløb
Saml kredsløb

Et sæt hjælpende gripere til tredjemand kan gøre processen med lodning af ledninger til komponenter meget ligetil og sjov. Men bare rolig, hvis du ikke har et sæt; du kan altid bruge noget tape eller plakatspartel til at holde dit bord stabilt, mens du lodder.

Brug tynde stykker strandet tråd (ca. 6in/15cmin længde) til forbindelserne mellem de to NeoPixel juveler (diagram i forrige trin). Hvis du bruger for korte tråde, kan du ikke placere dine LED -øjne langt nok fra hinanden, og hvis du bruger for meget ledning, vil slakken komme i dit ansigt, mens du har kostumet på.

Hovedkredsløbet vil bo i reversområdet (hvor dit bryst møder din skulder), så for forbindelserne mellem den første NeoPixel juvel i kæden og Gemma vil ledningerne være meget længere. Du kan holde ledningen op til dit øjenområde og trække den ud for at måle afstanden, som ledningen skal tilbagelægge, og tilføj derefter lidt mere for slap og forsikring.

For at oprette forbindelse mellem Gemma og den trådløse modtager valgte jeg at bruge prototyperingskabler med hunhoveder, da den trådløse modtager allerede har headerstifter tilsluttet.

Trin 3: Batteristrøm

Batteristrøm
Batteristrøm
Batteristrøm
Batteristrøm

For at drive kredsløbet brugte jeg et 500mAh lipoly -batteri. Hvis du bruger et lipoly -batteri, er det klogt at beskytte det mod ridser, punkteringer, slid, bøjning og andet misbrug. Du kan pakke det ind i et robust stofbånd eller lave en 3D -printet holder til det.

Du kan sagtens bruge en 3xAAA holder i stedet (bære den i lommen i stedet for inde i reversen).

Trin 4: Syning af mønster og skærestof

Symønster og skærestof
Symønster og skærestof

Jeg brugte det samme mønster, som jeg skabte til den første version af dette kostume, som er en PDF med flere sider, der fliser sammen for at skabe mønsterstykkerne.

Fold dit stof, juster kantkanterne for at justere stofkorn, og læg/stift mønsterstykker langs folden som markeret. Spor en sømrum uden for mønsterstykkerne (undtagen folden) på ca. 5/8in/3cm ved hjælp af en kridt eller blyant. Da mit stof var tyndt, ville jeg fordoble det, og da jeg lavede to emhætter, endte jeg med at skære fire af hvert mønsterstykke i hovedstoffet, derefter endnu et lag i gummiagtig osteklæde for at tilføje tekstur til ydersiden og i sidste ende en lag af sort stof som foring for at blokere lyset, der kommer ind. Jeg tror, at hvis jeg havde planlagt det på forhånd, kunne jeg have droppet et af de første hvide lag, og emhætterne ville have bestået af kun tre lag hver i stedet for fire.

Trin 5: Saml stofstykker

Saml stofstykker
Saml stofstykker
Saml stofstykker
Saml stofstykker
Saml stofstykker
Saml stofstykker
Saml stofstykker
Saml stofstykker

Pin og sy dart/skuldersømme på hvert mønsterstykke, og juster derefter hætten og kappestykkerne langs halsen med højre side sammen. Sy sømmen, samt en søm lige over toppen af hætten.

Prøv på hætten. Fold om og stift den rå forkant af emhætten og sy den ned for at skabe en pæn kant samt en kanal, som en ledning kan gå igennem.

Klip derefter et afrundet stykke rent sort stof til at dække forsiden af emhætten. Dette er det, der understøtter kredsløbet og skjuler dit ansigt. Sæt den fast, mens du har hætten på for at få den bedste pasform, og sy den derefter med hånden eller maskinen til emhættens åbning.

Trin 6: Installer kredsløb i emhætte

Installer kredsløb i emhætte
Installer kredsløb i emhætte

Jeg satte emhætten på, tændte kredsløbet og brugte et spejl til at finde den bedste placering til lysdioderne. Derefter brugte jeg stifter til at markere placeringen og sy omhyggeligt med sort tråd og fastgjorde monteringshullerne på NeoPixel juvelerne til det sorte sorte frontpanel. Mine sidder lige under mine rigtige øjne, hvilket gør det let at se forbi dem.

Skyl og gentag, hvis du laver en anden hætte.

Trin 7: Brug det

Tag det på!
Tag det på!
Tag det på!
Tag det på!
Tag det på!
Tag det på!
Tag det på!
Tag det på!

Disse er så sjove at have på. Det er let at se ud, og ikke let for andre at se dit ansigt. Det hele er også temmelig behageligt takket være den overdimensionerede hætte og trådramme, der forhindrer det forreste stof i at falde over dit ansigt.

Min kæreste og jeg bar dem til DJ mit hackerspace's Halloween -fest i år, og mens jeg kunne se grænsefladen til laserprojektorsoftwaren, kunne han ikke helt finde ud af den lille tekst i Abelton, så vi var nødt til at tilpasse hans til at have en bedre udsigt. Jeg fjernede det sorte stofpanel fra den øverste bit af emhætten og foldede overskydende. I et mørkt rum kunne du ikke rigtig se forskel på de to, selvom du kan se det på billedet af os sammen ovenfor.

Tak fordi du læste! Hvis du kan lide dette projekt, kan du være interesseret i nogle af mine andre:

  • 13 Ideer til diffusion af lysdioder
  • Spredt LED Strip Sign med Arduino/Bluetooth
  • YouTube -abonnenttæller med ESP8266
  • Let uendeligt spejl
  • 3 Begynder Arduino fejl

For at følge med i det, jeg arbejder på, skal du følge mig på YouTube, Instagram, Twitter og Pinterest.

Anbefalede: