Përmbajtje:

Lidhja Holi: 8 hapa (me fotografi)
Lidhja Holi: 8 hapa (me fotografi)

Video: Lidhja Holi: 8 hapa (me fotografi)

Video: Lidhja Holi: 8 hapa (me fotografi)
Video: DON XHONI - DILEMA (SHAH MAT) 2024, Korrik
Anonim
Image
Image

Nga gwfongMonkey PatchingFollow More nga autori:

Rampi i Qenit Ndriçues
Rampi i Qenit Ndriçues
Skulptura e Zemrës së Çelikut dhe Xhamit të Shkrirë
Skulptura e Zemrës së Çelikut dhe Xhamit të Shkrirë
Skulptura e Zemrës së Çelikut dhe Xhamit të Shkrirë
Skulptura e Zemrës së Çelikut dhe Xhamit të Shkrirë
Tela bakri dhe flutur qelqi i shkrirë
Tela bakri dhe flutur qelqi i shkrirë
Tela bakri dhe flutur qelqi i shkrirë
Tela bakri dhe flutur qelqi i shkrirë

Rreth: Vetëm një djalë që kërkon të bëjë gjëra interesante Më shumë rreth gwfong »

Kjo është kravata Holi, një kravatë festive e krijuar për t'u veshur gjatë pushimeve. Bazuar lirshëm në Ampli-Tie nga Becky Stern e cila përdor një tabelë Flora, Holi-Tie përdor një mikrokontrollues Circuit Python Express (CPX) për të drejtuar animacionet dhe muzikën NeoPixel. Një buton ndryshon midis 2 animacioneve të ndryshme NeoPixel. Pllakat kapacitore të prekjes ndryshojnë ngjyrat NeoPixel dhe shpejtësinë e animacionit. Butoni tjetër ndryshon midis animacioneve LED dhe muzikës. Mikrofoni në bord përdoret për të matur zhurmën e ambientit për animacionin e njehsorit VU. Dhe altoparlanti CPX jep meloditë e çipave të pushimeve.

Çdo gjë është e koduar duke përdorur gjuhën e programimit Python që funksionon mbi sistemin CircuitPython. Mundësohet nga një bateri LiPo 3.7V, 500mAH e cila u modifikua për të pasur një çelës on/off.

Ka dy videoklipe që tregojnë Holi-Tie:

  • Përfunduar Holi-Tie
  • Brenda kravatës Holi

Hapi 1: Pjesët dhe mjetet

Pjesët

  • Circuit Playground Express
  • 15x neopixelë të Florës
  • Teli magnetik
  • Shirit ngjitës dhe fiksues
  • Bateri lipo 500mAH me lidhës JST
  • Kravatë Candy Cane
  • Mini çelës rrëshqitës, SPDT
  • Tub i tkurrjes së nxehtësisë

Kur ndihmoni pjesët, do të ishte e mençur të blini shtesa. Unë kisha gjithsej 20 NeoPixel, një prej të cilëve ishte prishur që në fillim dhe një i shkatërrova. Kravata Candy Cane ishte aq e lirë sa bleva një të dytë vetëm në rast se prishja të parën.

Mjetet

  • Armë me zam të nxehtë
  • Stacioni i saldimit
  • Preres telash
  • Thikë e vogël
  • Multimetër
  • Kompjuter
  • Armë më e lehtë ose e nxehtë
  • Fije dhe gjilpërë

Hapi 2: Gatimi i kravatës

Përgatitja e kravatës
Përgatitja e kravatës
Përgatitja e kravatës
Përgatitja e kravatës
Përgatitja e kravatës
Përgatitja e kravatës

Qëllimi kryesor është të keni qasje në bërthamën e brendshme të lidhjes dhe të përcaktoni linjat që tregojnë se ku duhet të vendosen LED -të.

Hapi 1: Lidheni kravatën në pozicion

Do të jetë e vështirë të lidhësh kravatën kur pajisjet elektronike të jenë në vend. Pra lidhni kravatën në mënyrë që të duket mirë dhe nyja të jetë mjaft e fortë dhe nuk do të zbërthehet. Pastaj tërhiqni me kujdes skajin e vogël të kravatës për të hapur vrimën për të marrë kravatë mbi kokë. Ky është pozicioni në të cilin kravata do të punohet.

Ka të gjitha llojet e nyjeve të ndryshme të kravatës. Unë njoh vetëm atë që kam mësuar si fëmijë, Windsor. Nuk duhet të ketë rëndësi se cila nyjë përdoret.

Hapi 2: Hapni pjesën e pasme të kravatës

Hiqni qepjet në njërën anë të lakut të lidhjes dhe logos dhe pastaj poshtë në qendër të kravatës. Kini kujdes sepse duhet të qepet përsëri në fund.

Hapi 3: Vizatoni linja ku duhet të vendosen LED -të

Për të shfaqur LED në pjesët me shirita të bardhë të kravatës, është më e lehtë të gjesh vijën qendrore për secilën pjesë të shiritave të bardhë në pjesën e prapme të bërthamës së kravatës dhe më pas ta hartosh atë në pjesën e përparme të bërthamës së kravatës. Kontrolloni dhe kontrolloni dy herë që vija qendrore të jetë 1) në qendër dhe 2) paralele me shiritin. Rregullimi i mirë i pozicioneve LED do të jetë i mundur nëse ato janë pak të fikura. Por është mirë që ta merrni sa më afër që të jetë e mundur sesa më vonë.

Provoni përqendrimin e linjave duke vendosur LED në linja dhe duke vendosur pëlhurën me shirita në krye. Rregulloni aty ku është e nevojshme.

Hapi 3: Bashkimi i NeoPixels

Bashkimi i NeoPixels
Bashkimi i NeoPixels
Bashkimi i NeoPixels
Bashkimi i NeoPixels
Bashkimi i NeoPixels
Bashkimi i NeoPixels
Bashkimi i NeoPixels
Bashkimi i NeoPixels

Në thelb, ne po bëjmë shiritin tonë LED. Ne thjesht i montojmë LED -të në bërthamën e lidhjes dhe pastaj i lidhim ato me njëri -tjetrin.

Hapi 1: Ngjitini NeoPixels në thelbin e lidhjes

Vendosni një copë zam të nxehtë në pjesën e prapme të NeoPixel vendoseni në linjat qendrore. Për pjesët me 3 NeoPixel, drejtoni vertikalisht NeoPixel qendror dhe ngjitini ato së pari poshtë. Kjo do ta bëjë më të lehtë pozicionimin e NeoPixelit të majtë dhe të djathtë në lidhje me qendrën, veçanërisht duke pasur parasysh që gjerësia e kravatës rritet nga lart poshtë.

Sigurohuni që të orientoni të gjithë NeoPixels në të njëjtin drejtim, duke shkuar nga poshtë majtas në të djathtën e sipërme. Nëse kjo nuk është e saktë, shiriti nuk do të funksionojë.

Një shënim për ngjitësin e nxehtë. Do të jetë e mjaftueshme për të përfunduar projektin. Sa i përket asaj nëse do të zgjasë për vitet në vijim, vetëm duhet parë.

Hapi 3: Lidhni NeoPixels me njëri -tjetrin

Për shkak se vendosa t'i bashkoj NeoPixels së bashku në vend që të përdor fije përçuese, vrima në jastëkët NeoPixel funksionon pak kundër nesh. Thjesht gjeni një vend të mirë në jastëk për të ngjitur tela. Mos u mundoni ta mbushni vrimën me saldim, por nëse ndodh, do të jetë në rregull.

Teli magnet ka një shtresë të hollë izolimi rreth një bërthame bakri. Me një thikë, hiqni izolimin vetëm në skajet ku do të ngjiten. Bestshtë mirë që të rrëshqisni të gjithë perimetrin e telit.

Hapi 4: Testoni lidhshmërinë

Përdorni një multimetër për të testuar lidhshmërinë e:

  1. Lidhje pozitive. Duhet të ketë lidhje nga maja në bisht. Sigurohuni që lidhja e provës të jetë në pads dhe jo tela.
  2. Lidhjet tokësore. Kryeni të njëjtin test, por me pads tokësore.
  3. Çdo linjë e të dhënave. Nga një bllok i të dhënave në tjetrën, verifikoni që ka lidhje.

Hapi 4: Bashkimi i Circuit Playground Express

Bashkëngjitja e Qarkut Express Playground
Bashkëngjitja e Qarkut Express Playground

Circuit Playground Express (CPX) është zemra e sistemit. Adafruit ka mësime të shumta për këtë kontrollues. Më vonë në këtë udhëzues, unë do të nxjerr në pah disa nga veçoritë e MCU.

Hapi 1: Ngjitni CPX në majën e poshtme NeoPixel

Pritini gjatësitë e përshtatshme të telit magnetik për fuqinë, tokën dhe të dhënat. Shtyjini ato përmes pëlhurës së lidhjes në mënyrë që të prekin fuqinë, tokëzimin dhe tabelat e të dhënave të NeoPixel. Ngjitini ato duke u siguruar që telat ekzistues në jastëkët të kenë akoma lidhje të mirë.

Më pas ktheni bërthamën e kravatës dhe vendoseni CPX në pozicionin e dëshirës. Furnizoni telin e rrymës në bllokun VOUT, tela tokëzues në çdo jastëk tokëzimi dhe tela e të dhënave në çdo jastëk I/O të ndryshëm nga A0. Kodi që kam shkruar përdor A3.

Testoni lidhshmërinë.

Hapi 2: Lidheni CPX

Duke përdorur një fije dhe gjilpërë, zgjidhni çdo katër jastëkë me distancë të barabartë dhe qepini ato në bërthamën e lidhjes.

Hapi 5: Fuqizimi i CPX

Fuqizimi i CPX
Fuqizimi i CPX
Fuqizimi i CPX
Fuqizimi i CPX
Fuqizimi i CPX
Fuqizimi i CPX

CPX nuk ka një çelës on/off. Kjo do të thotë që në momentin kur bateria është e kyçur, kravata do të ndizet. Kjo do të thotë gjithashtu se mënyra e vetme për ta fikur atë është duke shkëputur baterinë, e cila është një sherr i madh. Një zgjidhje e thjeshtë është të vendosni një çelës fikje/fikje të baterisë.

Hapi 1: Pritini kunjin e tretë në ndërprerës

Një nga kunjat jo-qendrore nuk është e nevojshme. Pritini atë në të njëjtin nivel me trupin e ndërprerësit.

Hapi 2: Ngjitni ndërprerësin në linjë të një plumbi të baterisë

Pritini telin e tokëzimit të baterisë diku në mes. Rrëshqitni një pjesë të tubit të tkurrjes së nxehtësisë në secilën prej telave të tokëzimit. Lidhni një tel tokëzues në njërën nga kunjat dhe tela tjetër tokëzues në kunjin tjetër. Sigurohuni që ato të mos prekin njëri -tjetrin ose saldimi të prekë trupin metalik.

Verifikoni që ato nuk janë të lidhura duke përdorur një multimetër. Rrëshqitni tubin mbi lidhjet e salduara dhe tkurreni atë. Shtoni pak shirit elektrik në çdo pjesë që mund të dështojë për shkak të lodhjes së lakimit.

Hapi 3: Verifikoni që bateria funksionon

Në këtë pikë, bateria mund të lidhet me CPX. Nëse gjithçka shkoi mirë, çelësi duhet të jetë në gjendje të ndezë dhe fikë CPX.

Hapi 4: Montoni baterinë

Vendosni një grusht ngjitës dhe shirit ngjitës në anën e pasme të baterisë dhe në thelbin e kravatës. Kjo do ta mbajë atë në vend nëse kravata nuk trajtohet shumë.

Hapi 6: Vendosja e Circuit Playground Express

Unë nuk do të hyj në detaje se si të konfiguroni CPX. Adafruit e bën këtë dhe pastaj disa. Unë do të jap disa këshilla për çështjet që kam hasur mjaft shpesh.

CPX ngrin

Ndoshta për shkak të problemeve të kujtesës në kohë, CPX do të ngrijë mjaft shpesh. Rregullimi i shpejtë është fshirja dhe rindezja. Kërkoni për "Rrugën e Vjetër" në këto udhëzime. Në thelb, bëhet fjalë për disa shtypje të butonave, një tërheqje dhe rënie për ta fshirë, dhe më pas një tërheqje e rënie për t'u ndezur përsëri.

Paralajmërim: Kjo fshin gjithçka. I gjithë kodi në CPX do të humbasë.

Ruajtja e ndryshimeve në CPX mund të shkaktojë probleme

Zbulova se ndonjëherë pas ruajtjes së një skedari në CPX koha e përdorimit të pythonit do të ishte në gjendje të keqe. Rregullimi ishte rifillimi i kohës së përdorimit të python duke shtypur butonin e rivendosjes. Shtypeni atë vetëm një herë. Shtypja e tij dy herë do të fillojë procesin e rindezjes.

Kursimi direkt në CPX është i rrezikshëm

Për shkak të mundësisë që CPX duhet të rishfaqet, dikush rrezikon të humbasë të gjithë kodin e tij. Pasi kam humbur kodin tim dy herë, kam dalë me një rrjedhë të thjeshtë pune. Unë do ta ruaja kodin tim në hard diskun lokal. Kur ishte gati për t'u testuar në CPX, unë thjesht do ta kopjoja duke ekzekutuar një skript të thjeshtë të vendosjes.

Hapi 7: Kodimi i Circuit Playground Express

Në këtë pikë, CPX dhe NeoPixels janë shumë të plotë. Asnjë punë tjetër mekanike ose elektrike nuk duhet të bëhet me to. Pjesa tjetër është e gjitha softuer.

Kodi mund të gjendet në llogarinë time github. Kodi bazë python duhet të funksionojë pa asnjë ndryshim për të gjitha sistemet operative. Mos instaloni bibliotekat e jashtme Adafruit CircuitPython. Ato nuk përdoren.

Këtu është një përmbledhje e nivelit të lartë të asaj që po ndodh në kod.

Çfarë Input Çfarë Çfarë?

  • Butoni A: Ciklet përmes animacioneve LED
  • Butoni B: Ciklet nëpër këngë
  • Mbulesa me prekje kapacitore A1: Ndryshon ngjyrat për animacionet LED
  • Mbulesa prekëse kapacitive A6: Ndryshon shpejtësinë e animacioneve LED

3 animacione ekzistojnë por vetëm 2 janë në fuqi

kod.py

importoni pixelsoff

# import vumeter import shkallët import vezullim … led_animations = [pixelsoff. PixelsOff (pixel), # vumeter. VuMeter (pixel, 100, 400) shkallët. Shkallët (piksele), vezullim. Shkrepësim (piksele)]

Portova kodin e stilit të njehsorit Ampli-Tie VU. Ai përdor mikrofonin CPX për të marrë tingullin dhe ndriçuar NeoPixels bazuar në amplituda e zërit. Sidoqoftë, doja më shumë animacione. Për shkak të kufizimeve të kujtesës gjatë ekzekutimit, më duhej të zgjidhja cilat animacione doja. Pra, si parazgjedhje dy të tjerët, Stairs dhe Twinkle, do të funksionojnë pa pasur nevojë të bëjnë ndryshime në kod. Për të ekzekutuar animacionin e njehsorit VU, njëra ose të dyja animacionet e tjera duhet të komentohen dhe metri VU të mos komentohet.

Menaxher i muzikës dhe kodim jashtë linje

i ftohtë_the_njeri.py

importo shënime muzikore si mn

# Frosty the Snowman # Walter E. Rollins këngë = [(mn. G4, mn. HLF), (mn. E4, mn. DTQ), (mn. F4, mn. ETH), (mn. G4, mn. QTR), (mn. C5, mn. HLF),…

convert_to_binary.py

kenge = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] për këngë në këngë: data = song [0] file = song [1] me hapur (file, "wb") si bin_file: për futjen në të dhëna: print ("shkrim:" + str (hyrje)) shënim = hyrje [0] dur = hyrje [1] bin_file.write (struct.pack ("<HH", shënim, dur))

Doja muzikë pushimi. CPX mbështet si WAV ashtu edhe tonet. Skedarët WAV dolën të jenë shumë të mëdhenj për sa i përket madhësisë së skedarit dhe kujtesës së ekzekutimit. Përdorimi i strukturave të të dhënave python për të mbajtur tonet dhe kohëzgjatja e tyre gjithashtu rezultoi se përdorte shumë memorie gjatë ekzekutimit. Kështu që unë ndryshova kodin Holi-Tie për të lexuar një skedar binar të ngjeshur i cili përmbante vetëm të dhënat e nevojshme të këngës në një format binar të ngjeshur. Kam shkruar një skenar i cili lexon një këngë të mbajtur në një strukturë të të dhënave python dhe e shkruan atë në formatin binar. Kodimi i këngës si të dhëna binare në një skedar e bën këngën të vogël dhe dinamike. Pasi kënga të ketë përfunduar së luajturi, kujtesa lëshohet.

Trishtë e parëndësishme të shtosh më shumë këngë. Për detaje, shihni README.md në këngë.

Butoni A animon NeoPixels, B Luan Muzikë, Por Jo Njëkohësisht

kod.py

def button_a_pressed ():

if music.is_playing (): # Ndalo muzikën nëse luan muzikë.stop () next_led_animation () def button_b_pressed (): if active_led_animation! = 0: # Drejto animacionin pa operim next_led_animation (0) nëse muzika.është_ luajtje (): # Toggle muzikë on ose off music.stop () tjetër: music.play ()

Edhe me sistemin e menaxhimit të muzikës më efikase të kujtesës, unë nuk isha në gjendje të mbaja në kujtesë në kohën e funksionimit 2 animacione, ndërsa luaja 1 prej tyre dhe gjithashtu luaja një këngë të gjitha në të njëjtën kohë. Për shkak se unë tashmë kam zgjedhur të mos kem VU metër në kujtesën e ekzekutimit fare, nuk doja ta zvogëloja numrin e animacioneve në vetëm 1. Kështu që unë shkrova kodin në mënyrë që ose animacioni të luajë ose muzika të luajë, por jo te dyja. Një opsion tjetër ishte zvogëlimi i numrit të NeoPixels, por kjo do të humbte njëfarë freskie të animacionit.

Funksionaliteti i kodit Python

Edhe pse jam një zhvillues veteran i softuerit, nuk kisha shkruar kurrë Python. Pasi e kuptova dhe shikova duke aplikuar praktika të mira kodimi siç janë kapsulimi dhe modularizimi, shpejt zbulova se po përdorej shumë memorie gjatë ekzekutimit. Pra, ekziston një pjesë e drejtë e kodit jo të DRY. Unë gjithashtu duhej të përdorja disa teknika MicroPython të tilla si const () për të zvogëluar më tej çështjet e kujtesës në kohën e funksionimit.

Modulet e përpiluara

përpiloj

#!/bin/bash

përpilues = ~/development/circuitpython/mpy-cross-3.x-windows.exe këngë cd python3./convert_to_binary.py cd.. për f në *.py; bëni nëse

Në fillim të projektit ndoqa këshillën e Adafruit dhe ruajta të gjitha bibliotekat e Adafruit CircuitPython në flash. Sidoqoftë, kjo i la pak vend projektit tim. Për të qenë në gjendje të marr kodin tim në CPX, fillova të përpiloj modulet dhe t'i vendos ato në MCU. Rezulton se Holi-Tie nuk ka nevojë për asnjë nga bibliotekat e jashtme. Bibliotekat ekzistuese në UF2 ishin të mjaftueshme për këtë projekt. Drejtimi i skedarëve *.mpy është pak më efektiv, kështu që e mbajta procesin e vendosjes së moduleve të përpiluara.

Siç duket në skriptin e përpiluar më lart, unë jam duke punuar në një makinë Windows, por duke përdorur shërbimet Unix të tilla si bash dhe python3. Unë përdor Cygwin për ta arritur këtë. Ky skenar mund të përkthehet lehtësisht në seri DOS dhe një zbatim të Windows Python3.

Hapi 8: Button Up the kravatë

Buttoning Up the kravatë
Buttoning Up the kravatë
Buttoning Up the kravatë
Buttoning Up the kravatë

Hapi i fundit është që të vendosni bërthamën e kravatës përsëri në vend, të mblidhni kravatën dhe ta qepni përsëri. Sigurohuni që të jeni në gjendje ta bëni CPX të arritshme. Do t'ju duhet kur zëvendësoni baterinë ose bëni ndryshime në kod.

Recommended: