Բովանդակություն:

Հեռակառավարվող լուսադիոդային աչքեր և կոստյում `7 քայլ (նկարներով)
Հեռակառավարվող լուսադիոդային աչքեր և կոստյում `7 քայլ (նկարներով)

Video: Հեռակառավարվող լուսադիոդային աչքեր և կոստյում `7 քայլ (նկարներով)

Video: Հեռակառավարվող լուսադիոդային աչքեր և կոստյում `7 քայլ (նկարներով)
Video: Վարը Վարենկ֊ Սեւադա Համբարչյան եւ Ռուզաննա Ղարաջյան 2024, Հուլիսի
Anonim

Բեքի Սթերն Հետևեք հեղինակի ավելին.

Տեսախցիկի գաղտնիության ընկեր
Տեսախցիկի գաղտնիության ընկեր
Տեսախցիկի գաղտնիության ընկեր
Տեսախցիկի գաղտնիության ընկեր
Կասետային չափեք Yagi ալեհավաքը 3D տպված զուգորդիչներով
Կասետային չափեք Yagi ալեհավաքը 3D տպված զուգորդիչներով
Կասետային չափեք Yagi ալեհավաքը 3D տպված զուգորդիչներով
Կասետային չափեք Yagi ալեհավաքը 3D տպված զուգորդիչներով
Կենդանակերպի ասեղնագործություն
Կենդանակերպի ասեղնագործություն
Կենդանակերպի ասեղնագործություն
Կենդանակերպի ասեղնագործություն

Օգտվողի մասին. Ստեղծելն ու կիսելը իմ երկու ամենամեծ կիրքերն են: Ընդհանուր առմամբ ես հարյուրավոր ձեռնարկներ եմ հրապարակել ամեն ինչի մասին ՝ միկրոկոնտրոլերներից մինչև տրիկոտաժ: Ես Նյու Յորքի մոտոցիկլավար և չզղջացող շան մայրիկ եմ: My wo… Ավելին bekathwia- ի մասին »

Երկվորյակ awավաս! Կրկնակի Օրկո! Երկու ուրվական կախարդներ Bubble-Bobble- ից: Այս զգեստի գլխարկը կարող է լինել ցանկացած LED աչքերով արարած, որը դուք կընտրեք ՝ պարզապես փոխելով գույները: Այս նախագիծը ես առաջին անգամ պատրաստեցի 2015 -ին ՝ շատ պարզ սխեմայով և կոդով, բայց այս տարի ես ցանկանում էի ստեղծել նորացված տարբերակ ՝ միաժամանակյա անիմացիոն հսկողությամբ երկու զգեստների վրա: Այս սխեման օգտագործում է մեկ պարզ, մոտ տարածության վրա գտնվող ՌԴ հեռակառավարիչ `երկու ընդունիչ նույն հաճախականությամբ կառավարելու համար, իսկ Arduino ծածկագիրը օգտագործում է ընդհատումներ` անիմացիայի արձագանքման փոփոխությունների հասնելու համար `հիմնվելով Բիլ Էրլի ուսուցողական կոդի վրա:

Այս նախագծի համար ձեզ հարկավոր է.

  • Երկու NeoPixel զարդեր
  • GEMMA M0 միկրոկառավարիչ
  • 315MHz անլար ընդունիչ, փակման տեսակը
  • 315 ՄՀց անլար ՌԴ հեռակառավարիչ չորս, երկու կամ մեկ կոճակով կազմաձևման մեջ
  • Սիլիկոնով պատված լար (խորհուրդ է տրվում 30awg)
  • Oldոդման երկաթ և զոդ
  • Մետաղալարեր
  • Լվացվող կտրիչներ
  • Պինցետ
  • Երրորդ ձեռքի գործիք (ըստ ցանկության)
  • Կարի կապում
  • Դերձակի կավիճ (ըստ ցանկության)
  • 19awg ցինկապատ պողպատե մետաղալար
  • Հաստ գործվածք գլխարկի/թիկնոցի համար (այս տարբերակի համար ես օգտագործել եմ երկու շերտ ծխախոտի սպիտակ կտոր և մեկ կտոր սպիտակ շոր, այնուհետև գլխարկի ներսը պատել եմ սևով ՝ լույսը փակելու համար)
  • Թափանցիկ սև գործվածք դեմքի վահանակի համար
  • Կարի մեքենա
  • Մկրատ
  • Ասեղ և թել
  • 3D տպիչ ճկուն թելերով (ըստ ցանկության)

Աշխատանքին հետևելու համար հետևեք ինձ YouTube- ում, Instagram- ում, Twitter- ում, Pinterest- ում և բաժանորդագրվեք իմ տեղեկագրին: Որպես Amazon Associate ես վաստակում եմ որակյալ գնումներից, որոնք դուք կատարում եք ՝ օգտագործելով իմ փոխկապակցված հղումները:

Նախքան սկսելը, գուցե ցանկանաք կարդալ հետևյալ նախադրյալները.

  • Ներկայացնում ենք Gemma M0- ը
  • NeoPixel Uberguide
  • Գլխարկի նախագծի առաջին տարբերակը (կառուցվել է 2015 թվականին ՝ դասական Gemma- ով և առանց անլար կառավարման)
  • Arduino pt 3 -ի բազմակի առաջադրանքներ

Քայլ 1. Շղթայի դիագրամ և ծածկագիր

Շղթայի դիագրամ և ծածկագիր
Շղթայի դիագրամ և ծածկագիր

Շղթայի միացումները հետևյալն են.

  • Gemma D2 անլար ստացող D0- ից
  • Gemma D0 անլար ընդունիչ D1- ին
  • Gemma 3V դեպի անլար ընդունիչ +5V
  • Gemma GND դեպի անլար ստացող GND և NeoPixel զարդեր GND
  • Gemma D1- ից NeoPixel գոհարի տվյալները IN
  • Gemma Vout դեպի NeoPixel զարդեր PWR
  • NeoPixel գոհարի տվյալները դուրս են եկել NeoPixel Jewel- ի այլ տվյալներից IN

Տեսեք հաջորդ քայլը հավաքման նշումների համար:

Կոդը հիմնված է Բիլ Էրլի Arduino ուրվագծի բազմակի առաջադրանքների վրա և փոփոխված ՝ երկու թվային մուտքով երկու NeoPixel զարդեր վերահսկելու համար: Այսպիսով, դուք չպետք է օգտագործեք անլար ընդունիչ- փոխարենը կարող եք օգտագործել կոճակները հենց սխեմայի վրա: Ներբեռնեք այս Arduino կոդի ֆայլը այս քայլի կցորդներից կամ պատճենեք և տեղադրեք այստեղից դատարկ Arduino ուրվագծի մեջ.

#ներառել «Adafruit_NeoPixel.h»

// Աջակցված օրինաչափությունների տեսակներ. Enum pattern {NONE, RAINBOW_CYCLE, THEATER_CHASE, COLOR_WIPE, SCANNER, FADE}; // Աջակցված հայրական ուղղություններին. Enum direction {FORWARD, REVERSE}; // NeoPattern Class - բխում է Adafruit_NeoPixel դասի դասից NeoPatterns: public Adafruit_NeoPixel {public: // Member Variables: pattern ActivePattern; // որ օրինաչափությունն է վազում ուղղություն Direction; // ուղղությունը գործարկելու օրինակը unsigned երկար ընդմիջում; // միլիվայրկյան թարմացումների միջև unsigned long last Update; // դիրքի վերջին թարմացում uint32_t Color1, Color2; // Ինչ գույներ են օգտագործվում uint16_t TotalSteps; // օրինակի uint16_t Index- ի քայլերի ընդհանուր թիվը; // ընթացիկ քայլ օրինակի դատարկության մեջ (*OnComplete) (); // Հետադարձ կապ նախշի ավարտին // Կոնստրուկտոր - կանչում է հիմնական դասի կոնստրուկտոր ՝ NeoPatterns շերտի սկզբնավորման համար (uint16_t պիքսելներ, uint8_t pin, uint8_t տեսակներ, անվավեր (*հետադարձ) ()). Adafruit_NeoPixel (պիքսելներ, քորոց, տեսակ) {OnComplete ետ Զանգիր; } // Թարմացրեք օրինաչափության անվավեր Update () {if ((millis () - lastUpdate)> Interval) // {lastUpdate = millis () թարմացնելու ժամանակը; անջատիչ (ActivePattern) {case RAINBOW_CYCLE: RainbowCycleUpdate (); ընդմիջում; գործ THEATER_CHASE: TheaterChaseUpdate (); ընդմիջում; գործ COLOR_WIPE: ColorWipeUpdate (); ընդմիջում; պատյան SCANNER: ScannerUpdate (); ընդմիջում; գործ FADE: FadeUpdate (); ընդմիջում; կանխադրված `ընդմիջում; }}} // Բարձրացրեք ինդեքսը և վերջում զրոյացրեք անվավեր Բարձրացում () {if (Direction == FORWARD) {Index ++; եթե (ինդեքս> = ընդհանուր քայլեր) {ինդեքս = 0; if (OnComplete! = NULL) {OnComplete (); // զանգահարեք մրցակցին հետադարձ}}} այլ // Ուղղություն == ԱՆՎԱՐ { -ինդեքս; եթե (ինդեքս <= 0) {ինդեքս = TotalSteps-1; if (OnComplete! = NULL) {OnComplete (); // զանգահարեք մրցակցային հետադարձ}}}} // Հակադարձ օրինակի ուղղություն անվավեր Հակադարձ () {եթե (Ուղղություն == ԱՌԱ) {Ուղղություն = ԱՆՎԱՐ; Exուցանիշ = TotalSteps-1; } else {Ուղղություն = ԱՌԱARD; Exուցանիշ = 0; }} // Initialize for a RainbowCycle void RainbowCycle (uint8_t interval, direction dir = FORWARD) {ActivePattern = RAINBOW_CYCLE; Ինտերվալ = ընդմիջում; Ընդհանուր քայլեր = 255; Exուցանիշ = 0; Ուղղություն = ռեժ. } // Թարմացրեք Rainbow Cycle Pattern անվավեր RainbowCycleUpdate () {for (int i = 0; i <numPixels (); i ++) {setPixelColor (i, Wheel (((i * 256 / numPixels ())+Index) & 255)); } ցուցադրում(); Ավելացում (); } // Initialize for theatre Chase void TheaterChase (uint32_t color1, uint32_t color2, uint8_t interval, direction dir = FORWARD) {ActivePattern = THEATER_CHASE; Ինտերվալ = ընդմիջում; TotalSteps = numPixels (); Գույն 1 = գույն 1; Գույն 2 = գույն 2; Exուցանիշ = 0; Ուղղություն = ռեժ. } // Թարմացնել Theatre Chase Pattern void TheaterChaseUpdate () {for (int i = 0; i <numPixels (); i ++) {if ((i+Index) % 3 == 0) {setPixelColor (i, Color1); } else {setPixelColor (i, Color2); } } ցուցադրում(); Ավելացում (); } // Initialize for ColorWipe void ColorWipe (uint32_t գույն, uint8_t ընդմիջում, ուղղություն dir = ԱՌԱARD) {ActivePattern = COLOR_WIPE; Ինտերվալ = ընդմիջում; TotalSteps = numPixels (); Գույն 1 = գույն; Exուցանիշ = 0; Ուղղություն = ռեժ. } // Թարմացնել Color Wipe Pattern void ColorWipeUpdate () {setPixelColor (Index, Color1); ցուցադրում(); Ավելացում (); } // Initialize SCANNNER void Scanner (uint32_t color1, uint8_t interval) {ActivePattern = SCANNER; Ինտերվալ = ընդմիջում; TotalSteps = (numPixels () - 1) * 2; Գույն 1 = գույն 1; Exուցանիշ = 0; } // Թարմացրեք Scanner Pattern void ScannerUpdate () {for (int i = 0; i > 1, Կանաչ (գույն) >> 1, Կապույտ (գույն) >> 1); վերադարձ dimColor; } // Բոլոր պիքսելները դնել գույնի վրա (սինխրոն) անվավեր ColorSet (uint32_t գույն) {for (int i = 0; i> 16) & 0xFF; } // Վերադարձնում է 32-բիթ գույնի Կանաչ բաղադրիչը uint8_t Կանաչ (uint32_t գույն) {վերադարձ (գույն >> 8) & 0xFF; } // Վերադարձնում է 32-բիթ գույնի Blue բաղադրիչը uint8_t Blue (uint32_t գույն) {return color & 0xFF; } // Գույնի արժեք ստանալու համար մուտքագրեք 0 -ից 255 արժեքը: // Գույները անցումային r - g - b - վերադառնալ r են: uint32_t Անիվ (բայթ WheelPos) {WheelPos = 255 - WheelPos; եթե (WheelPos <85) {վերադարձ գույնը (255 - WheelPos * 3, 0, WheelPos * 3); } else if (WheelPos <170) {WheelPos -= 85; վերադարձ Գույնը (0, WheelPos * 3, 255 - WheelPos * 3); } else {WheelPos -= 170; վերադարձ Գույնը (WheelPos * 3, 255 - WheelPos * 3, 0); }}}; void JewelsComplete (); // Սահմանեք որոշ NeoPatterns երկու օղակների և ձողի համար // ինչպես նաև որոշ ավարտական ռեժիմներ NeoPatterns Jewels (14, 1, NEO_GRBW + NEO_KHZ800 և JewelsComplete); const int ՊԱՀՈՍՏՈ 50ԹՅՈՆ = 50; // Նախաստորագրեք ամեն ինչ և պատրաստվեք սկսել void setup () {Serial.begin (115200); pinMode (2, Մուտք); pinMode (0, Մուտք); // Նախաստորագրեք Jewels.setBrightness- ի բոլոր պիքսելները (BRIGHTNESS); Jewels.begin (); // Սկսեք օրինակելի Jewels. TheaterChase (Jewels. Color (255, 50, 0), Jewels. Color (0, 0, 0, 50), 100); } // Հիմնական հանգույց void loop () {// Թարմացրեք զարդերը: Jewels. Update (); // Փոխել նախշերը կոճակի վրա. Եթե (digitalRead (2) == HIGH) // կոճակը #1 սեղմված է {Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = FADE; Jewels. TotalSteps = 100; Jewels. Interval = 1; } else if (digitalRead (0) == HIGH) // կոճակը #2 սեղմված է {Jewels. Color1 = Jewels. Color (255, 0, 0); Jewels. ActivePattern = ՈANՍԱՆՈ; Jewels. TotalSteps = Jewels.numPixels (); Jewels. Interval = 100; } else // Վերադառնալ բնականոն աշխատանքին {// Վերականգնել օրինակի բոլոր պարամետրերը նորմալ արժեքներին Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = THEATER_CHASE; Jewels. TotalSteps = Jewels.numPixels (); Jewels. Interval = 100; }} // ---------------------------------------------- -------------- // Ավարտման ռեժիմներ-զանգահարեք նախշի ավարտից հետո // ---------------------- -------------------------------------- // Jewels Completion Callback void JewelsComplete () {// Գույնի պատահական փոփոխություն հաջորդ սկանավորման համար //Jewels. Color1 = Jewels. Wheel (պատահական (255)); Elsարդեր. Հակադարձ (); }

Քայլ 2: Շրջանի հավաքում

Հավաքել շրջան
Հավաքել շրջան
Հավաքել շրջան
Հավաքել շրջան

Երրորդ ձեռքերից բռնող բռնակներ կարող են շատ պարզ և զվարճալի դարձնել բաղադրիչներին լարերի միացման գործընթացը: Բայց մի անհանգստացեք, եթե հավաքածու չունեք. Դուք միշտ կարող եք օգտագործել ժապավեն կամ պաստառի մածիկ `ձեր տախտակը ամրացնելու համար, մինչ կպչում եք:

Երկու NeoPixel զարդերի միջև միացումների համար օգտագործեք խճճված մետաղալարերի բարակ կտորներ (մոտ 6 դ/15 սմ երկարություն) (նախորդ քայլի դիագրամ): Եթե դուք օգտագործում եք չափազանց կարճ լարեր, դուք չեք կարողանա տեղադրել ձեր LED աչքերը բավականաչափ հեռու միմյանցից, և եթե դուք չափազանց շատ մետաղալարեր եք օգտագործում, զգեստները կրելու ընթացքում թուլությունը կհայտնվի ձեր դեմքին:

Հիմնական սխեման կապրի միջուկի հատվածում (որտեղ կրծքավանդակը հանդիպում է ուսին), ուստի շղթայի առաջին NeoPixel գոհարի և Gemma- ի միջև կապերի համար լարերը շատ ավելի երկար կլինեն: Դուք կարող եք մետաղալարը պահել ձեր աչքերի հատվածում և այն դուրս քաշել ՝ չափելու համար այն հեռավորությունը, որը մետաղալարն անցնում է, այնուհետև մի փոքր ավելացրեք թուլության և ապահովագրության համար:

Gemma- ի և անլար ստացողի միջև կապ հաստատելու համար ես նախընտրեցի օգտագործել տողերի նախատիպերի մետաղալարեր կանացի վերնագրերով, քանի որ անլար ընդունիչին արդեն կցված են վերնագրի կապում:

Քայլ 3: Մարտկոցի հզորություն

Մարտկոցի հզորություն
Մարտկոցի հզորություն
Մարտկոցի հզորություն
Մարտկոցի հզորություն

Շղթայի սնուցման համար ես օգտագործեցի 500 մԱ / ժ լիպոլիկ մարտկոց: Եթե օգտագործում եք լիպոլիկ մարտկոց, ապա խելամիտ է այն պաշտպանել քերծվածքներից, ծակելուց, քերծվածքներից, ճկումից և այլ չարաշահումներից: Դուք կարող եք այն փաթաթել ամուր գործվածքների ժապավենի մեջ կամ դրա համար պատրաստել 3D տպագիր պահարան:

Դուք կարող եք դրա փոխարեն հեշտությամբ օգտագործել 3xAAA կրիչ (այն գրպանում դրեք գրպանի փոխարեն):

Քայլ 4: Կարի ձև և կարի գործվածք

Կարի ձև և կտրող գործվածք
Կարի ձև և կտրող գործվածք

Ես օգտագործեցի նույն նախշը, որը ես ստեղծել էի այս տարազի առաջին տարբերակի համար, որը բազմաէջ PDF է, որը սալիկապատվում է ՝ նախշի կտորներ ստեղծելու համար:

Fալեք ձեր գործվածքը ՝ հավասարեցրեք թեք եզրերը ՝ հյուսվածքի հատիկը հավասարեցնելու համար և տեղադրեք/ամրացրեք նախշի կտորները ծալքի երկայնքով, ինչպես նշված է: Հետևեք կարի թույլատրելիությանը `նախշերի կտորներից (բացառությամբ ծալքի) մոտ 5/8 դյույմ/3 սմ չափման կավիճի կամ մատիտի միջոցով: Քանի որ իմ գործվածքը բարակ էր, ես ուզում էի այն կրկնապատկել, և քանի որ ես երկու գլխարկ էի պատրաստել, ես վերջացրեցի հիմնական կտորի յուրաքանչյուր նախշի կտորից չորսը, այնուհետև շղարշի կտորի մեկ այլ շերտ ՝ արտաքինին հյուսվածք հաղորդելու համար, և, ի վերջո, սև գործվածքների շերտ ՝ որպես ներս, որը կփակի մուտքը լույսը: Կարծում եմ, որ եթե ես դրա համար նախապես պլանավորած լինեի, կարող էի գցել նախնական սպիտակ շերտերից մեկը, և գլխարկները բաղկացած կլինեին ընդամենը երեք շերտից `չորսի փոխարեն:

Քայլ 5: Հավաքեք գործվածքների կտորներ

Հավաքեք գործվածքների կտորներ
Հավաքեք գործվածքների կտորներ
Հավաքեք գործվածքների կտորներ
Հավաքեք գործվածքների կտորներ
Հավաքեք գործվածքների կտորներ
Հավաքեք գործվածքների կտորներ
Հավաքեք գործվածքների կտորներ
Հավաքեք գործվածքների կտորներ

Յուրաքանչյուր նախշի կտորի վրա ամրացրեք և կարեք նետեր/ուսերի կարեր, այնուհետև գլխարկը և թիկնոցը հավասարեցրեք պարանոցի կարի երկայնքով ՝ աջ կողմերը միասին: Կպչեք կարը, ինչպես նաև կարը ուղիղ գլխարկի վերևում:

Փորձեք գլխարկը: Oldալեք և ամրացրեք գլխարկի հումքի առջևի ծայրը և կարեք այն ներքև ՝ ստեղծելով կոկիկ եզր, ինչպես նաև մետաղալարով անցնելու ալիք:

Հաջորդը, կտրեք թափանցիկ սև գործվածքից կլորավուն կտոր `ծածկույթի առջևը ծածկելու համար: Սա այն է, ինչը կաջակցի շրջանը և կթաքցնի ձեր դեմքը: Կափարիչը լավագույնս հարմարեցնելու համար ամրացրեք այն տեղում, այնուհետև ձեռքով կամ մեքենայով կարեք այն կափարիչի բացմանը:

Քայլ 6: Տեղադրեք միացում գլխարկի մեջ

Տեղադրեք Circuit- ը Hood- ում
Տեղադրեք Circuit- ը Hood- ում

Ես հագցրեցի գլխարկը, միացրեցի միացումը և հայելիով լուսավորեցի LED- ների լավագույն վայրը: Հետո ես քորոցներ նշեցի տեղերը և զգուշորեն կարեցի սև թել օգտագործելով ՝ ամրացնելով NeoPixel գոհարների ամրացման անցքերը սև առջևի վահանակին: Իմը նստած է իմ իսկական աչքերի տակ, ինչը հեշտացնում է նրանց կողքով տեսնելը:

Լվանալ և կրկնել, եթե երկրորդ գլխարկ եք պատրաստում:

Քայլ 7: Հագի՛ր այն:

Հագնի՛ր
Հագնի՛ր
Հագնի՛ր
Հագնի՛ր
Հագնի՛ր
Հագնի՛ր
Հագնի՛ր
Հագնի՛ր

Սրանք շատ զվարճալի են հագնել: Հեշտ է տեսնել դուրսը, և ուրիշների համար հեշտ չէ տեսնել ձեր դեմքը: Ամբողջ գործը նույնպես բավականին հարմարավետ է `շնորհիվ մեծ գլխարկի և մետաղալարերի շրջանակի, որը կանխում է առջևի գործվածքների երեսպատումը ձեր դեմքին:

Այս տարի ես և իմ ընկերուհին դրանք հագնում էինք DJ my hackerspace- ի Հելոուին երեկույթի ժամանակ, և մինչ ես տեսնում էի լազերային պրոյեկտորի ծրագրակազմի ինտերֆեյսը, նա չէր կարողանում պարզել Աբելթոնի փոքրիկ տեքստը, ուստի մենք ստիպված եղանք հարմարեցնել նրան: ավելի լավ տեսք: Ես գլխարկի վերին հատվածից հանեցի սև գործվածքների վահանակը և ծալեցի ավելցուկի վրա: Մութ սենյակում դուք իսկապես չէիք կարող տարբերակել երկուսի միջև, չնայած դա կարող եք տեսնել վերևում մեր համատեղ լուսանկարում:

Շնորհակալություն կարդալու համար: Եթե ձեզ դուր է գալիս այս նախագիծը, ապա ձեզ կարող են հետաքրքրել իմ մյուսներից մի քանիսը.

  • 13 գաղափար LED- ների տարածման համար
  • Iffրված LED շերտի նշան Arduino/Bluetooth- ով
  • YouTube բաժանորդների հաշվիչ ESP8266- ով
  • Անսահմանության հեշտ հայելի
  • 3 սկսնակ Arduino սխալներ

Աշխատանքին հետևելու համար հետևեք ինձ YouTube- ում, Instagram- ում, Twitter- ում և Pinterest- ում:

Խորհուրդ ենք տալիս: