Sisukord:

Holi-tie: 8 sammu (piltidega)
Holi-tie: 8 sammu (piltidega)

Video: Holi-tie: 8 sammu (piltidega)

Video: Holi-tie: 8 sammu (piltidega)
Video: 8 инструментов в Excel, которыми каждый должен уметь пользоваться 2024, Juuli
Anonim
Image
Image

Monkey PatchingFollow autori lisateavet:

Valgustav koerte kaldtee
Valgustav koerte kaldtee
Terasüdame ja sulatatud klaasist skulptuur
Terasüdame ja sulatatud klaasist skulptuur
Terasüdame ja sulatatud klaasist skulptuur
Terasüdame ja sulatatud klaasist skulptuur
Vasktraat ja sulatatud klaasist liblikas
Vasktraat ja sulatatud klaasist liblikas
Vasktraat ja sulatatud klaasist liblikas
Vasktraat ja sulatatud klaasist liblikas

Teave: lihtsalt mees, kes soovib teha lahedaid asju Lisateave gwfongi kohta »

See on pidulik lips Holi-Tie, mis on mõeldud pühade ajal kandmiseks. Becky Sterni Ampli-Tie põhjal, mis kasutab Flora tahvlit, kasutab Holi-Tie NeoPixeli animatsioonide ja muusika juhtimiseks Circuit Python Express (CPX) mikrokontrollerit. Nupp vahetab kahe erineva NeoPixeli animatsiooni vahel. Mahutavad puutepadjad muudavad NeoPixeli värve ja animatsiooni kiirust. Teine nupp vahetab LED -animatsiooni ja muusika vahel. Rongisisest mikrofoni kasutatakse sõidukiüksuse mõõturi animatsiooni ümbritseva müra mõõtmiseks. Ja CPX kõlar väljastab puhkuse kiipide lugusid.

Kõik on kodeeritud Pythoni programmeerimiskeele abil, mis töötab CircuitPython süsteemi peal. Selle toiteallikaks on 3,7 V, 500 mAh LiPo aku, mis on muudetud sisse- ja väljalülitamiseks.

Holi-Tie on näidatud kahes videoklipis:

  • Valmis Holi-Tie
  • Holi-Tie sees

Samm: osad ja tööriistad

Osad

  • Circuit Playground Express
  • 15x Flora neopikslid
  • Magnettraat
  • Kleepuv konks ja silmuslint
  • 500 mAh lipoaku koos JST -pistikuga
  • Candy Cane lips
  • Miniliuglüliti, SPDT
  • Kuumakahandavad torud

Osade hankimisel oleks mõistlik juurde osta. Mul oli kokku 20 NeoPikslit, millest üks oli algusest peale katki ja teine rikkus. Candy Cane lips oli nii odav, et ostsin teise igaks juhuks, kui esimese ära rikkusin.

Tööriistad

  • Kuum liimipüstol
  • Jootmisjaam
  • Traadilõikurid
  • Väike nuga
  • Multimeeter
  • Arvuti
  • Kergem või soojuspüstol
  • Niit ja nõel

2. samm: lipsu ettevalmistamine

Lipsu ettevalmistamine
Lipsu ettevalmistamine
Lipsu ettevalmistamine
Lipsu ettevalmistamine
Lipsu ettevalmistamine
Lipsu ettevalmistamine

Peamine eesmärk on pääseda sisse sisemise sideme südamikule ja piiritleda jooned, mis näitavad, kuhu LED -id tuleks paigutada.

Samm: siduge lips oma kohale

Kui elektroonika on paigas, on lipsu raske siduda. Nii et siduge lips nii, et see näeks hea välja ja sõlm oleks üsna kindel ega läheks lahti. Seejärel tõmmake lipsu väikest otsa ettevaatlikult, et avada auk, et lips üle pea saada. See on positsioon, kus lipsuga tööd tehakse.

Lipsusõlmi on igasuguseid. Ma tean ainult seda, mida õppisin lapsena, Windsorit. Pole tähtis, millist sõlme kasutatakse.

2. samm: avage lipsu tagakülg

Rebige lipsu silmuse ja logo ühel küljel õmblused lahti ja seejärel lipsu keskelt alla. Olge ettevaatlik, sest see tuleb lõpus tagasi õmmelda.

Samm: joonistage jooned, kuhu LED -id tuleks paigutada

Selleks, et LED -id ilmuksid lipsu valgete ribade sektsioonidesse, on lihtsam leida iga valge triibulõigu keskjoon lipsusüdamiku tagaküljelt ja seejärel kaardistada see lipsusüdamiku esiküljele. Kontrollige ja kontrollige uuesti, kas keskjoon on 1) keskel ja 2) triibuga paralleelne. LED -asendite peenhäälestamine on võimalik, kui need on pisut välja lülitatud. Kuid kõige parem on saada see võimalikult lähedale kohe, mitte hiljem.

Testige joonte tsentreeritust, asetades joontele valgusdioodid ja asetades triibukanga peale. Vajadusel reguleerige.

Samm: NeoPikslite kinnitamine

NeoPikslite kinnitamine
NeoPikslite kinnitamine
NeoPikslite kinnitamine
NeoPikslite kinnitamine
NeoPikslite kinnitamine
NeoPikslite kinnitamine
NeoPikslite kinnitamine
NeoPikslite kinnitamine

Põhimõtteliselt valmistame oma LED -riba. Me lihtsalt paigaldame valgusdioodid sideme südamikule ja ühendame need seejärel üksteisega.

Samm: kleepige NeoPikslid lipsu südamikule

Asetage kuuma liimi tups NeoPixeli tagaküljele ja asetage see keskjoontele. Kolme NeoPiksliga lõikude puhul joondage vertikaalselt keskne NeoPixel ja liimige need kõigepealt alla. See hõlbustab vasaku ja parema NeoPixeli paigutamist keskpunkti suhtes, eriti arvestades, et lipsu laius suureneb ülevalt alla.

Suunake kindlasti kõik NeoPikslid samas suunas, liikudes alt vasakult paremale. Kui see pole õige, siis riba ei tööta.

Märkus kuuma liimi kohta. Piisab projekti lõpuleviimisest. Kas see kestab veel aastaid, peab lihtsalt nägema.

Samm: jootke NeoPikslid üksteise külge

Kuna otsustasin juhtiva niidi asemel NeoPixeleid kokku joota, töötab NeoPixeli padjandite auk natuke meie vastu. Leidke lihtsalt padjalt hea koht traadi jootmiseks. Ärge proovige auku joodisega täita, kuid kui see juhtub, on kõik korras.

Magnettraadil on vasksüdamiku ümber õhuke isolatsioonikiht. Kraapige noaga isolatsioon maha just nende otstest, kus need joodetakse. Parim on kraapida kogu traadi ümbermõõt.

4. samm: kontrollige ühenduvust

Kasutage multimeetrit, et testida järgmist:

  1. Positiivsed ühendused. Ühendus peaks olema otsast sabani. Veenduge, et testühendused oleksid padjadel, mitte juhtmel.
  2. Maaühendused. Tehke sama katse, kuid maapindadega.
  3. Iga andmerida. Kontrollige ühelt andmeplokilt teisele, kas ühendus on olemas.

Samm 4: Circuit Playground Expressi kinnitamine

Circuit Playground Expressi kinnitamine
Circuit Playground Expressi kinnitamine

Circuit Playground Express (CPX) on süsteemi süda. Adafruitil on selle kontrolleri jaoks palju õpetusi. Hiljem selles juhendis toon välja mõned MCU funktsioonid.

1. samm: jootke CPX alumise otsaga NeoPixel

Lõika magnetjuhtme pikkused toite, maanduse ja andmete jaoks sobivaks. Lükake need läbi lipsu südamiku kanga nii, et need puudutaksid NeoPixeli toite-, maandus- ja andmepadjakesi. Jootke need maha, veendudes, et patjade olemasolevad juhtmed loovad endiselt hea ühenduse.

Seejärel keerake lipsusüdamik ümber ja asetage CPX soovitud asendisse. Viige toitejuhe VOUT -padjale, maandusjuhe mistahes maandusplaadile ja andmesidejuhtmele mis tahes muu sisend-/väljundplokk peale A0. Minu kirjutatud kood kasutab A3.

Testige ühenduvust.

2. samm: siduge CPX kinni

Valige niidi ja nõela abil suvalised neli võrdse kaugusega padja ja õmblege need lipsu südamikule.

Samm: CPX -i toide

CPX toide
CPX toide
CPX toide
CPX toide
CPX toide
CPX toide

CPX -l pole sisse/välja lülitit. See tähendab, et aku sisselülitamisel lülitub lips sisse. See tähendab ka seda, et ainus viis selle väljalülitamiseks on aku lahti ühendamine, mis on suur probleem. Lihtne lahendus on aku sisse/välja lülitamine.

Samm: katkestage lüliti kolmas tihvt

Ühte tsentrivälist tihvti pole vaja. Katkestage see lüliti korpusega samal tasemel.

2. samm: jootke lüliti akujuhtme reas

Katkestage aku maandusjuhe kuskil keskel. Libistage termokahaneva toru tükk igale maandusjuhtmele. Jootke üks maandusjuhe ühe tihvti külge ja teine maandusjuhe teise tihvti külge. Veenduge, et need ei puudutaks üksteist või jootet metallkeha.

Veenduge, et need pole multimeetriga ühendatud. Lükake toru üle joodetud ühenduste ja kahandage seda. Lisage natuke elektrilinti igale osale, mis võib painutusväsimuse tõttu ebaõnnestuda.

Samm: kontrollige, kas aku töötab

Sel hetkel saab aku CPX -i ühendada. Kui kõik läks hästi, peaks lüliti saama CPX -i sisse ja välja lülitada.

Samm: paigaldage aku

Asetage natuke kleepuvat konksu ja silmuslinti aku tagaküljele ja sideme südamikule. See hoiab seda paigal, kui lipsu ei käsitata liiga palju.

6. samm: Circuit Playground Expressi seadistamine

Ma ei hakka CPX -i seadistamise üksikasjadesse laskuma. Adafruit teeb seda ja siis mõned. Annan mõned näpunäited probleemide kohta, millega ma üsna sageli kokku puutusin.

CPX külmub

Tõenäoliselt jooksuaja mälu probleemide tõttu külmub CPX üsna sageli. Kiire lahendus on kustutamine ja uuesti vilkumine. Otsige nendest juhistest sõna „Vana tee”. Põhimõtteliselt on see paar nupuvajutust, kustutamiseks lohistamine ja seejärel uuesti vilkumiseks lohistamine.

Hoiatus: see kustutab kõik. Kogu CPX -i kood läheb kaduma.

CPX -i muudatuste salvestamine võib põhjustada probleeme

Avastasin, et mõnikord on pärast faili salvestamist CPX -i pythoni käitusaeg halvas seisus. Paranduseks oli taaskäivitada püütoni käitusaeg, vajutades lähtestamisnuppu. Vajutage seda ainult üks kord. Kui vajutate seda kaks korda, käivitub uuesti välgutamise protsess.

Otse CPX -i salvestamine on riskantne

Võimaluse tõttu, et CPX tuleb uuesti vilkuda, on oht kaotada kogu nende kood. Olles oma koodi kaks korda kaotanud, tulin välja lihtsa töövooga. Salvestaksin oma koodi kohalikule kõvakettale. Kui see oli CPX -is testimiseks valmis, kopeeriksin selle lihtsalt, käivitades lihtsa juurutamisskripti.

Samm 7: Circuit Playground Expressi kodeerimine

Siinkohal on CPX ja NeoPixels üsna valmis. Nendega ei pea tegema muid mehaanilisi ega elektrilisi töid. Ülejäänud on kõik tarkvara.

Koodi leiate minu githubi kontolt. Põhiline python -kood peaks töötama kõigi operatsioonisüsteemide jaoks ilma muudatusteta. Ärge installige väliseid Adafruit CircuitPythoni teeke. Neid ei kasutata.

Siin on kõrgel tasemel kokkuvõte koodis toimuvast.

Milline sisend teeb mida?

  • Nupp A: liigub läbi LED -animatsioonide
  • Nupp B: liigub lugude vahel
  • Mahtuvuslik puuteplaat A1: muudab LED -animatsioonide värve
  • Mahtuvuslik puuteplaat A6: muudab LED -animatsioonide kiirust

Olemas on 3 animatsiooni, kuid ainult 2 toimivad

code.py

pikslivälja importimine

#import vumeter import trepid import twinkle… led_animations = [pixelsoff. PixelsOff (pikslid), # vumeter. VuMeter (pikslid, 100, 400) trepid. Trepid (pikslit), vilkumine. Twinkle (pikslid)]

Porteerisin Ampli-Tie VU arvesti stiilikoodi. See kasutab CPX -mikrofoni heli vastuvõtmiseks ja NeoPixelite valgustamiseks vastavalt heli amplituudile. Siiski tahtsin rohkem animatsioone. Käitusaja mälu piirangute tõttu pidin valima, milliseid animatsioone ma soovin. Nii et vaikimisi töötavad ülejäänud kaks, Trepid ja Twinkle, ilma koodi muutmata. Sõidukiüksuse mõõturi animatsiooni käivitamiseks tuleb üks või mõlemad animatsioonid kommenteerida ja sõidukiüksuse mõõtur kommenteerimata jätta.

Muusikahaldur ja võrguühenduseta kodeerimine

frosty_the_snowman.py

importige muusikalisi märkmeid kui mn

