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

Fancy LED գլխարկ. 5 քայլ (նկարներով)
Fancy LED գլխարկ. 5 քայլ (նկարներով)

Video: Fancy LED գլխարկ. 5 քայլ (նկարներով)

Video: Fancy LED գլխարկ. 5 քայլ (նկարներով)
Video: 5 ՀՐԱՇԱԼԻ ԿՅԱՆՔԻ ՀԱՔԵՐ #2 2024, Նոյեմբեր
Anonim
Image
Image
Fancy LED գլխարկ
Fancy LED գլխարկ

Ես միշտ ցանկացել եմ կատարել Arduino- ի նախագիծ, բայց երբեք չեմ ունեցել որևէ հիանալի գաղափար, քանի դեռ ընտանիքս չի հրավիրվել շքեղ գլխարկի երեկույթի: Երկու շաբաթ տևողությամբ ես հետաքրքրվեցի, թե կարո՞ղ եմ պլանավորել և կատարել շարժման նկատմամբ զգայուն LED անիմացիոն գլխարկ: Պարզվեց, ես կարող էի! Ես հավանաբար մի փոքր չափն անցա, բայց ընդհանուր նախագիծը արժեցավ մոտ $ 80: Փորձերի և որոշ կոդավորման միջոցով դուք կարող եք դա անել ավելի քիչ ծախսերի համար:

Գլխարկով գոլը հետևյալն էր.

  1. Թող մի շարք լույսեր շարժվեն գլխարկի կենտրոնական առջևից դեպի հետև, մեկական լույս յուրաքանչյուր կողմից
  2. Փոխեք լույսի ճամփորդության արագությունը, որը թելադրված է գլխարկի թեքությամբ առջևից ետ
  3. Թույլ տվեք լույսերը հետ շրջվել, երբ գլխարկի գոտին թեքված էր դեպի ներքև (այսինքն ՝ նմանակեք լույսի վրա ձգողության ազդեցությունը)
  4. Փոխեք գույնը ՝ հիմնվելով գլխարկի թեքության վրա ձախից աջ
  5. Enseգացեք ցնցումները և ցուցադրեք հատուկ էֆեկտ
  6. Sգացեք, թե ինչպես է կրողը պտտվում և ցուցադրեք հատուկ էֆեկտ
  7. Թող այն ամբողջությամբ պարունակվի գլխարկի մեջ

Քայլ 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: Լարացրեք այն

Wire It Up
Wire It Up

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 ();}

Ինչու՞ սա ընդհանրապես դասարան դարձնել: Ինչևէ, սա բավականին պարզ է և իրականում կարիք չունի դասարանում լինել: Այնուամենայնիվ, ես ապագա ծրագրեր ունեմ ՝ թարմացնելու ծածկագիրը ՝ թույլ տալու համար, որ միանգամից մի քանի մասնիկ առաջանա, և ոմանք հակառակ ուղղությամբ աշխատեն, իսկ մյուսները ՝ առաջ: Կարծում եմ, որ բազմաթիվ մասնիկների միջոցով պտույտների հայտնաբերման իսկապես մեծ հնարավորություններ կան:

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