Innehållsförteckning:

Fjärrstyrda LED -ögon och kostymhuv: 7 steg (med bilder)
Fjärrstyrda LED -ögon och kostymhuv: 7 steg (med bilder)

Video: Fjärrstyrda LED -ögon och kostymhuv: 7 steg (med bilder)

Video: Fjärrstyrda LED -ögon och kostymhuv: 7 steg (med bilder)
Video: Batman Arkham Knight Gameplay Walkthrough [Full Game Movie - All Cutscenes Longplay] No Commentary 2024, Juli
Anonim

Av bekathwiaBecky SternFölj mer av författaren:

Webbkamera Sekretessvän
Webbkamera Sekretessvän
Webbkamera Sekretessvän
Webbkamera Sekretessvän
Måttband Yagi -antenn med 3D -tryckta kopplingar
Måttband Yagi -antenn med 3D -tryckta kopplingar
Måttband Yagi -antenn med 3D -tryckta kopplingar
Måttband Yagi -antenn med 3D -tryckta kopplingar
Zodiac Broderi
Zodiac Broderi
Zodiac Broderi
Zodiac Broderi

Om: Att göra och dela är mina två största passioner! Totalt har jag publicerat hundratals självstudier om allt från mikrokontroller till stickning. Jag är en motorcyklist i New York och en hund som inte ångrar mig. My wo… Mer om bekathwia »

Twin Jawas! Dubbel Orko! Två spökguider från Bubble-Bobble! Denna kostymhuva kan vara vilken som helst LED-eyed varelse du väljer bara genom att ändra färger. Jag gjorde det här projektet först 2015 med en mycket enkel krets och kod, men i år ville jag skapa en uppgraderad version med samtidig animeringskontroll över två kostymer. Denna krets använder en enkel RF-fjärrkontroll på nära håll för att styra två mottagare på samma frekvens, och Arduino-kod använder avbrott för att uppnå responsiva animationsförändringar, baserat på Bill Earls självstudiekod.

För detta projekt behöver du:

  • Två NeoPixel juveler
  • GEMMA M0 mikrokontroller
  • 315MHz trådlös mottagare, låstyp
  • 315MHz trådlös RF -fjärrkontroll i fyra, två eller en knapps konfiguration
  • Silikonbelagd trådad tråd (rekommenderas 30awg)
  • Lödkolv och löd
  • Wire strippers
  • Spola fräsar
  • Pincett
  • Hjälpverktyg för tredje hand (tillval)
  • Sömnålar
  • Skräddarsydda krita (valfritt)
  • 19awg galvaniserad ståltråd
  • Tjockt tyg för huva/cape (för den här versionen använde jag två lager vit tobaksduk och ett lager vit ostduk, sedan fodrade insidan av huven med fast svart för att blockera ljuset)
  • Genomskinligt svart tyg för ansiktspanel
  • Symaskin
  • Sax
  • Nål och tråd
  • 3D -skrivare med flexibel filament (tillval)

För att hänga med i det jag jobbar med, följ mig på YouTube, Instagram, Twitter, Pinterest och prenumerera på mitt nyhetsbrev. Som Amazon Associate tjänar jag på kvalificerade köp som du gör med mina länkar.

Innan du börjar kanske du vill läsa om följande förutsättningar:

  • Vi presenterar Gemma M0
  • NeoPixel Uberguide
  • Första huva -projektversionen (byggd 2015 med klassisk Gemma och ingen trådlös kontroll)
  • Multitasking av Arduino pt 3

Steg 1: Kretsdiagram och kod

Kretsdiagram och kod
Kretsdiagram och kod

Kretsanslutningarna är följande:

  • Gemma D2 till trådlös mottagare D0
  • Gemma D0 till trådlös mottagare D1
  • Gemma 3V till trådlös mottagare +5V
  • Gemma GND till trådlös mottagare GND och NeoPixel juveler GND
  • Gemma D1 till NeoPixel juveldata IN
  • Gemma Vout till NeoPixel juveler PWR
  • NeoPixel juvel data OUT till andra NeoPixel Jewel data IN

Se nästa steg för monteringsanvisningar.

Koden är baserad på Multi-tasking Arduino-skissen av Bill Earl och modifierad för att styra två NeoPixel-juveler med två digitala ingångar. Så du behöver inte använda den trådlösa mottagaren- du kan använda knappar på själva kretsen istället. Ladda ner denna Arduino -kodfil från detta stegs bilagor, eller kopiera och klistra in härifrån i en tom Arduino -skiss:

#inkludera "Adafruit_NeoPixel.h"

// Mönstertyper som stöds: enum -mönster {NONE, RAINBOW_CYCLE, THEATER_CHASE, COLOR_WIPE, SCANNER, FADE}; // Patern riktningar som stöds: enum riktning {FORWARD, REVERSE}; // NeoPattern Class - härledd från Adafruit_NeoPixel klassklassen NeoPatterns: public Adafruit_NeoPixel {public: // Member Variables: pattern ActivePattern; // vilket mönster som körs riktning Riktning; // riktning för att köra mönstret osignerat långt intervall; // millisekunder mellan uppdateringar unsigned long lastUpdate; // senaste uppdateringen av position uint32_t Color1, Color2; // Vilka färger används uint16_t TotalSteps; // totalt antal steg i mönstret uint16_t Index; // aktuellt steg inom mönsterrummet (*OnComplete) (); // Återuppringning efter avslutat mönster // Konstruktör - kallar konstruktör i basklass för att initiera remsa NeoPatterns (uint16_t pixlar, uint8_t pin, uint8_t typ, void (*callback) ()): Adafruit_NeoPixel (pixlar, stift, typ) {OnComplete = ring tillbaka; } // Uppdatera mönstret tomrum Uppdatering () {if ((millis () - lastUpdate)> Intervall) // tid att uppdatera {lastUpdate = millis (); switch (ActivePattern) {case RAINBOW_CYCLE: RainbowCycleUpdate (); ha sönder; fall THEATER_CHASE: TheaterChaseUpdate (); ha sönder; fall COLOR_WIPE: ColorWipeUpdate (); ha sönder; case SCANNER: ScannerUpdate (); ha sönder; fall FADE: FadeUpdate (); ha sönder; standard: paus; }}}} // Öka indexet och återställ i slutet tomrummet Inkrement () {if (Riktning == FRAMÅT) {Index ++; if (Index> = Totalsteg) {Index = 0; if (OnComplete! = NULL) {OnComplete (); // call the comlpetion callback}}} else // Direction == REVERSE {--Index; if (Index <= 0) {Index = TotalSteps-1; if (OnComplete! = NULL) {OnComplete (); // ringa till återuppringning}}}} // Omvänd mönsterriktning ogiltig Omvänd () {om (Riktning == FRAMÅT) {Riktning = Baksida; Index = TotalSteps-1; } annat {Riktning = FRAMÅT; Index = 0; }} // Initiera för ett RainbowCycle -tomrum RainbowCycle (uint8_t -intervall, riktning dir = FORWARD) {ActivePattern = RAINBOW_CYCLE; Intervall = intervall; Totalsteg = 255; Index = 0; Riktning = dir; } // Uppdatera Rainbow Cycle Pattern void RainbowCycleUpdate () {för (int i = 0; i <numPixels (); i ++) {setPixelColor (i, Wheel (((i * 256 / numPixels ())+Index) & 255))); } show(); Ökning(); } // Initiera för en Theater Chase void TheaterChase (uint32_t color1, uint32_t color2, uint8_t intervall, riktning dir = FORWARD) {ActivePattern = THEATER_CHASE; Intervall = intervall; TotalSteps = numPixels (); Färg1 = färg1; Color2 = color2; Index = 0; Riktning = dir; } // Uppdatera Theater Chase Pattern void TheaterChaseUpdate () {för (int i = 0; i <numPixels (); i ++) {if ((i+Index) % 3 == 0) {setPixelColor (i, Color1); } annat {setPixelColor (i, Color2); } } show(); Ökning(); } // Initiera för ett ColorWipe -tomrum ColorWipe (uint32_t färg, uint8_t intervall, riktning dir = FORWARD) {ActivePattern = COLOR_WIPE; Intervall = intervall; TotalSteps = numPixels (); Color1 = färg; Index = 0; Riktning = dir; } // Uppdatera Color Wipe Pattern void ColorWipeUpdate () {setPixelColor (Index, Color1); show(); Ökning(); } // Initiera för en SCANNNER void Scanner (uint32_t color1, uint8_t intervall) {ActivePattern = SCANNER; Intervall = intervall; TotalSteps = (numPixels () - 1) * 2; Färg1 = färg1; Index = 0; } // Uppdatera Scanner Pattern void ScannerUpdate () {for (int i = 0; i > 1, grön (färg) >> 1, blå (färg) >> 1); returnera dimColor; } // Ställ in alla pixlar till en färg (synkront) tom ColorSet (uint32_t färg) {för (int i = 0; i> 16) & 0xFF; } // Returnerar den gröna komponenten i en 32-bitars färg uint8_t grön (uint32_t färg) {return (färg >> 8) & 0xFF; } // Returnerar den blå komponenten i en 32-bitars färg uint8_t Blue (uint32_t color) {return color & 0xFF; } // Ange ett värde 0 till 255 för att få ett färgvärde. // Färgerna är en övergång r - g - b - tillbaka till r. uint32_t Wheel (byte WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {return Color (255 - WheelPos * 3, 0, WheelPos * 3); } annat om (WheelPos <170) {WheelPos -= 85; returfärg (0, WheelPos * 3, 255 - WheelPos * 3); } annat {WheelPos -= 170; returfärg (WheelPos * 3, 255 - WheelPos * 3, 0); }}}; void JewelsComplete (); // Definiera några NeoPatterns för de två ringarna och stickan // samt några kompletteringsrutiner NeoPatterns Jewels (14, 1, NEO_GRBW + NEO_KHZ800, & JewelsComplete); const int LJUSSTYRKA = 50; // Initiera allt och förbered dig på att starta tomrumsinställning () {Serial.begin (115200); pinMode (2, INPUT); pinMode (0, INPUT); // Initiera alla pixlar Jewels.setBrightness (BRIGHTNESS); Jewels.begin (); // Starta ett mönster Jewels. TheaterChase (Jewels. Color (255, 50, 0), Jewels. Color (0, 0, 0, 50), 100); } // Main loop void loop () {// Uppdatera juvelerna. Jewels. Update (); // Byt mönster på en knapptryckning: if (digitalRead (2) == HIGH) // Knapp #1 nedtryckt {Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = FADE; Jewels. TotalSteps = 100; Juveler. Intervall = 1; } annars om (digitalRead (0) == HIGH) // Knapp #2 tryckte på {Jewels. Color1 = Jewels. Color (255, 0, 0); Jewels. ActivePattern = SCANNER; Jewels. TotalSteps = Jewels.numPixels (); Juveler. Intervall = 100; } else // Tillbaka till normal drift {// Återställ alla mönsterparametrar till normala värden Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = THEATER_CHASE; Jewels. TotalSteps = Jewels.numPixels (); Juveler. Intervall = 100; }} // ---------------------------------------------- -------------- // Kompletteringsrutiner-ring efter att ett mönster har slutförts // ---------------------- -------------------------------------- // Jewels Completion Callback void JewelsComplete () {// Slumpmässig färgändring för nästa skanning //Jewels. Color1 = Jewels. Wheel (random (255)); Jewels. Reverse (); }

Steg 2: Montera krets

Montera krets
Montera krets
Montera krets
Montera krets

En uppsättning hjälpande gripare för tredje hand kan göra processen med att lödtrådar till komponenter mycket enkel och rolig. Men oroa dig inte om du inte har en uppsättning; du kan alltid använda lite tejp eller affischspackel för att hålla ditt bräde stadigt medan du lödder.

Använd tunna bitar av strängad tråd (cirka 6 tum/15 cmin längd) för anslutningarna mellan de två NeoPixel -juvelerna (diagram i föregående steg). Om du använder för korta ledningar kommer du inte att kunna placera dina LED -ögon tillräckligt långt ifrån varandra, och om du använder för mycket tråd kommer slacken i ansiktet medan du bär kostymen.

Huvudkretsen kommer att bo i kappområdet (där bröstet möter din axel), så för anslutningarna mellan den första NeoPixel -juvelen i kedjan och Gemma blir trådarna mycket längre. Du kan hålla tråden upp mot ditt ögonområde och dra ut den för att mäta avståndet som tråden ska resa, och lägg sedan till lite mer för slack och försäkring.

För att ansluta mellan Gemma och den trådlösa mottagaren valde jag att använda prototypkablar med honhuvud, eftersom den trådlösa mottagaren redan har sidhuvudstiften anslutna.

Steg 3: Batteriström

Batterikraft
Batterikraft
Batterikraft
Batterikraft

För att driva kretsen använde jag ett 500mAh lipolibatteri. Om du använder ett lipolibatteri är det klokt att skydda det mot repor, punktering, nötning, böjning och annat missbruk. Du kan linda in den i en rejäl tygtejp eller göra en 3D -tryckt hållare till den.

Du kan enkelt använda en 3xAAA -hållare istället (bär den i fickan istället för inuti lapel).

Steg 4: Symönster och skärmaterial

Sömönster och skärmaterial
Sömönster och skärmaterial

Jag använde samma mönster som jag skapade för den första versionen av den här kostymen, som är en PDF med flera sidor som samlas för att skapa mönsterbitarna.

Vik tyget, rikta in kantkanterna för att anpassa tygkornen och placera/stiftmönsterbitar längs vikningen som markerat. Spåra en sömsmån utanför mönsterbitarna (förutom vikningen) på ca 5/8in/3cm med en markeringskrita eller penna. Eftersom mitt tyg var tunt ville jag fördubbla det, och eftersom jag gjorde två huvar slutade jag med att klippa fyra av varje mönsterbit i huvudtyget, sedan ytterligare ett lager i tjock cheesecloth för att lägga till textur på utsidan, och slutligen en lager av svart tyg som ett foder för att blockera ljuset som kommer in. Jag tror att om jag hade planerat i förväg för det hade jag kunnat tappa ett av de första vita lagren och huvarna skulle ha bestått av bara tre lager vardera istället för fyra.

Steg 5: Montera tygstycken

Montera tygstycken
Montera tygstycken
Montera tygstycken
Montera tygstycken
Montera tygstycken
Montera tygstycken
Montera tygstycken
Montera tygstycken

Stift och sy pilar/axelsömmar på varje mönsterbit, rikta sedan huva och cape -bitar längs nacksömmen med höger sida tillsammans. Sy sömmen, liksom en söm rakt över toppen av huven.

Prova på huven. Vik över och kläm fast huvens främre kant och sy ihop den för att skapa en snygg kant samt en kanal för en tråd att gå igenom.

Klipp sedan en rund rund bit av svart tyg för att täcka huven på framsidan. Detta är vad som kommer att stödja kretsen och dölja ditt ansikte. Fäst den på plats medan du bär huven för bästa passform, sedan sy eller hand sy den till huven öppning.

Steg 6: Installera kretsen i huven

Installera kretsen i huven
Installera kretsen i huven

Jag satte på huven, slog på kretsen och använde en spegel för att hitta den bästa platsen för lysdioderna. Sedan använde jag stiften för att markera platserna och sydde försiktigt med svart tråd, fäst monteringshålen på NeoPixel -juvelerna på den svarta svarta frontpanelen. Mina sitter precis under mina riktiga ögon, vilket gör det lätt att se förbi dem.

Skölj och upprepa om du gör en andra huva.

Steg 7: Bär den

Bär det!
Bär det!
Bär det!
Bär det!
Bär det!
Bär det!
Bär det!
Bär det!

Dessa är så roliga att ha på sig. Det är lätt att se ut, och inte lätt för andra att se ditt ansikte. Det hela är också ganska bekvämt, tack vare den överdimensionerade huvan och trådramen, som hindrar det främre tyget från att draperas i ansiktet.

Min pojkvän och jag bar dessa till DJ min hackerspace Halloween -fest i år, och medan jag kunde se gränssnittet för laserprojektorprogramvaran kunde han inte riktigt ta fram den lilla texten i Abelton, så vi var tvungna att anpassa hans för att ha en bättre sikt. Jag tog bort den svarta tygpanelen från den övre delen av huven och vik över överskottet. I ett mörkt rum kunde du inte riktigt se skillnaden mellan de två, även om du kan se det på fotot av oss tillsammans ovan.

Tack för att du läser! Om du gillar det här projektet kan du vara intresserad av några av mina andra:

  • 13 idéer för spridning av lysdioder
  • Diffuserad LED Strip Sign med Arduino/Bluetooth
  • YouTubes prenumerationsräknare med ESP8266
  • Easy Infinity Mirror
  • 3 Arduino -misstag för nybörjare

Följ mig på YouTube, Instagram, Twitter och Pinterest för att hålla koll på vad jag arbetar med.

Rekommenderad: