Բովանդակություն:
- Քայլ 1: Անհրաժեշտ մասեր
- Քայլ 2: Փոփոխեք գլխարկը
- Քայլ 3: Լարացրեք այն
- Քայլ 4: Programրագրավորում
- Քայլ 5. Ընդլայնված և կամընտիր. Կոդի ներսում
Video: Fancy LED գլխարկ. 5 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:50
Ես միշտ ցանկացել եմ կատարել Arduino- ի նախագիծ, բայց երբեք չեմ ունեցել որևէ հիանալի գաղափար, քանի դեռ ընտանիքս չի հրավիրվել շքեղ գլխարկի երեկույթի: Երկու շաբաթ տևողությամբ ես հետաքրքրվեցի, թե կարո՞ղ եմ պլանավորել և կատարել շարժման նկատմամբ զգայուն LED անիմացիոն գլխարկ: Պարզվեց, ես կարող էի! Ես հավանաբար մի փոքր չափն անցա, բայց ընդհանուր նախագիծը արժեցավ մոտ $ 80: Փորձերի և որոշ կոդավորման միջոցով դուք կարող եք դա անել ավելի քիչ ծախսերի համար:
Գլխարկով գոլը հետևյալն էր.
- Թող մի շարք լույսեր շարժվեն գլխարկի կենտրոնական առջևից դեպի հետև, մեկական լույս յուրաքանչյուր կողմից
- Փոխեք լույսի ճամփորդության արագությունը, որը թելադրված է գլխարկի թեքությամբ առջևից ետ
- Թույլ տվեք լույսերը հետ շրջվել, երբ գլխարկի գոտին թեքված էր դեպի ներքև (այսինքն ՝ նմանակեք լույսի վրա ձգողության ազդեցությունը)
- Փոխեք գույնը ՝ հիմնվելով գլխարկի թեքության վրա ձախից աջ
- Enseգացեք ցնցումները և ցուցադրեք հատուկ էֆեկտ
- Sգացեք, թե ինչպես է կրողը պտտվում և ցուցադրեք հատուկ էֆեկտ
- Թող այն ամբողջությամբ պարունակվի գլխարկի մեջ
Քայլ 1: Անհրաժեշտ մասեր
Ես օգտագործեցի հետևյալ հիմնական բաղադրիչները (Amazon- ի ոչ առևտրային հղումները ներառված են).
- Teensy LC միկրոկոնտրոլեր - Ես դա ընտրեցի սովորական Arduino- ի պատճառով `իր փոքր չափի պատճառով, և այն հատուկ կապ ուներ իմ LED- ները վերահսկելու համար, ինչպես նաև գրադարանի և համայնքի հզոր աջակցություն:
- Bosch BNO055- ի վրա հիմնված դիրքային տվիչ - անկեղծ ասած, առաջիններից մեկը, որի վրա ես գտա փաստաթղթեր: Կան շատ ավելի էժան տարբերակներ, սակայն Bosch- ը պարզելուց հետո դա ձեզ համար շատ բան է անում, ինչ հակառակ դեպքում ստիպված կլինեիք անել ծածկագրով:
- WS2812 հասցեական LED ժապավեն. Այդ խտությունն ունենալն օգնում է, որ լույսն ավելի շատ շարժման տեսք ունենա, քան առանձին տարրեր, որոնք հաջորդաբար լուսավորվում են:
Եվ հետևյալ աննշան բաղադրիչները.
- Գլխարկ - ցանկացած գլխարկ գլխարկով կանի: Սա 6 դոլար արժողությամբ գլխարկ է տեղական խանութից: Եթե հետևի մասում կար կար, ապա ավելի հեշտ կլինի անցնել լարերը: Ուշադրություն դարձրեք, եթե գլխարկը կպցված է, քանի որ դա նույնպես լրացուցիչ դժվարություններ կառաջացնի: Այս մեկը կարված է վերևի երկայնքով, բայց ներքևը հեշտությամբ վեր է քաշվում:
- 4.7K Օմ ռեզիստորներ
- 3x AAA մարտկոցի պատյան - 3 AAA մարտկոցի օգտագործումը լարում է էլեկտրոնիկայի ցանկալի տիրույթում, ինչը հեշտացնում է իրերը: AAA- ն ավելի հեշտ է տեղավորվում գլխարկի մեջ, քան AA- ն և դեռ ունի հիանալի աշխատաժամանակ:
- Փոքր չափիչ մետաղալար - ես օգտագործեցի մի պինդ մետաղալար, որը ես դրել էի նախորդ LED նախագծից:
- Oldոդման երկաթ և զոդ
- Որոշ սպանդեքս, որը համապատասխանում է գլխարկի ներքին գույնին և թելին
Առաջարկվող, բայց ոչ պարտադիր.
- Մարտկոցի լարերի արագ միակցիչներ
- Hands Helping գործիք, այս իրերը շատ փոքր են և դժվար է զոդել
Քայլ 2: Փոփոխեք գլխարկը
Էլեկտրոնիկայի տեղադրման համար ձեզ հարկավոր կլինի գլխարկի տեղ և մարտկոցի տեղ: Կինս պրոֆեսիոնալ է աշխատում հագուստի հետ, ուստի ես նրան խորհուրդ և օգնություն խնդրեցի: Մենք ավարտեցինք սպանդեքսով երկու գրպանների ստեղծումը: Առաջին փոքր գրպանը դեպի առջև ուղղված է հենց գլխարկի նման, այնպես որ էլեկտրոնիկայի տեղադրման ժամանակ դիրքի տվիչը բավականին լավ է պահվում տեղում, սակայն անհրաժեշտության դեպքում կարող է հեշտությամբ հեռացվել: Երկրորդ գրպանը դեպի հետևի կողմը մարտկոցի տուփը տեղում պահելն է:
Գրպանները սերմանվում էին թելերով, որոնք համապատասխանում էին գլխարկի գույնին, ամբողջ երկարությունը ՝ թագի գիծը: Կախված գլխարկի և նյութի ոճից, այն պատրաստված է YMMV- ից այս տեխնիկայով:
Մենք նաև հայտնաբերեցինք, որ գլխարկի ժապավենը մի կողմից խրված է իր մեջ, և այն ամբողջովին կարված էր այդ վայրում գտնվող գլխարկին: Մենք ստիպված էինք հեռացնել սկզբնական կարը, որպեսզի LED- ները գործարկենք ժապավենի տակ: Շինարարության ընթացքում այն ամրացված էր կապում, այնուհետև կարվելուց հետո կարվեց համապատասխան թելով:
Վերջապես մենք բացեցինք գլխարկի հետևի կարը, եթե այն ծածկված էր խմբի կողմից: Մենք կպցրեցինք մետաղալարերը, որոնք LED- ների հետ գալիս էին այդ կարի միջով և գծեցինք ժապավենի առաջին LED- ը, որը հենց կարի վրա էր: Այնուհետև մենք LED- ները փաթաթեցինք գլխարկի շուրջը և շերտը կտրեցինք ներքև, որպեսզի վերջին LED- ը լինի առաջինի կողքին: LED շերտը կարող է ամրացվել գլխարկի ժապավենով, սակայն կախված ձեր ժապավենից և նյութից, ձեզ կարող է անհրաժեշտ լինել LED- ները ամրացնելու կամ կարելու միջոցով:
Քայլ 3: Լարացրեք այն
Teensy տախտակը և LED- ները կաշխատեն 3.3 վ -ից մինչև 5 վ լարման էներգիայի հետ: Ահա թե ինչու ես ընտրեցի օգտագործել 3 AAA մարտկոց, 4.5 վ ելքային լարումը գեղեցիկ է այդ տիրույթում, և նրանք ունեն շատ աշխատաժամանակ, որով ես ծրագրավորել եմ LED- ները աշխատելու համար: Դուք պետք է կարողանաք ավելի լավ աշխատել, քան 8 ժամ:
Էլեկտրաէներգիայի միացում
Ես միացրել եմ մարտկոցի տուփի և LED- ների դրական և բացասական հաղորդալարերը, այնուհետև կպցրել Teensy- ին համապատասխան վայրերում: Մարտկոցից ստացված դրականը պետք է միացված լինի դիագրամում Teensy- ի վերևի աջ քորոցին (պիտակով գրատախտակին ՝ Vin), իսկ բացասականը կարելի է միացնել GND պիտակով ցանկացած քորոցին: Հարմար է մեկը, որը գտնվում է անմիջապես տախտակի հակառակ կողմում, կամ անմիջապես Vin քորոցի կողքին: Գրատախտակի ամբողջական գծանշման դիագրամը կարելի է գտնել այս էջի ներքևում: Եվ որոշ դեպքերում տախտակը պատվիրելիս ներառվում է թղթային պատճենը:
Եթե պլանավորում եք միացնել մի քանի կոդ, որոնք միանգամից մի քանի լուսադիոդներ են միացրել, կարող եք LED- ները միացնել Teensy- ին ՝ օգտագործելով 3.3 վ ելք և GND, սակայն, եթե փորձեք չափազանց մեծ էներգիա քաշել, կարող եք վնասել տախտակը: Այսպիսով, ինքներդ ձեզ առավելագույն տարբերակներ տալու համար լավագույնն այն է, որ LED- ները ուղղակիորեն միացնեք մարտկոցի աղբյուրին:
LED- ների միացում
Այս նախագծի համար ընտրեցի Teensy LC- ն, քանի որ այն ունի քորոց, որը շատ ավելի հեշտ է դարձնում հասցեագրվող LED- ների լարերը: Գրատախտակի ներքևի մասում ձախից հայելիներից երկրորդը ՝ քորոց #17, բայց դրա վրա կա նաև 3.3 վ: Սա կոչվում է քաշքշուկ, իսկ մյուս տախտակների վրա այդ լարումը ապահովելու համար հարկավոր է միացնել ռեզիստոր: Teensy LC- ի դեպքում կարող եք պարզապես կապել այդ քորոցից ուղիղ դեպի ձեր LED լուսադիոդային տվյալները:
Տեղադրման տվիչի միացում
Առկա BNO055 տախտակներից մի քանիսը շատ ավելի խիստ են լարման նկատմամբ և ցանկանում են միայն 3.3 վ: Դրա պատճառով ես Vin- ը միացրեցի BNO055 տախտակի վրա Teensy- ի նվիրված 3.3v ելքից, որը 3 -րդ կապն է աջից ներքև: Այնուհետեւ կարող եք BNO055- ի GND- ը միացնել Teensy- ի ցանկացած GND- ին:
BNO055 դիրքի սենսորը օգտագործում է I2c- ը Teensy- ի հետ խոսելու համար: I2c- ն պահանջում է քաշքշուկներ, այնպես որ Teensy- ի 3.3 վ ելքից երկու 4.7 Օմ դիմադրիչ միացրեցի 18-րդ և 19-րդ կապում, այնուհետև 19-րդ կապը միացրեցի BNO055 տախտակի SCL կապին, իսկ 18-ը `SDA կապին:
Հաղորդալարերի խորհուրդներ/հնարքներ
Այս նախագիծն իրականացնելու համար ես օգտագործեցի պինդ մետաղալար, այլ ոչ թե խրված: Պինդ մետաղալարերի մեկ առավելություն է նմանատիպ տախտակների զոդման ժամանակ: Կարող եք պոկել մի մետաղալար, թեքել այն 90 աստիճանի և տեղադրել այն տերմինալներից մեկի ներքևի մասում, այնպես, որ մետաղալարերի կտրված ծայրը կպչում է ձեր տախտակից վերև: Այնուհետև տերմինալին պահելու համար ձեզ հարկավոր է միայն մի փոքր քանակությամբ զոդ, և կարող եք հեշտությամբ կտրել ավելցուկը:
Պինդ մետաղալարերի հետ աշխատելը կարող է ավելի դժվար լինել, քանի որ ձգտում է մնալ այնպես, ինչպես թեքված է: Սակայն այս նախագծի համար դա առավելություն էր: Ես կտրեցի և ձևավորեցի իմ լարերը այնպես, որ դիրքային տվիչի կողմնորոշումը համահունչ լիներ, երբ ես տեղադրում և հանում էի էլեկտրոնիկան գլխարկից ՝ փոփոխման և ծրագրավորման համար:
Քայլ 4: Programրագրավորում
Այժմ, երբ ամեն ինչ հավաքված է, ձեզ հարկավոր կլինի Arduino համատեղելի ծրագրավորման գործիք: Ես օգտագործեցի իրական Arduino IDE- ն (աշխատում է Linux- ի, Mac- ի և համակարգչի հետ): Ձեզ նույնպես կպահանջվի Teensyduino ծրագրակազմը Teensy տախտակի հետ միանալու համար: Այս նախագիծը մեծապես օգտագործում է FastLED գրադարանը `LED- ների գույնի և դիրքի ծրագրավորման համար:
Կալիբրացում
Առաջին բանը, որ կցանկանաք անել, գնալ Kris Winer- ի գերազանց GitHub պահոցը BNO055- ի համար և ներբեռնել նրա BNO_055_Nano_Basic_AHRS_t3.ino էսքիզը: Տեղադրեք այդ կոդը Serial Monitor- ի միջոցով և այն ձեզ կասի, թե արդյոք BNO055 տախտակը ճիշտ է միանում առցանց և անցնում է ինքնակառավարման թեստերը: Այն նաև կառաջնորդի ձեզ BNO055- ի ճշգրտման միջոցով, ինչը հետագայում ձեզ կտա ավելի հետևողական արդյունքներ:
Սկսեք Fancy LED էսքիզով
Fancy LED գլխարկի ծածկագիրը հատուկ կցված է, ինչպես նաև իմ GitHub շտեմարանին: Ես նախատեսում եմ ավելի շատ փոփոխություններ կատարել ծածկագրում, և դրանք կտեղադրվեն GitHub ռեպոում: Այստեղ ֆայլը արտացոլում է ծածկագիրը, երբ հրապարակվել է այս Հրահանգը: Էսքիզը ներբեռնելուց և բացելուց հետո կան մի քանի բան, որոնք դուք պետք է փոխեք: Փոփոխության ենթարկվող կարևոր արժեքներից շատերը հենց վերևում են ՝ #սահմանվող հայտարարություններ.
Տող 24. #Սահմանեք NUM_LEDS 89 - փոխեք սա ձեր LED շերտի LED- ների իրական թվին
Տող 28. #Սահմանեք SERIAL_DEBUG false
Դիրքի հայտնաբերման կոդ
Դիրքի հայտնաբերումը և ձեր մեծամասնության փոփոխությունները սկսվում են 742 տողից և անցնում 802 -ով: Մենք դիրքի տվիչից ստանում ենք Pitch, Roll և Yaw տվյալներ և օգտագործում դրանք արժեքներ սահմանելու համար: Կախված այն բանից, թե ինչպես են տեղադրված ձեր էլեկտրոնիկան, գուցե անհրաժեշտ լինի դրանք փոխել: Եթե դուք տեղադրում եք դիրքի տվիչը չիպով դեպի գլխարկի վերևը, և տախտակի վրա տպված X- ի կողքին գտնվող սլաքը `ուղղված գլխարկի առջևի կողմին, ապա պետք է տեսնեք հետևյալը.
- Ձայնը գլխով է անում
- Roll- ը թեքում է ձեր գլուխը, օրինակ. դիպչեք ձեր ականջին ձեր ուսին
- Հա, ո՞ր ուղղությունն է: դու կանգնած ես (Հյուսիս, Արևմուտք և այլն):
Եթե ձեր տախտակը տեղադրված է այլ կողմնորոշման վրա, ապա ձեզ հարկավոր է փոխանակել Pitch/Roll/Yaw, որպեսզի նրանք վարվեն այնպես, ինչպես կցանկանայիք:
Roll- ի կարգավորումները կարգավորելու համար կարող եք փոխել հետևյալ #սահմանվող արժեքները.
- ROLLOFFSET. Ձեր գլխարկը կայուն և հնարավորինս կենտրոնացած պահելով, եթե Roll- ը 0 չէ, փոխեք դա տարբերությամբ: Այսինքն եթե ձեր գլխարկը կենտրոնացած է, Roll- ը տեսնում եք -20 -ում, դարձրեք այս 20 -ը:
- ROLLMAX. Roll չափման համար օգտագործվող առավելագույն արժեքը: Ամենահեշտը կարելի է գտնել գլխարկը կրելով և աջ ականջը դեպի աջ ուսը շարժելով: Սերիական մոնիտորն օգտագործելիս դա անելու համար ձեզ հարկավոր կլինի երկար USB մալուխ:
- ROLLMIN. Roll չափման ամենացածր արժեքը, երբ գլուխը թեքում եք ձախ
Նմանապես, Pitch- ի համար.
- MAXPITCH - առավելագույն արժեքը, երբ նայում եք վերև
- MINPITCH - նվազագույն արժեքը, երբ նայում եք ներքև
- PITCHCENTER - սկիպիդարային արժեքը, երբ ուղիղ առաջ եք նայում
Եթե ֆայլի վերևում SERIALDEBUG- ը սահմանում եք true, ապա սերիական մոնիտորին պետք է տեսնեք Roll/Pitch/Yaw ելքի ընթացիկ արժեքները, որոնք կօգնեն փոփոխել այս արժեքները:
Այլ պարամետրեր, որոնք գուցե ցանկանաք փոխել
- MAX_LED_DELAY 35 - ամենադանդաղը, որը կարող է շարժել LED մասնիկը: Սա միլիվայրկյանների ընթացքում է: Դա լարից մեկ LED- ից մյուսին անցնելու հետաձգումն է:
- MIN_LED_DELAY 10 - այն ծոմը, որով կարող է շարժվել LED մասնիկը: Ինչպես վերևում, այն գտնվում է միլիվայրկյանների ընթացքում:
Եզրակացություն
Եթե այսքան հեռու եք գնացել, ապա պետք է ունենաք լիարժեք գործող և զվարճալի LED գլխարկ: Եթե ցանկանում եք ավելին անել դրա հետ, հաջորդ էջում կան որոշ առաջադեմ տեղեկություններ պարամետրերը փոխելու և ձեր սեփական գործերը կատարելու վերաբերյալ: ինչպես նաև որոշ բացատրություն, թե ինչ է անում իմ մնացած ծածկագիրը:
Քայլ 5. Ընդլայնված և կամընտիր. Կոդի ներսում
Ազդեցության և պտույտի հայտնաբերում
Ազդեցության/պտույտի հայտնաբերումը կատարվում է BNO055- ի բարձր G սենսորային գործառույթների միջոցով: Դուք կարող եք փոփոխել դրա զգայունությունը initBNO055 () հետևյալ տողերով:
- Տող #316: BNO055_ACC_HG_DURATION - որքան երկար պետք է տևի իրադարձությունը
- Տող #317: BNO055_ACC_HG_THRESH - որքան ծանր պետք է լինի ազդեցությունը
- Տող #319: BNO055_GYR_HR_Z_SET - ռոտացիայի արագության շեմ
- Տող #320: BNO055_GYR_DUR_Z - որքան երկար պետք է տևի պտույտը
Երկու արժեքներն էլ 8 բիթանոց երկուական են, ներկայումս ազդեցությունը սահմանվում է B11000000, որը 195 -ն է 255 -ից:
Երբ հարված կամ պտույտ է հայտնաբերվում, BNO055- ը սահմանում է մի արժեք, որը ծածկագիրը փնտրում է հենց Օղակի սկզբում.
// Հայտնաբերել գործարկվող ցանկացած ընդհատում, այսինքն ՝ բարձր G բայտի պատճառով intStatus = readByte (BNO055_ADDRESS, BNO055_INT_STATUS); if (intStatus> 8) {ազդեցություն (); } else if (intStatus> 0) {պտտել (); }
Փնտրեք դատարկ ազդեցության () տողը վերևում ՝ ծածկագրում ՝ ազդեցության վրա վարքագիծը փոխելու համար, կամ պտտման վարքագիծը փոխելու համար ():
Օգնականներ
Ես ստեղծել եմ մի պարզ օգնականի գործառույթ (void setAllLeds ()) ՝ բոլոր LED- ները մեկ գույնի արագ կարգավորելու համար: Մեկը օգտագործեք դրանք բոլորը անջատելու համար.
setAllLeds (CRGB:: Սև);
Կամ կարող եք ընտրել FastLED գրադարանի կողմից ճանաչված ցանկացած գույն.
setAllLeds (CRGB:: Կարմիր);
Կա նաև fadeAllLeds () գործառույթը, որը 25%-ով կթուլացնի բոլոր LED- ները:
Մասնիկների դաս
Էլեկտրագծերը մեծապես պարզեցնելու համար ես ցանկացա օգտագործել LED- ների մեկ տող, բայց նրանց պահեք որպես բազմաթիվ լարերի նման: Քանի որ սա իմ առաջին փորձն էր, ես ուզում էի հնարավորինս պարզ պահել այն, ուստի ես մեկ լարին վերաբերվում եմ որպես երկու, իսկ միջին լուսադիոդների (լուսադիոդների) առկայության դեպքում պառակտումը կլիներ: Քանի որ մենք կարող էինք ունենալ զույգ կամ կենտ թիվ, մենք պետք է դա հաշվի առնենք: Ես սկսում եմ որոշ գլոբալ փոփոխականներով.
/ * * LED- ների փոփոխական և բեռնարկղեր */ CRGB լուսարձակներ [NUM_LEDS]; ստատիկ անստորագիր int curLedDelay = MAX_LED_DELAY; ստատիկ int centerLed = NUM_LEDS / 2; static int maxLedPos = NUM_LEDS / 2; static bool oddLeds = 0; ստատիկ բոլի մասնիկԴիր = 1; static bool speedDir = 1; անստորագիր երկար dirCount; անստորագիր երկար երանգՀաշիվ;
Եվ որոշ կոդ setup- ում ():
եթե (NUM_LEDS % 2 == 1) {oddLeds = 1; maxLedPos = NUM_LEDS/2; } else {oddLeds = 0; maxLedPos = NUM_LEDS/2 - 1; }
Եթե մենք ունենք կենտ թվեր, մենք ցանկանում ենք օգտագործել 1/2 կետը որպես միջին, հակառակ դեպքում մենք ցանկանում ենք 1/2 կետը `1. Սա հեշտ է տեսնել 10 կամ 11 LED- ով:
- 11 լուսադիոդ. 11/2 ամբողջ թվերով պետք է գնահատել մինչև 5, իսկ համակարգիչները հաշվում են 0 -ից: Այսպիսով, 0 - 4 -ը մեկ կեսն է, 6 - 10 -ը մյուս կեսն է, իսկ 5 -ը դրանց միջև: Այս դեպքում մենք #5 -ին վերաբերվում ենք այնպես, ասես երկուսի մաս է, այսինքն ՝ #1 է LED- ների երկու վիրտուալ տողերի համար
- 10 լուսադիոդ. Այնուհետեւ մենք ունենք 0 - 4 մի կեսի համար, իսկ 5 - 9 մյուսի համար: Առաջին վիրտուալ տողի համար #1 -ը կլինի 4, իսկ երկրորդ վիրտուալ տողի համար #1 -ը ` #5:
Այնուհետև մեր մասնիկների ծածկագրում մենք պետք է որոշ հաշվարկներ կատարենք մեր ընդհանուր դիրքից մինչև LED տողի փաստացի դիրքերը.
եթե (կենտԼեդեր) {Pos1 = centerLed + currPos; Pos2 = centerLed - currPos; } else {Pos1 = centerLed + currPos; Pos2 = (centerLed -1) - currPos; }
Կոդը նաև ունի պայմաններ, երբ մասնիկը կարող է փոխել ուղղությունները, ուստի մենք նաև պետք է դա հաշվի առնենք.
if (particleDir) {if ((currPos == NUM_LEDS/2) && oddLeds) {currPos = 0; } else if ((currPos == NUM_LEDS/2 - 1) && (! oddLeds)) {currPos = 0; } else {currPos ++; }} այլ {if ((currPos == 0) && oddLeds) {currPos = centerLed; } else if ((currPos == 0) && (! oddLeds)) {currPos = centerLed - 1; } else {currPos--; }}
Այսպիսով, մենք օգտագործում ենք նախատեսված ուղղությունը (particleDir) ՝ հաշվարկելու համար, թե որ LED- ն պետք է հաջորդը լուսավորվի, բայց նաև պետք է հաշվի առնել, թե արդյոք մենք հասել ենք կամ LED լարի իրական ավարտին, կամ մեր կենտրոնական կետին, որը նույնպես գործում է որպես վերջ վիրտուալ տողերից յուրաքանչյուրը:
Երբ մենք պարզեցինք այդ ամենը, անհրաժեշտության դեպքում մենք լուսավորում ենք հաջորդ լույսը.
if (particleDir) {if (oddLeds) {Pos1 = centerLed + currPos; Pos2 = centerLed - currPos; } else {Pos1 = centerLed + currPos; Pos2 = (centerLed -1) - currPos; }} այլ {if (oddLeds) {Pos1 = centerLed - currPos; Pos2 = centerLed + currPos; } else {Pos1 = centerLed - currPos; Pos2 = (centerLed -1) + currPos; }} leds [Pos1] = CHSV (currHue, 255, 255); leds [Pos2] = CHSV (currHue, 255, 255); FastLED.show ();}
Ինչու՞ սա ընդհանրապես դասարան դարձնել: Ինչևէ, սա բավականին պարզ է և իրականում կարիք չունի դասարանում լինել: Այնուամենայնիվ, ես ապագա ծրագրեր ունեմ ՝ թարմացնելու ծածկագիրը ՝ թույլ տալու համար, որ միանգամից մի քանի մասնիկ առաջանա, և ոմանք հակառակ ուղղությամբ աշխատեն, իսկ մյուսները ՝ առաջ: Կարծում եմ, որ բազմաթիվ մասնիկների միջոցով պտույտների հայտնաբերման իսկապես մեծ հնարավորություններ կան:
Խորհուրդ ենք տալիս:
Poor Man's Lens գլխարկ կամ գլխարկ (տեղավորվում է ցանկացած DSLR / Semi-DSLR) ՝ 4 քայլ
Poor Man's Lens գլխարկ կամ գլխարկ (տեղավորվում է ցանկացած DSLR / Semi-DSLR). Երբ ես գնել եմ իմ DSLR- ը, երկրորդ ձեռքով այն ոսպնյակի կափարիչ չուներ: Այն դեռ նորմալ վիճակում էր, և ես երբեք չէի մոտենում ոսպնյակի գլխարկ գնելուն: Այսպիսով, ես վերջացրեցի մեկը պատրաստելով: Քանի որ տեսախցիկս տանում եմ փոշոտ տեղեր, երևի ամենալավն այն է, որ լինզայի կափարիչ լինի:
Ստեղնաշարի գլխարկ Micro ջրաներկ բոտեր. 12 քայլ (նկարներով)
Ստեղնաշարի գլխարկ Micro ջրաներկ բոտեր. Այս փոքրիկ ռոբոտները բխում են անձնական դիզայնի ամենասիրելի մարտահրավերից `ինչ -որ բան պատրաստելու համար անհրաժեշտ նյութերի և գործիքների նվազագույն քանակի ուսումնասիրություն: Այս դեպքում, իմ ցանկությունն է այն, ինչը և/կամ դարձնում է «արվեստ»:
Քառանկյուն LED գլխարկ (Deichkind Style) V1: 7 քայլ (նկարներով)
Tetrahedral LED Hat (Deichkind Style) V1. Գիտե՞ք գերմանական Deichkind երաժշտական խումբը: Դե, ես նրանց մեծ երկրպագուն եմ և մի քանի համերգների եմ եղել: Իրենց բեմի շոուի շրջանակներում այս խումբը հագնում է քառանկյուն գլխարկներ ՝ լի լուսադիոդներով: Արդեն ավելի քան 10 տարի առաջ առաջին համերգին ես գիտեի, որ
RPI Տնական գլխարկ. 5 քայլ (նկարներով)
RPI Տնական գլխարկ. Բարև, իմ անունը Բորիս է, և սա իմ առաջին հրահանգներն են: Ես ունեմ Raspberry Pi 3B+ և ես այն օգտագործում եմ պարզ տնային ավտոմատացման համար, ինչպիսիք են հեռուստացույցի, AC- ի և որոշ լույսերի կառավարումը: Վերջերս ես գնել եմ էժան չինական CNC երթուղիչ և սկսեց պատրաստել պարզ PCB (ես
WiFi Led Fedora գլխարկ (ESP8266 + WS2812b) ՝ 5 քայլ (նկարներով)
WiFi Led Fedora Hat (ESP8266 + WS2812b). Սա հիանալի արտաքին տեսքով գլխարկ է: Դուք կարող եք փոխել սմարթֆոնի կամ համակարգչի միջոցով լուսադիոդների գույնն ու ազդեցությունը, ինչպես նաև փորձել եմ այն հնարավորինս պարզ և էժան դարձնել: Նաև ունի վերալիցքավորվող մարտկոց, որպեսզի կարողանաք այն վերցնել ձեզ հետ: Այս