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

Հոլի փողկապ. 8 քայլ (նկարներով)
Հոլի փողկապ. 8 քայլ (նկարներով)

Video: Հոլի փողկապ. 8 քայլ (նկարներով)

Video: Հոլի փողկապ. 8 քայլ (նկարներով)
Video: The Tragic Story Of An Abandoned Jewish Family Mansion Ruined By Fire 2024, Հուլիսի
Anonim
Image
Image

GwfongMonkey Patching Հետևեք հեղինակի ավելին.

Լուսավորող շան ճամբար
Լուսավորող շան ճամբար
Պողպատե սիրտ և ձուլված ապակի քանդակ
Պողպատե սիրտ և ձուլված ապակի քանդակ
Պողպատե սիրտ և ձուլված ապակի քանդակ
Պողպատե սիրտ և ձուլված ապակի քանդակ
Պղնձե մետաղալար և ձուլված ապակու թիթեռ
Պղնձե մետաղալար և ձուլված ապակու թիթեռ
Պղնձե մետաղալար և ձուլված ապակու թիթեռ
Պղնձե մետաղալար և ձուլված ապակու թիթեռ

Օգտվողի մասին. Պարզապես մի տղա, ով ձգտում է թույն բաներ պատրաստել Ավելին gwfong- ի մասին »

Սա Holi-Tie- ն է, տոնական փողկապ, որը նախատեսված է արձակուրդների ժամանակ կրելու համար: Հեշտությամբ հիմնված Becky Stern- ի Ampli-Tie- ի վրա, որն օգտագործում է Flora տախտակ, Holi-Tie- ն օգտագործում է Circuit Python Express (CPX) միկրոկոնտրոլեր `NeoPixel- ի անիմացիաներն ու երաժշտությունը վարելու համար: Կոճակը փոխվում է NeoPixel- ի 2 տարբեր անիմացիաների միջև: Հզոր դիպչող բարձիկները փոխում են NeoPixel- ի գույները և շարժման արագությունը: Մյուս կոճակը փոխվում է LED անիմացիաների և երաժշտության միջև: Ինքնաթիռի խոսափողը օգտագործվում է VU մետր անիմացիայի շրջակա միջավայրի աղմուկը չափելու համար: Իսկ CPX բարձրախոսը թողարկում է տոնական չիպային մեղեդիներ:

Ամեն ինչ կոդավորված է ՝ օգտագործելով Python ծրագրավորման լեզուն, որը գործում է CircuitPython համակարգի վրա: Այն սնուցվում է 3.7 Վ, 500 մԱՀ հզորությամբ LiPo մարտկոցով, որը փոխվել է ՝ միացնելու/անջատելու անջատիչ ունենալու համար:

Կան երկու տեսահոլովակներ, որոնք ցույց են տալիս Holi-Tie- ը.

  • Ավարտվեց Holi-Tie- ը
  • Հոլի-փողկապի ներսում

Քայլ 1: Մասեր և գործիքներ

Մասեր

  • Circuit Playground Express
  • 15x ֆլորա նեոպիքսել
  • Մագնիս մետաղալար
  • Կպչուն կեռիկ և հանգույց ժապավեն
  • 500 mAH lipo մարտկոց JST միակցիչով
  • Candy Cane փողկապ
  • Mini slide switch, SPDT
  • Atերմային նեղացման խողովակ

Մասերի աղբյուրներ ձեռք բերելիս խելամիտ կլինի լրացուցիչ հավելումներ գնել: Ես ունեի ընդամենը 20 NeoPixel, որոնցից մեկն ի սկզբանե կոտրված էր, իսկ մեկը ՝ փչացած: Candy Cane փողկապն այնքան էժան էր, որ երկրորդը գնեցի միայն այն դեպքում, եթե առաջինը փչացնեի:

Գործիքներ

  • Տաք սոսինձ ատրճանակ
  • Sոդման կայան
  • Մետաղալար կտրիչներ
  • Փոքր դանակ
  • Բազմաչափ
  • Համակարգիչ
  • Կրակայրիչ կամ ջերմային ատրճանակ
  • Թել և ասեղ

Քայլ 2: Կապի պատրաստում

Կապի պատրաստում
Կապի պատրաստում
Կապի պատրաստում
Կապի պատրաստում
Կապի պատրաստում
Կապի պատրաստում

Հիմնական նպատակը ներքին կապի միջուկի և սահմանազատման գծերի հասանելիությունն է `նշելով, թե որտեղ պետք է տեղադրվեն LED- ները:

Քայլ 1: Վզկապը ամրացրեք դիրքի վրա

Դժվար կլինի փողկապը կապել, երբ էլեկտրոնիկան իր տեղում լինի: Այսպիսով, փողկապը կապեք այնպես, որ այն լավ տեսք ունենա, և հանգույցը բավականին ամուր լինի և չբացահայտվի: Այնուհետև զգուշորեն քաշեք փողկապի փոքր ծայրը, որպեսզի անցքը բացվի ՝ փողկապը գլխի վրայով անցնելու համար: Սա այն դիրքն է, որի վրա կաշխատեն փողկապը:

Կան բոլոր տեսակի տարբեր փողկապային հանգույցներ: Ես գիտեմ միայն այն, ինչ սովորել եմ մանկության տարիներին ՝ Վինձորին: Կարևոր չէ, թե որ հանգույցն է օգտագործվում:

Քայլ 2: Բացեք փողկապի հետևը

Կտրեք բացերը փողկապի օղակի և պատկերանշանի մի կողմում, այնուհետև փողկապի կենտրոնից ներքև: Carefulգույշ եղեք, քանի որ վերջում այն պետք է նորից կարել:

Քայլ 3. Գծեք գծեր, որտեղ LED- ները պետք է տեղադրվեն

Որպեսզի LED- ները հայտնվեն փողկապի սպիտակ շերտերի հատվածներում, ավելի հեշտ է գտնել փողկապի միջուկի հետևի յուրաքանչյուր սպիտակ շերտերի հատվածի կենտրոնական գիծը, այնուհետև քարտեզագրել այն փողկապի միջուկի առջևի մասում: Ստուգեք և կրկնակի ստուգեք, որ կենտրոնական գիծը 1) կենտրոնում է և 2) շերտին զուգահեռ: LED դիրքերի ճշգրիտ կարգավորումը հնարավոր կլինի, եթե դրանք մի փոքր անջատված լինեն: Բայց ավելի լավ է այն մոտենալ ճշգրիտին, քան ավելի ուշ:

Փորձարկեք գծերի կենտրոնացվածությունը `LED- ները տեղադրելով գծերի վրա և շերտագիծը դնելով վերևում: Կարգավորեք այնտեղ, որտեղ անհրաժեշտ է:

Քայլ 3: NeoPixels- ի ամրացում

NeoPixels- ի կցում
NeoPixels- ի կցում
NeoPixels- ի կցում
NeoPixels- ի կցում
NeoPixels- ի կցում
NeoPixels- ի կցում
NeoPixels- ի կցում
NeoPixels- ի կցում

Հիմնականում մենք պատրաստում ենք մեր սեփական LED ժապավենը: Մենք պարզապես LED- ները տեղադրում ենք փողկապի միջուկի վրա, այնուհետև դրանք միացնում ենք միմյանց:

Քայլ 1. NeoPixels- ը ամրացրեք կապի միջուկին

NeoPixel- ի հետևի մասում տեղադրեք տաք սոսինձ, այն տեղադրեք կենտրոնական գծերի վրա: 3 NeoPixel ունեցող հատվածների համար ուղղահայաց հավասարեցրեք NeoPixel կենտրոնը և դրանք առաջինը կպցրեք ներքև: Սա ավելի դյուրին կդարձնի ձախ և աջ NeoPixel- ի տեղադրումը կենտրոնի նկատմամբ, հատկապես հաշվի առնելով, որ փողկապի լայնությունը վերևից ներքև մեծանում է:

Համոզվեք, որ բոլոր NeoPixels- ը կողմնորոշեք միևնույն ուղղությամբ ՝ ներքևից ձախից դեպի վերին աջ: Եթե դա ճիշտ չէ, շերտը չի աշխատի:

Նշում տաք սոսինձի մասին: Բավական կլինի նախագիծը ավարտին հասցնել: Ինչ վերաբերում է այն, թե արդյոք դա կտևի գալիք տարիներ, ապա պարզապես պետք է տեսնել:

Քայլ 3. NeoPixels- ը միմյանց կպցրեք

Քանի որ ես որոշեցի NeoPixels- ը միասին զոդել `հաղորդունակ թել օգտագործելու փոխարեն, NeoPixel բարձիկների փոսը մեր դեմ քիչ է աշխատում: Պարզապես լավ տեղ գտեք պահոցի վրա `մետաղալարերը կպցնելու համար: Մի փորձեք փոսը լցնել եռակցմամբ, բայց եթե դա տեղի ունենա, ապա ամեն ինչ կարգին կլինի:

Մագնիս մետաղալարն ունի մեկուսացման բարակ շերտ պղնձե միջուկի շուրջ: Դանակով քերծեք մեկուսացումը հենց ծայրերում, որտեղ դրանք կպչեն: Ավելի լավ է քերել մետաղալարերի ամբողջ շրջագիծը:

Քայլ 4: Փորձեք կապը

Օգտագործեք մուլտիմետր `ստուգելու կապը հետևյալի հետ.

  1. Դրական կապեր: Պետք է լինի միացում ծայրից մինչև պոչ: Համոզվեք, որ թեստային կապը բարձիկների վրա է և ոչ թե մետաղալարերի:
  2. Հողային միացումներ: Կատարեք նույն թեստը, բայց գրունտային բարձիկներով:
  3. Տվյալների յուրաքանչյուր տող: Տվյալների մեկ պահոցից մյուսը ստուգեք, որ կա կապ:

Քայլ 4. Կցեք Circuit Playground Express- ը

Կցեք Circuit Playground Express- ը
Կցեք Circuit Playground Express- ը

Circuit Playground Express (CPX) - ը համակարգի սիրտն է: Այս վերահսկիչի համար Adafruit- ն ունի բազմաթիվ ձեռնարկներ: Հետագայում այս ուսանելիի մեջ ես կարևորեմ MCU- ի մի քանի առանձնահատկություններ:

Քայլ 1. Xոդեք CPX- ը NeoPixel- ի ներքևի ծայրին

Կտրեք մագնիսալարի համապատասխան երկարությունները հզորության, գրունտի և տվյալների համար: Հրել դրանք փողկապի միջուկի միջով, որպեսզի նրանք դիպչեն NeoPixel- ի հզորությանը, գրունտին և տվյալների բարձիկներին: Sոդեք դրանք ՝ համոզվելով, որ բարձիկների վրա առկա լարերը դեռ լավ կապ են ապահովում:

Հաջորդը շրջեք փողկապի միջուկը և տեղադրեք CPX- ը ցանկության դիրքում: Սնուցեք հոսանքի լարերը VOUT պահոցին, հողալարերը `ցանկացած գրունտի բարձիկին և տվյալների հաղորդալարը` A0- ից բացի ցանկացած այլ I/O պահոցով: Իմ գրած կոդը օգտագործում է A3:

Փորձարկեք կապը:

Քայլ 2: Կապեք CPX- ը

Թելով և ասեղով վերցրեք չորս հավասար հեռավորության վրա գտնվող բարձիկներ և կարեք դրանք կապի միջուկի վրա:

Քայլ 5: CPX- ի հզորացում

CPX- ի սնուցում
CPX- ի սնուցում
CPX- ի սնուցում
CPX- ի սնուցում
CPX- ի սնուցում
CPX- ի սնուցում

CPX- ը չունի միացման/անջատման անջատիչ: Սա նշանակում է, որ այն պահին, երբ մարտկոցը միացված է, փողկապը կմիացվի: Սա նաև նշանակում է, որ այն անջատելու միակ միջոցը մարտկոցը միացնելն է, ինչը մեծ դժվարություն է: Պարզ լուծում է մարտկոցի անջատիչ/անջատիչ դնելը:

Քայլ 1. Անջատիչի 3 -րդ կապը կտրեք

Ոչ կենտրոնական կապումներից մեկը անհրաժեշտ չէ: Անջատիչի մարմնով միանգամից կտրեք այն:

Քայլ 2: theոդեք անջատիչը մարտկոցի լարի գծում

Կտրեք մարտկոցի գրունտի լարերը ինչ -որ տեղ մեջտեղում: Սահեցրեք մի կտոր ջերմության նվազեցման խողովակի յուրաքանչյուր գետնին լարերի վրա: Մի գրունտալարը միացրեք կապում մեկին, իսկ մյուսը `մյուս կապին: Համոզվեք, որ դրանք չեն դիպչում միմյանց, կամ զոդը դիպչում է մետաղյա մարմնին:

Ստուգեք, որ դրանք միացված չեն բազմիմետր օգտագործելով: Սահեցրեք խողովակը եռակցված միացումների վրայով և փոքրացրեք այն: Ավելացրեք մի փոքր էլեկտրական ժապավեն ցանկացած մասի, որը կարող է ձախողվել ճկման հոգնածության պատճառով:

Քայլ 3: Ստուգեք, որ մարտկոցը աշխատում է

Այս պահին մարտկոցը կարող է միացվել CPX- ին: Եթե ամեն ինչ լավ է ընթանում, անջատիչը պետք է կարողանա միացնել և անջատել CPX- ը:

Քայլ 4: Տեղադրեք մարտկոցը

Մարտկոցի հետևի մասում և փողկապի միջուկին մի քիչ կպչուն կարթ և օղակ կպցրեք: Սա կպահի այն տեղում, եթե փողկապը շատ չկարգավորվի:

Քայլ 6. Շրջանակային խաղահրապարակի էքսպրես տեղադրում

Ես չեմ մանրամասնի, թե ինչպես կարգավորել CPX- ը: Ադաֆրուտը դա անում է, իսկ հետո ՝ մի քանիսը: Ես մի քանի խորհուրդ կտամ այն հարցերի համար, որոնց ես հաճախ հանդիպել եմ:

CPX- ն սառեցնում է

Հավանաբար, ժամանակի հետ կապված հիշողության խնդիրների պատճառով CPX- ն բավականին հաճախ սառչում էր: Արագ շտկումը ջնջելն ու նորից բռնկվելն է: Այս հրահանգներում փնտրեք «Հին ճանապարհ»: Հիմնականում դա մի քանի կոճակ սեղմում է, ջնջելու համար քաշել և թողնել, այնուհետև նորից բռնկվել `քաշել և թողնել:

Գուշացում. Սա ջնջում է ամեն ինչ: CPX- ի բոլոր ծածկագրերը կկորչեն:

CPX- ում փոփոխությունների պահպանումը կարող է խնդիրներ առաջացնել

Ես հայտնաբերեցի, որ երբեմն ֆայլը CPX- ում պահելուց հետո Python- ի գործարկման ժամանակը վատ վիճակում է: Շտկումը պիթոնի գործարկման ժամանակի վերագործարկումն էր ՝ սեղմելով վերակայման կոճակը: Սեղմեք այն միայն մեկ անգամ: Երկու անգամ սեղմելով ՝ կսկսվի նորից բռնկման գործընթացը:

CPX- ի վրա ուղղակիորեն խնայելը ռիսկային է

CPX- ի վերաթողարկման հավանականության պատճառով մեկը ռիսկի է դիմում կորցնել դրանց ամբողջ ծածկագիրը: Կոդը երկու անգամ կորցնելուց հետո ես պարզ աշխատանքային հոսք գտա: Ես կպահեի իմ կոդը տեղական կոշտ սկավառակի վրա: Երբ այն պատրաստ էր CPX- ի վրա փորձարկվելու, ես պարզապես պատճենելու էի այն ՝ գործարկելով պարզ տեղակայման սցենար:

Քայլ 7. Կոդավորեք Circuit Playground Express- ը

Այս պահին CPX- ը և NeoPixels- ը բավականին ամբողջական են: Նրանց հետ այլ մեխանիկական կամ էլեկտրական աշխատանքներ պետք չէ կատարել: Մնացածն ամբողջությամբ ծրագրային ապահովում է:

Կոդը կարելի է գտնել իմ github հաշվում: Պիթոնի հիմնական ծածկագիրը պետք է աշխատի առանց որևէ փոփոխության բոլոր օպերացիոն համակարգերի համար: Մի տեղադրեք արտաքին Adafruit CircuitPython գրադարանները: Դրանք չեն օգտագործվում:

Ահա բարձր մակարդակի ամփոփում, թե ինչ է կատարվում օրենսգրքում:

Ի՞նչ մուտքագրում է դա:

  • Կոճակ Ա. Շրջանառություն դեպի LED անիմացիաներ
  • Կոճակ Բ. Շրջանցեք երգերի միջով
  • Capacitive Touch Pad A1. Փոխում է գույները LED անիմացիաների համար
  • Capacitive Touch Pad A6. Փոխում է LED անիմացիաների արագությունը

3 անիմացիա գոյություն ունի, բայց միայն 2 -ն են գործում

code.py

ներմուծել pixelsoff

# ներմուծում վումետր ներմուծման աստիճաններ ներմուծում շողալ

Տեղափոխեցի Ampli-Tie VU հաշվիչի ոճի կոդը: Այն օգտագործում է CPX խոսափողը ՝ ձայնը վերցնելու և NeoPixels- ը լուսավորելու համար ՝ հիմնվելով ձայնի ամպլիտուդի վրա: Այնուամենայնիվ, ես ավելի շատ անիմացիաներ էի ուզում: Գործողության ընթացքում հիշողության սահմանափակումների պատճառով ես ստիպված էի ընտրել, թե որ անիմացիաներն եմ ուզում: Այսպիսով, լռելյայն մյուս երկուսը ՝ Stairs- ը և Twinkle- ը, կաշխատեն առանց կոդի փոփոխություններ կատարելու: VU մետր անիմացիան գործարկելու համար մյուս անիմացիաներից մեկը կամ երկուսը պետք է մեկնաբանվեն, իսկ VU մետրը ՝ առանց մեկնաբանության:

Երաժշտության կառավարիչ և Off-Line կոդավորում

ցրտաշունչ_ձնաձուկը. py

ներմուծել երաժշտական_ նշումներ որպես mn

# Ձյունանուշը ցրտահար # Walter E. Rollins երգ = [(mn. G4, mn. HLF), (mn. E4, mn. DTQ), (mn. F4, mn. ETH), (mn. G4, mn. QTR), (mn. C5, mn. HLF),…

convert_to_binary.py

երգեր = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] երգերում երգի համար. data = song [0] file = song [1] with open (file, "wb") որպես bin_file: տվյալների մուտքագրման համար. տպել («գրել».

Ես ուզում էի տոնական երաժշտություն: CPX- ն աջակցում է ինչպես WAV, այնպես էլ հնչերանգներ: WAV ֆայլերը չափազանց մեծ էին ֆայլի չափի և գործարկման հիշողության առումով: Պիտոնների տվյալների կառուցվածքների օգտագործումը `տոնները պահելու և դրանց տևողությունը նույնպես պարզեց, որ օգտագործում է չափազանց շատ գործարկման ժամանակ: Այսպիսով, ես փոփոխեցի Holi-Tie ծածկագիրը ՝ սեղմված երկուական ֆայլ կարդալու համար, որը պարունակում էր միայն անհրաժեշտ երգի տվյալները սեղմված երկուական ձևաչափով: Ես գրել եմ մի սցենար, որը կարդում է պիթոնի տվյալների կառուցվածքում պահված երգը և գրում այն երկուական ձևաչափով: Երգը որպես ֆայլում երկուական տվյալներ կոդավորված լինելը երգը դարձնում է փոքր և դինամիկ: Երգի նվագարկումն ավարտելուց հետո հիշողությունը ազատվում է:

Չնչին է ավելի շատ երգեր ավելացնելը: Մանրամասների համար տե՛ս README.md երգերում:

Կոճակ A- ն կենդանացնում է NeoPixels- ը, B- ն նվագում է երաժշտություն, բայց ոչ միաժամանակ

code.py

def button_a_pressed ():

եթե երաժշտություն երաժշտություն երաժշտությունից միացված կամ անջատված: stop () այլ ՝ music.play ()

Նույնիսկ ավելի արդյունավետ հիշողության արդյունավետ երաժշտական կառավարման համակարգով, ես չկարողացա պահման ընթացքում պահել 2 անիմացիա ՝ միաժամանակ նվագելով դրանցից 1 -ը և միաժամանակ մի երգ նվագել: Քանի որ ես արդեն ընտրել էի, որ VU մետրը ընդհանրապես չլինի գործարկման ժամանակ, ես չէի ուզում անիմացիաների քանակը կրճատել մինչև 1: Այսպիսով, ես գրել եմ կոդը այնպես, որ կա՛մ անիմացիան նվագի, կա՛մ երաժշտությունը նվագարկվի, այլ ոչ երկուսն էլ: Մեկ այլ տարբերակ էր նվազեցնել NeoPixels- ի քանակը, սակայն դա կզրկվեր անիմացիայի զովությունից:

Python Code Funkiness

Չնայած ես ծրագրաշարի վետերան եմ, ես երբեք Python չէի գրել: Այն բանից հետո, երբ ես հասկացա այն և սկսեցի կիրառել կոդավորման լավ պրակտիկա, ինչպիսիք են ծածկապատումը և մոդուլյարացումը, ես արագ պարզեցի, որ օգտագործում եմ չափազանց շատ գործարկման ժամանակ հիշողություն: Այսպիսով, կա մի քիչ քիչ ՉՈՐ կոդ: Ես նաև ստիպված եղա օգտագործել MicroPython- ի որոշ տեխնիկա, ինչպիսիք են const () - ն, որպեսզի ավելի նվազեցնեմ գործարկման ժամանակ հիշողության խնդիրները:

Կազմված մոդուլներ

կազմել

#!/bin/bash

compiler = ~/development/circuitpython/mpy-cross-3.x-windows.exe cd երգեր python3./convert_to_binary.py cd.. f in *.py; անել, եթե

Նախագծի սկզբում ես հետևեցի Ադաֆրուտի խորհրդին և պահեցի Adafruit CircuitPython- ի բոլոր գրադարանները ֆլեշի վրա: Այնուամենայնիվ, սա փոքր տեղ թողեց իմ նախագծի համար: Որպեսզի կարողանամ իմ կոդը ստանալ CPX- ի վրա, ես սկսեցի հավաքել մոդուլները և տեղադրել դրանք MCU- ում: Պարզվում է, որ Holi-Tie- ին արտաքին գրադարաններից ոչ մեկը պետք չէ: UF2- ում առկա գրադարանները բավարար էին այս ծրագրի համար: *. Mpy ֆայլերը մի փոքր ավելի արդյունավետ են, այնպես որ ես պահեցի կազմված մոդուլների տեղակայման գործընթացը:

Ինչպես ակնհայտ է վերևում կազմված սցենարում, ես աշխատում եմ Windows մեքենայի վրա, բայց օգտագործում եմ Unix կոմունալ ծառայություններ, ինչպիսիք են bash և python3: Ես օգտագործում եմ Cygwin- ը դա իրականացնելու համար: Այս սցենարը կարող է հեշտությամբ թարգմանվել DOS խմբաքանակի և Windows- ի բնիկ Python3- ի ներդրման:

Քայլ 8: Կողպեք փողկապը

Վզկապը կոճկելը
Վզկապը կոճկելը
Վզկապը կոճկելը
Վզկապը կոճկելը

Վերջնական քայլն այն է, որ փողկապի միջուկը նորից տեղադրվի տեղում, փողկապը նորից հավաքվի և նորից կարվի: Համոզված եղեք, որ կարողանաք CPX- ը հասանելի դարձնել: Դա ձեզ հարկավոր կլինի մարտկոցը փոխարինելիս կամ կոդի փոփոխություններ կատարելիս:

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