# Frosty the Snowman # Walter E. Rollinsi laul = [(mn. G4, mn. HLF), (mn. E4, mn. DTQ), (mn. F4, mn. ETH), (mn. G4, mn. QTR), (mn. C5, mn. HLF),…

convert_to_binary.py

laulud = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] laulu jaoks lauludes: data = song [0] file = song [1] with open (file, "wb") bin_failina: andmete sisestamiseks: print ("kirjutamine:" + str (kirje)) märkus = kirje [0] dur = kirje [1] bin_file.write (strukt.pack ("<HH", märkus, dur))

Tahtsin pühade muusikat. CPX toetab nii WAV -i kui ka toone. WAV -failid osutusid faili suuruse ja käitusmälu poolest liiga suureks. Python andmestruktuuride kasutamine toonide hoidmiseks ja nende kestus osutus samuti liiga palju käitusmälu kasutavaks. Nii muutsin Holi-Tie koodi, et lugeda kokkusurutud binaarfaili, mis sisaldas ainult vajalikke lauluandmeid kokkusurutud binaarses vormingus. Kirjutasin skripti, mis loeb pitoni andmestruktuuris hoitava laulu ja kirjutab selle binaarsesse vormingusse. Kui lugu on failis kodeeritud kahendandmetena, muutub lugu nii väikeseks kui ka dünaamiliseks. Kui lugu on mängitud, vabastatakse mälu.

Laulude lisamine on tühine. Üksikasjalikuma teabe saamiseks lugege lugudes README.md.

Nupp A animeerib NeoPiksleid, B esitab muusikat, kuid mitte samaaegselt

code.py

def button_a_pressed ():

if music.is_playing (): # Peata muusika muusika esitamisel. stop () next_led_animation () def button_b_pressed (): if active_led_animation! = 0: # Käivita animeeritud animatsioon next_led_animation (0) if music.is_playing (): # Toggle muusika muusika sisse või välja. stop () else: music.play ()

Isegi mälusäästlikuma muusikahaldussüsteemi puhul ei suutnud ma käitusmälus hoida 2 animatsiooni, mängides neist üht ja mängida ka laulu korraga. Kuna ma juba valisin, et VU -mõõturit ei kasutataks üldse tööaja mälus, ei tahtnud ma vähendada animatsioonide arvu vaid 1 -ni. Nii et kirjutasin koodi nii, et animatsioon mängib või muusika mängib, kuid mitte mõlemad. Teine võimalus oli vähendada NeoPixelite arvu, kuid see kaotaks osa animatsiooni jahedusest.

Pythoni koodi funktsionaalsus

Kuigi ma olen veteran -tarkvaraarendaja, polnud ma kunagi Pythoni kirjutanud. Kui olin asja selgeks saanud ja häid kodeerimistavasid, nagu kapseldamine ja modulaarne, rakendama hakkasin, avastasin kiiresti, et kasutan liiga palju käitusmälu. Seega on üsna palju mitte-KUIVA koodi. Ma pidin kasutama ka mõnda MicroPythoni tehnikat, näiteks const (), et veelgi vähendada tööaja mälu probleeme.

Koostatud moodulid

koostama

#!/bin/bash

kompilaator = ~/development/circuitpython/mpy-cross-3.x-windows.exe cd laulud python3./convert_to_binary.py cd.. f jaoks *.py; tee, kui

Projekti alguses järgisin Adafruit'i nõuandeid ja salvestasin kõik Adafruit CircuitPythoni teegid välklampi. See jättis aga minu projekti jaoks vähe ruumi. Oma koodi CPX -ile jõudmiseks hakkasin mooduleid koostama ja MCU -sse paigutama. Selgub, et Holi-Tie ei vaja ühtegi välist raamatukogu. Selle projekti jaoks piisas UF2 olemasolevatest raamatukogudest. *. Mpy failide käitamine on natuke tõhusam, nii et jätkasin kompileeritud moodulite juurutamise protsessi.

Nagu ülaltoodud kompileerimisskriptist ilmneb, töötan Windowsi masinaga, kuid kasutan selliseid Unixi utiliite nagu bash ja python3. Selle saavutamiseks kasutan Cygwini. Seda skripti saab hõlpsasti tõlkida DOS -i partii ja Windowsi native Python3 juurutamiseks.

8. samm: lipsu nööpimine

Lipsu nööpimine
Lipsu nööpimine
Lipsu nööpimine
Lipsu nööpimine

Viimane samm on lipsusüdamiku tagasi panemine, lipsu kokkupanek ja õmblemine. Kindlasti saate muuta CPX -i juurdepääsetavaks. Seda vajate aku vahetamisel või koodi muutmisel.

Soovitan: