Innholdsfortegnelse:

Fjernstyrte LED -øyne og kostymehette: 7 trinn (med bilder)
Fjernstyrte LED -øyne og kostymehette: 7 trinn (med bilder)

Video: Fjernstyrte LED -øyne og kostymehette: 7 trinn (med bilder)

Video: Fjernstyrte LED -øyne og kostymehette: 7 trinn (med bilder)
Video: Fjernstyrte LED telys m/laddestasjon 2024, November
Anonim

Av bekathwiaBecky SternFølg Mer av forfatteren:

Webkamera Personvernvenn
Webkamera Personvernvenn
Webkamera Personvernvenn
Webkamera Personvernvenn
Målebånd Yagi -antenne med 3D -trykte koblinger
Målebånd Yagi -antenne med 3D -trykte koblinger
Målebånd Yagi -antenne med 3D -trykte koblinger
Målebånd Yagi -antenne med 3D -trykte koblinger
Zodiac Broderi
Zodiac Broderi
Zodiac Broderi
Zodiac Broderi

Om: Å lage og dele er mine to største lidenskaper! Totalt har jeg publisert hundrevis av opplæringsprogrammer om alt fra mikrokontrollere til strikking. Jeg er en motorsyklist i New York City og hundemamma uten anger. My wo… Mer om bekathwia »

Twin Jawas! Dobbel Orko! To spøkelsesveivisere fra Bubble-Bobble! Denne kostymehetten kan være hvilken som helst LED-eyed skapning du velger bare ved å endre fargene. Jeg laget dette prosjektet først i 2015 med en veldig enkel krets og kode, men i år ønsket jeg å lage en oppgradert versjon med samtidig animasjonskontroll på tvers av to kostymer. Denne kretsen bruker en enkel RF-fjernkontroll på nært hold for å kontrollere to mottakere på samme frekvens, og Arduino-kode bruker avbrudd for å oppnå responsive animasjonsendringer, basert på Bill Earls opplæringskode.

For dette prosjektet trenger du:

  • To NeoPixel juveler
  • GEMMA M0 mikrokontroller
  • 315MHz trådløs mottaker, låsetype
  • 315MHz trådløs RF -fjernkontroll i fire, to eller en knapps konfigurasjon
  • Silikonbelagt strandet ledning (30awg anbefalt)
  • Loddejern og loddetinn
  • Wire strippere
  • Skyll kuttere
  • Pinsett
  • Hjelpe med tredjepartsverktøy (valgfritt)
  • Synål
  • Skreddersydd kritt (valgfritt)
  • 19awg galvanisert ståltråd
  • Tykt stoff for hette/kappe (for denne versjonen brukte jeg to lag hvit tobakksduk og ett lag hvit osteklut, deretter foret innsiden av hetten med solid svart for å blokkere lyset)
  • Gjennomsiktig svart stoff for ansiktspanel
  • Symaskin
  • Saks
  • Nål og tråd
  • 3D -skriver med fleksibelt filament (valgfritt)

For å holde tritt med det jeg jobber med, følg meg på YouTube, Instagram, Twitter, Pinterest og abonner på nyhetsbrevet mitt. Som Amazon Associate tjener jeg på kvalifiserte kjøp du gjør ved hjelp av tilknyttede lenker.

Før du begynner, vil du kanskje lese deg opp på følgende forutsetninger:

  • Vi presenterer Gemma M0
  • NeoPixel Uberguide
  • Første hetteprosjektversjon (bygget i 2015 med klassisk Gemma og ingen trådløs kontroll)
  • Multitasking av Arduino pt 3

Trinn 1: Kretsdiagram og kode

Kretsdiagram og kode
Kretsdiagram og kode

Kretsforbindelsene er som følger:

  • Gemma D2 til trådløs mottaker D0
  • Gemma D0 til trådløs mottaker D1
  • Gemma 3V til trådløs mottaker +5V
  • Gemma GND til trådløs mottaker 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 neste trinn for monteringsmerknader.

Koden er basert på Multi-tasking the Arduino sketch av Bill Earl, og modifisert for å kontrollere to NeoPixel juveler med to digitale innganger. Så du trenger ikke å bruke den trådløse mottakeren- du kan bruke knapper på selve kretsen i stedet. Last ned denne Arduino -kodefilen fra dette trinnets vedlegg, eller kopier og lim inn herfra i en tom Arduino -skisse:

#include "Adafruit_NeoPixel.h"

// Støttede mønstertyper: enum mønster {NONE, RAINBOW_CYCLE, THEATER_CHASE, COLOR_WIPE, SCANNER, FADE}; // Patern retninger støttes: enum retning {FORWARD, REVERSE}; // NeoPattern Class - avledet fra Adafruit_NeoPixel -klassen NeoPatterns: public Adafruit_NeoPixel {public: // Member Variables: pattern ActivePattern; // hvilket mønster som kjører retning Retning; // retning for å kjøre mønsteret usignert langt Intervall; // millisekunder mellom oppdateringer unsigned long lastUpdate; // siste oppdatering av posisjon uint32_t Color1, Color2; // Hvilke farger er i bruk uint16_t TotalSteps; // totalt antall trinn i mønsteret uint16_t Index; // gjeldende trinn i mønsterrommet (*OnComplete) (); // Tilbakeringing ved fullføring av mønster // Konstruktør - kaller grunnleggende konstruktør for å initialisere stripe NeoPatterns (uint16_t piksler, uint8_t pin, uint8_t type, void (*tilbakeringing) ()): Adafruit_NeoPixel (piksler, pin, type) {OnComplete = Ring tilbake; } // Oppdater mønsterrommet Oppdater () {if ((millis () - lastUpdate)> Intervall) // tid for å oppdatere {lastUpdate = millis (); switch (ActivePattern) {case RAINBOW_CYCLE: RainbowCycleUpdate (); gå i stykker; sak THEATER_CHASE: TheaterChaseUpdate (); gå i stykker; sak COLOR_WIPE: ColorWipeUpdate (); gå i stykker; case SCANNER: ScannerUpdate (); gå i stykker; case FADE: FadeUpdate (); gå i stykker; standard: pause; }}}} // Øk indeksen og tilbakestill på slutten tomrommet Inkrement () {if (Retning == FRAMÅT) {Index ++; if (Indeks> = Total trinn) {Indeks = 0; if (OnComplete! = NULL) {OnComplete (); // call the comlpetion callback}}} else // Retning == REVERSE {--Index; if (Index <= 0) {Index = TotalSteps-1; if (OnComplete! = NULL) {OnComplete (); // ring tilbake til tilbakekall}}}} // // Reverse pattern direction void Reverse () {if (Direction == FORWARD) {Direction = REVERSE; Indeks = Total trinn-1; } annet {Retning = FREMTID; Indeks = 0; }}} // Initialiser for et RainbowCycle -tomrom RainbowCycle (uint8_t intervall, retning dir = FORWARD) {ActivePattern = RAINBOW_CYCLE; Intervall = intervall; Total trinn = 255; Indeks = 0; Retning = dir; } // Oppdater Rainbow Cycle Pattern void RainbowCycleUpdate () {for (int i = 0; i <numPixels (); i ++) {setPixelColor (i, Wheel (((i * 256 / numPixels ())+Index) & 255))); } forestilling(); Inkrement (); } // Initialiser for et Theater Chase -tomrom TheaterChase (uint32_t color1, uint32_t color2, uint8_t interval, direction dir = FORWARD) {ActivePattern = THEATER_CHASE; Intervall = intervall; TotalSteps = numPixels (); Farge1 = farge1; Farge2 = farge2; Indeks = 0; Retning = dir; } // Oppdater Theater Chase Pattern void TheaterChaseUpdate () {for (int i = 0; i <numPixels (); i ++) {if ((i+Index) % 3 == 0) {setPixelColor (i, Color1); } annet {setPixelColor (i, Color2); } } forestilling(); Inkrement (); } // Initialiser for et ColorWipe -tomrom ColorWipe (uint32_t farge, uint8_t intervall, retning dir = FORWARD) {ActivePattern = COLOR_WIPE; Intervall = intervall; TotalSteps = numPixels (); Color1 = farge; Indeks = 0; Retning = dir; } // Oppdater Color Wipe Pattern void ColorWipeUpdate () {setPixelColor (Index, Color1); forestilling(); Inkrement (); } // Initialize for a SCANNNER void Scanner (uint32_t color1, uint8_t interval) {ActivePattern = SCANNER; Intervall = intervall; Total trinn = (numPixels () - 1) * 2; Farge1 = farge1; Indeks = 0; } // Oppdater Scanner Pattern void ScannerUpdate () {for (int i = 0; i > 1, grønn (farge) >> 1, blå (farge) >> 1); returner dimColor; } // Sett alle piksler til et farge (synkront) tomrom ColorSet (uint32_t farge) {for (int i = 0; i> 16) & 0xFF; } // Returnerer den grønne komponenten i en 32-biters farge uint8_t Green (uint32_t color) {return (color >> 8) & 0xFF; } // Returnerer den blå komponenten i en 32-biters farge uint8_t blå (uint32_t farge) {returfarge & 0xFF; } // Skriv inn verdien 0 til 255 for å få en fargeverdi. // Fargene er en overgang r - g - b - tilbake til r. uint32_t Wheel (byte WheelPos) {WheelPos = 255 - WheelPos; hvis (WheelPos <85) {returfarge (255 - WheelPos * 3, 0, WheelPos * 3); } annet hvis (WheelPos <170) {WheelPos -= 85; returfarge (0, WheelPos * 3, 255 - WheelPos * 3); } annet {WheelPos -= 170; returfarge (WheelPos * 3, 255 - WheelPos * 3, 0); }}}; void JewelsComplete (); // Definer noen NeoPatterns for de to ringene og pinnen // samt noen kompletteringsrutiner NeoPatterns Jewels (14, 1, NEO_GRBW + NEO_KHZ800, & JewelsComplete); const int LYSSTYRKE = 50; // Initialiser alt og forbered deg på å starte ugyldige oppsett () {Serial.begin (115200); pinMode (2, INNGANG); pinMode (0, INNGANG); // Initialiser alle pikslene 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 () {// Oppdater juvelene. Jewels. Update (); // Bytt mønster på et knappetrykk: if (digitalRead (2) == HIGH) // Knapp #1 trykket på {Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = FADE; Jewels. TotalSteps = 100; Juveler. Intervall = 1; } annet hvis (digitalRead (0) == HIGH) // Knapp #2 trykket på {Jewels. Color1 = Jewels. Color (255, 0, 0); Jewels. ActivePattern = SKANNER; Jewels. TotalSteps = Jewels.numPixels (); Juveler. Intervall = 100; } else // Tilbake til normal drift {// Gjenopprett alle mønsterparametere til normale verdier Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = THEATER_CHASE; Jewels. TotalSteps = Jewels.numPixels (); Juveler. Intervall = 100; }} // ---------------------------------------------- -------------- // Fullføringsrutiner-ring etter fullføring av et mønster // ---------------------- -------------------------------------- // Jewels Completion Callback void JewelsComplete () {// Tilfeldig fargeendring for neste skanning //Jewels. Color1 = Jewels. Wheel (tilfeldig (255)); Jewels. Reverse (); }

Trinn 2: Sett sammen kretsen

Sett sammen krets
Sett sammen krets
Sett sammen krets
Sett sammen krets

Et sett med hjelpende gripere for tredje hånd kan gjøre prosessen med lodding av ledninger til komponenter veldig grei og morsom. Men ikke bekymre deg hvis du ikke har et sett; du kan alltid bruke tape eller plakatsparkel for å holde brettet stabilt mens du lodder.

Bruk tynne biter av strandet wire (ca. 15 cm lang) for forbindelsene mellom de to NeoPixel -juvelene (diagram i forrige trinn). Hvis du bruker for korte ledninger, vil du ikke kunne plassere LED -øynene langt nok fra hverandre, og hvis du bruker for mye ledning, vil slakken komme i ansiktet ditt mens du har på deg drakten.

Hovedkretsen vil bo i reversområdet (der brystet møter skulderen), så for forbindelsene mellom den første NeoPixel -juvelen i kjeden og Gemma vil ledningene være mye lengre. Du kan holde ledningen opp til øyeområdet og trekke den ut for å måle avstanden tråden skal reise, og deretter legge til litt mer for slakk og forsikring.

For å koble mellom Gemma og den trådløse mottakeren, valgte jeg å bruke prototyper ledninger med kvinnelige overskrifter, siden den trådløse mottakeren allerede har header pins festet.

Trinn 3: Batteristrøm

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

For å drive kretsen brukte jeg et 500mAh lipoly -batteri. Hvis du bruker et lipoly -batteri, er det lurt å beskytte det mot riper, punktering, slitasje, bøyning og annet misbruk. Du kan pakke den inn i en solid stoffteip, eller lage en 3D -trykt holder til den.

Du kan enkelt bruke en 3xAAA -holder i stedet (ha den i lommen i stedet for inni innsiden).

Trinn 4: Symønster og skjærestoff

Symønster og klippe stoff
Symønster og klippe stoff

Jeg brukte det samme mønsteret jeg opprettet for den første versjonen av denne drakten, som er en flersidig PDF som fliser sammen for å lage mønsterbitene.

Brett stoffet, juster kantkantene for å justere stoffkorn, og legg/stift mønsterstykker langs brettet som merket. Spor et sømmonn utenfor mønsterbitene (bortsett fra brettet) på ca 5/8in/3cm med en markeringskritt eller blyant. Siden stoffet mitt var tynt, ønsket jeg å doble det, og siden jeg lagde to hetter, endte jeg med å kutte fire av hvert mønsterstykke i hovedstoffet, deretter et nytt lag i tykt osteklut for å legge til tekstur på utsiden, og til slutt en lag med svart stoff som foring for å blokkere lyset som kommer inn. Jeg tror at hvis jeg hadde planlagt det på forhånd, kunne jeg ha droppet et av de første hvite lagene og hettene ville ha bestått av bare tre lag hver i stedet for fire.

Trinn 5: Monter stoffstykker

Monter stoffstykker
Monter stoffstykker
Monter stoffstykker
Monter stoffstykker
Monter stoffstykker
Monter stoffstykker
Monter stoffstykker
Monter stoffstykker

Fest og sy dart/skuldersømmer på hvert mønsterstykke, og juster deretter hette og kappestykker langs halsen med høyre side sammen. Sy sømmen, samt en søm rett over toppen av hetten.

Prøv på hetten. Brett over og fest den rå forkanten av hetten og sy den ned for å lage en fin kant samt en kanal for en ledning å gå gjennom.

Deretter kutter du et rundaktig stykke rent svart stoff for å dekke fronten på hetten. Dette er det som vil støtte kretsen og skjule ansiktet ditt. Fest den på plass mens du bruker hetten for best passform, og sy den deretter med hånden eller maskinen til hetten.

Trinn 6: Installer kretsen i hetten

Installer krets i hette
Installer krets i hette

Jeg tok på panseret, skrudde på kretsen og brukte et speil for å finne den beste plasseringen for lysdiodene. Deretter brukte jeg pinner til å markere plasseringene og sy forsiktig med svart tråd, og festet monteringshullene på NeoPixel -juvelene til det sorte, svarte frontpanelet. Mine sitter like under mine virkelige øyne, noe som gjør det enkelt å se forbi dem.

Skyll og gjenta hvis du lager en ny hette.

Trinn 7: Bruk den

Bruk den!
Bruk den!
Bruk den!
Bruk den!
Bruk den!
Bruk den!
Bruk den!
Bruk den!

Disse er så morsomme å ha på. Det er lett å se ut, og ikke lett for andre å se ansiktet ditt. Det hele er ganske behagelig også, takket være den store hetten og trådrammen, som forhindrer at stoffet i fronten henger i ansiktet ditt.

Kjæresten min og jeg brukte disse til DJ -hackerspace's Halloween -fest i år, og mens jeg kunne se grensesnittet for laserprojektorprogramvaren, kunne han ikke helt finne ut den lille teksten i Abelton, så vi måtte tilpasse ham til å ha en bedre utsikt. Jeg fjernet det svarte stoffpanelet fra den øvre delen av hetten, og brettet over overflødig. I et mørkt rom kunne du egentlig ikke se forskjellen mellom de to, selv om du kan se det på bildet av oss sammen ovenfor.

Takk for at du leste! Hvis du liker dette prosjektet, kan du være interessert i noen av mine andre:

  • 13 ideer for diffusjon av lysdioder
  • Spredt LED -stripeskilt med Arduino/Bluetooth
  • YouTube -abonnentteller med ESP8266
  • Enkelt uendelig speil
  • 3 Arduino -feil for nybegynnere

For å holde tritt med det jeg jobber med, følg meg på YouTube, Instagram, Twitter og Pinterest.

Anbefalt: