Kazalo:

Kako zgraditi svetlečo ukulelo!: 21 korakov
Kako zgraditi svetlečo ukulelo!: 21 korakov

Video: Kako zgraditi svetlečo ukulelo!: 21 korakov

Video: Kako zgraditi svetlečo ukulelo!: 21 korakov
Video: Meeting #5 - 4/29/2022 | ETF team meeting and dialogue 2024, Julij
Anonim
Image
Image
Narediti načrt
Narediti načrt

Igram Ukulele. Nekako povprečno (če je to beseda), sem si mislil, "če res želite narediti vtis na dame, potrebujete sredstvo, da jih odvrnete od katastrofe, ki se igra na odru." Tako se je rodil "Light-up Ukulele".

Ta projekt vključuje komplet Concert Ukulele in dodaja arduino nadzorovano LED na vsakem položaju niza in freta. Dodaja tudi domišljijski zaslon OLED in uporabniški vmesnik, ki temelji na rotacijskem kodirniku, za izbiro načina in intenzivnosti LED niza.

Dokončane funkcije strojne opreme uke:

  1. Arduino MICRO za vmesnik z LED nizom, zaslonom in vhodno napravo.
  2. 48 individualno programabilnih barvnih LED
  3. Zaslon OLED
  4. Rotacijski dajalnik za vnos uporabnika
  5. USB vmesnik za zunanje napajanje in programiranje Arduino

Programska oprema uke ima:

  1. Osnovni načini krmiljenja svetlobe, ki LED vodijo skozi njihove korake
  2. Odličen način gledališkega gledališča (zelo priročno za predstave!)
  3. Nadzor intenzivnosti LED
  4. Popolna knjižnica akordov vseh akordov Ukulele na prvem mestu (vrednost akorda in znak)
  5. Sposobnost prikaza tekočega besedila (navpično) z uporabo edinstvenega nabora znakov 4 x 6 slikovnih pik

Ta navodila opisujejo dokončan prototip. Celotna razvojna saga je na voljo TUKAJ, vključno z nekaterimi izobraževalnimi (bolečinskimi) napakami in dragoceno lekcijo, zakaj MORATE dokončati svojo prvo zasnovo do konca (ne glede na to, kako grde so stvari). Nikoli ne veš vseh stvari, ki jih res ne poznaš, dokler ne prideš do konca (in potem še vedno ne veš!), Vendar si veliko bolje in veliko pametnejši za naslednji dizajn.

Prototip sem zgradil okoli kompleta Grizzly Concert Ukulele. Začetek s kompletom odpravlja zaskrbljenost glede telesa uke (no, večinoma) in odpravlja večino pravega dela luttirskega tipa. Ti kompleti so precej popolni in niso tako dragi v veliki shemi stvari (in manj boleči, saj boste delali napake).

1. korak: Naredite načrt

Narediti načrt
Narediti načrt

Grenčica (ali prstna plošča), vključena v nekatere komplete, ima že pritrjene frete. To je dobro/slabo. To je lepo kot prihranek časa, vendar glede na postavitev vzorca vrtanja in njegovo držanje na mestu med rezkanjem, je to malo bolečina. Ko sem uničil tistega, ki je v kompletu, sem se odločil (no, nisem imel druge izbire kot nakup drugega kompleta) za nakup nove grede.

Pri načrtovanju grede moramo izračunati povečanje debeline, ki je potrebna za vgradnjo tiskanega vezja in LED (in ne pozabimo na pasivne komponente), vendar ne toliko, da so LED predaleč od površine gredi.

Tiskano vezje LED (PCB) je zasnovano kot preprosta dvoslojna plošča. To zelo pomaga pri ročnem sestavljanju LED svetilke in daje nekaj mehanske trdnosti (iz steklenih vlaken in epoksi) vratu Ukulele. Postavitev sem začel v Eaglu, vendar sem zaradi omejitev velikosti plošče končal z Altium Designerjem. Sheme Altium in datoteke PCB so tukaj.

Gredica kompleta je bila debela le 0,125 palca. Torej, če predpostavimo 0,062 palčno debelo tiskano vezje in dopustimo dodatnih 0,062 palca za LED diode, pomeni, da bi morali (kot pri vseh) veliko izrezati gred. Za kompenzacijo lahko delno odrežemo žepe za LED diode na gredi z ustreznim žepom v vratu za tiskano vezje ali pa celotno gredico (možnost, ki sem jo uporabil) zamenjamo z debelejšo različico Luther Mercantile International (LMII), kar je 0,25 palca za začetek.

Vendar ne pozabite, da boste morali še vedno obdelati vrat, da kompenzirate povečanje debeline v gredi. Druga prednost, ki jo dobite, je kozmetična, saj je tiskano vezje zdaj popolnoma vgrajeno v gredico, zaradi česar je robove veliko lažje zaključiti (in videti veliko lepše!) In poenostavi rezkanje vratu.

Inženirske stvari (prezrite, če želite):

Mimogrede, to res ne ogroža togosti vratu. Material PCB je veliko trši od prvotnega lesa iz grede (modul iz mahagonija: 10,6 GPa v primerjavi z modulom FR4: 24 GPa), in ker gradimo Ukulele, ni velike napetosti strune, ki bi sicer lahko izkrivila ali osnove) vratu.

Eden zelo zanimiv premislek (ki bi ga verjetno še moral izračunati) je, kaj se zgodi pri temperaturi. Na splošno je za les, vzporedno z zrnom, toplotni koeficient raztezanja približno 3 x 10^-6/K, za FR4 pa 14 × 10^−6/K. Torej je razlika precej velika. Zaskrbljujoče je, da se pri spreminjanju temperature v vratu ustvari napetost, kar posledično uglasi strune. To je nekaj, kar bi lahko nadomestili z nanašanjem podobnega sloja na nasprotni strani nevtralne osi ali s tem, da se FR4 čim bolj približa nevtralni osi. Ampak to bo ostalo za 2.0 … Nekaj za modeliranje in vrednotenje.

Elektronika je nameščena v ohišju uke. Na stranski steni (ne na zvočni plošči!) UKE so izrezane luknje, da se naredi prostor za zaslon in vrtljivi dajalnik, ter dostopna plošča za držanje Arduino Micro in dostop do vmesnika USB. Zasnovo in lokacijo dostopne plošče/nosilca bi verjetno lahko izboljšali, da bi bila povezava USB na primernejši lokaciji, a tako kot je, ni vse tako slabo, saj med igranjem ne ovira.

Opis korakov je naslednji:

  1. Zberite materiale
  2. Pridobite potrebna orodja
  3. Vrežite vrat, da se prilega debelejšemu gredi
  4. Frezajte, da naredite luknje na zahtevanih mestih in ustvarite žepe za ploščo in LED
  5. Pridobite in sestavite tiskano vezje, ki drži LED
  6. Rezkajte luknje za dostop v ohišju Ukulele za zaslon OLED, rotacijski dajalnik in dostopno ploščo
  7. Naredite pokrovne plošče
  8. Pritrdite žice na tiskano vezje; povežite in preizkusite elektroniko
  9. Pritrdite vrat na telo Ukulele
  10. Izvrtajte držalo za dostop, da žice PCB vstavite v telo
  11. Poravnajte in lepite tiskano vezje in gredi na vrat
  12. Robove gredi poravnajte do vratu (odstranite odvečni material)
  13. Namestite napenjalne žice
  14. Nanesite maskiranje in nanesite zaključek na Ukulele
  15. Poravnajte in pritrdite most
  16. Namestite elektroniko in preizkusite.
  17. Namestite uglaševalce in nanizajte instrument
  18. Programirajte krmilnik Uke
  19. Presenetite svet s svojo čudovitostjo Ukulele!

2. korak: Zberite materiale

Naš seznam materialov izgleda tako:

  1. Komplet za ukulele - uporabil sem komplet za ukulele s koncertom Grizzly (komplet Grizzly Uke na Amazonu), vendar se zdi, da ga ne bomo več uporabljali. Zimo izdeluje podoben model (Zimo Uke Kit @ Amazon), za katerega se zdi, da bo delo opravil
  2. Grenčnica Ukulele, s predrežo (LMII Uke Fingerboards). Na vašo tehtnico bodo postavili gred, kar vam prihrani nered
  3. Epoksid - za lepljenje gredi na vrat. Izbral sem epoksid, ker je združljiv z materialom PCB. Poiščite nekaj, kar ima vsaj 60 minut delovne dobe. NE uporabljajte 5 minutnih vrst, potrebujete čas za prilagoditve
  4. Žice za uboge - na voljo tudi pri LMII
  5. PCB po meri - datoteke Altium so tukaj. Odločil sem se za običajen material tipa FR4. Fleksibilne (poliimidne) plošče bi bile zanimiva (če je dražja) alternativa, saj so lahko veliko tanjše
  6. 48 -kratne LED diode Neopixel (SK6812). Na voljo pri Adafruit in Digikey
  7. 48x 0,1uF 0402 kape - večje so sprejemljive, vendar morate paziti na namestitev
  8. Priključna žica - vsaj 4 do 6 barv, da ne bi prišlo do zmede, sem uporabil predvsem žico velikosti 28. Opazujte padec enosmernega toka na napajalnih priključkih LED (tako VCC kot GROUND … ta tok se mora vrniti k viru!)
  9. Rotacijski dajalnik-PEC16-4220F-S0024
  10. Fancy leseni gumb - za rotacijski dajalnik (svojega sem dobil iz LMII)
  11. OLED zaslon - iz 4D sistemov OLED zasloni
  12. Zunanja baterija USB - vedno cenejša, poleg tega pa lahko nosite rezervne dele!
  13. Arduino MICRO
  14. Medenina - za izdelavo plošče, ki drži arduino in okvir za zaslon
  15. Razni potrošni material, vključno z: brusnim papirjem, uretanskim premazom, palčkami za moke, gumijastimi trakovi, spajkanjem, fluksom, ščetkami, dvostranskim trakom (všeč mi je trak UHC 3M) in majhnimi medeninastimi vijaki za les (za ploščo)
  16. Izbirne izboljšave za Ukulele - boljši uglaševalci, boljše strune, boljša matica in sedlo, vložek, če želite pokazati svojo junaško moč)

3. korak: Pridobite potrebna orodja

Prej ali slej boste morali pridobiti ali dobiti dostop do teh:

Naš seznam orodij vključuje:

  1. Rezkalni stroj - raje CNC, lahko pa se celo obnesete z usmerjevalnikom in veliko sreče. Uporabil sem kombinirani CNC mlin/usmerjevalnik
  2. Usmerjevalni nastavki - prednost iz karbida. Usmerjevalni nastavki, izbrani pri končnih rezkarjih, saj obdelujemo les, ne kovine
  3. Objemke - veliko jih. Večinoma so potrebni za držanje delov med lepljenjem
  4. Spajkalnik - majhna konica za površinsko spajkanje
  5. Mikroskop ali lupa - lahko poskusite spajkati samo z očmi, vendar tega ne priporočam, najmanj 10x
  6. Pinceta (za namestitev delov)
  7. Orodja za drobljenje (glej ustrezna orodja na LMII tukaj, vendar sem uporabil tisto, kar sem imel doma in sem si ga naredil; kladiva, pilice in rezalniki)
  8. Izbor različnih ročnih orodij, kot so dleto za les, izvijači, mehko pihanje ali kladivo iz surove kože (za prah) itd.
  9. Abrazivi - različni drobci brusnega papirja

Naša programska orodja vključujejo (nekatera so neobvezna, odvisno od vašega proračuna/iznajdljivosti):

  1. Arduino programska oprema
  2. Izvorna koda Ukulele (https://github.com/conrad26/Ukulele)
  3. Paket postavitve PCB - uporabil sem Altium, ker brezplačna različica Eagle ni podpirala želene velikosti plošče. Altium je celovit paket postavitev in ni ravno v cenovnem razredu. Za prototip sem na svoje spletno mesto vključil datoteke Gerber, ki pa vsekakor potrebujejo posodobitev
  4. Programska oprema za 3D modeliranje - uporabljal sem SolidWorks, vendar je ena brezplačna alternativa FreeCAD (https://www.freecadweb.org/)
  5. Programska oprema CAM, kot je FeatureCAM iz Autodeska za ustvarjanje datoteke NC mlina.

Kombinacija izvoza 3D -datotek iz Altiuma skupaj s 3D -modelom fretboarda odpravlja veliko težav pri zagotavljanju, da je vse v redu, vendar to ni pogoj. Skrbna postavitev bo dosegla enak rezultat.

Zdaj, ko vemo, kaj želimo narediti in kaj moramo narediti, zgradimo Ukulele.

4. korak: Rezkanje vratu za namestitev debelejše omare

Rezkajte vrat, da sprejmete debelejšo gredico
Rezkajte vrat, da sprejmete debelejšo gredico

Pred rezkanjem upoštevajte, da MORATE ohraniti prvotno ravnost montažne površine gredi, ali pa boste imeli zvito gred, kar vodi do različnih težav z izravnavo pramenov.

Samo ne pojdite tja, vzemite si čas in pred rezanjem previdno in togo stisnite vrat ter preverite poravnavo z usmerjevalnikom po celem vratu. Čas, preživet tukaj, vam bo kasneje prihranil veliko žalosti.

Eden od razlogov, da sem se odločil za debelejšo gredico nad vložkom v vratu, je bila povečana montažna (lepljiva) površina. Drug razlog je, da poenostavi rezkanje vratu. Preprosto zrežete celotno površino do zahtevane višine.

5. korak: Pridobite in sestavite tiskano vezje, ki drži LED

Pridobite in izdelajte tiskano vezje, ki drži LED
Pridobite in izdelajte tiskano vezje, ki drži LED
Pridobite in izdelajte tiskano vezje, ki drži LED
Pridobite in izdelajte tiskano vezje, ki drži LED

Celoten sklop sem spajkal ročno. LED -pakete je še posebej enostavno taliti, zato pazite, da jih ne poškodujete. Predlagam, da nosite statični jermen, saj je niz odvisen od vsake delujoče LED.

Zasnova Fretboard temelji na LED diodah WS2812B. Odločil sem se, da naredim samo prvo oktavo gredi (48 LED !!). Vsako LED si lahko ogledamo kot en bit v registru premikov. Premični register deluje pri 800 kHz. Za hitro zagon in uporabo sem uporabil knjižnico Adafruit (glej poglavje o programiranju).

Oblikovanje sem začel v Eaglu, vendar je velikost plošče omejena na približno 4 x 5 palcev, zato sem moral (ali pravilneje sem se odločil) preklopiti na Altium. Altium uporabljam pri delu, zato mi je v resnici stvar pospešila. Projekt Altium, shematske datoteke in datoteke pcb (ter deli knjižnice) so na mojem spletnem mestu. Plošča je trapezne oblike in dolga približno 10 centimetrov. Mislim, da bi moral poskusiti še nekoliko stisniti obris (naslednji vrtljaj!) Montaža ni bila slaba, če pa si jo lahko privoščite, res priporočam spodoben spajkalnik (spajkalniki JBC) in dober mikroskop. Ja, razvajen sem in ne, takšnih stvari nimam v domačem laboratoriju. Sem poceni.

Plošče sem dal narediti v Sunstoneu. 129 USD za dve plošči. Zagotovljen en teden obrata. Ne škrtajte pri pošiljanju. Nisem opazil, da sem uporabil tla UPS, in na koncu sem čakal dodaten teden, da so prispele moje plošče. Skupni čas montaže je bil približno 2 uri (98 delov).

Korak 6: Rezkanje Fretboard

Image
Image
Dostopne luknje za mlin v telesu Ukulele
Dostopne luknje za mlin v telesu Ukulele

Gredico moramo frezati, da naredimo luknje na zahtevanih mestih ter ustvarimo žepe za ploščo in LED.

Ustvaril sem 3D model dokončane gredi v Solidworksu in ustvaril CNC rezkalno rutino z uporabo FeatureCAM.

Spodnji del grede (najbližje zvočni luknji) bo treba tanjšati, da se upošteva višinska stopnja med vratom in telesom. Vsekakor je vredno večkrat preizkusiti namestitev, da se prepričate, da je primerno tesna.

Če pogledam nazaj, bi moral odrezati neuporabljene dele gredi, da bi se bolje prilegal mlinu (moj poceni mlin je imel le 12-palčni premik osi X). Vrstni red operacij je treba nastaviti na prve nastavitve debeline mlina pred rezkanje žepov, kar bi moralo zmanjšati razpoke med žepi.

Po potrebi ročno prilagodite, da dodate prostor za ožičenje. Pomembna stvar, ki jo je treba omeniti, je, da sem v nekaterih žepih vdrl v režo, kamor bo šla prečna žica. Glede na to, da je dirigent, poskrbite, da na koncu ne bo prikrajšalo nič pomembnega. Zmanjša tudi trdnost materiala, ki drži prag na mestu. Zasnovo je treba spremeniti, da se nikoli ne križa z režo za prag.

7. korak: Izvrtite dostopne luknje v telesu Ukulele

Dostopne luknje za mlin v telesu Ukulele
Dostopne luknje za mlin v telesu Ukulele

Dostopne luknje v telesu sem ročno rezkal. Najtežje je najti "ravno" območje zelo ukrivljene površine. Oris označite s svinčnikom in postopoma rezkajte material, dokler se ne prilega OLED zaslonu. Dobil sem obdelan medeninasti okvir in ga pritrdil s 3M VHB lepljivim trakom.

Ker noben ne zahteva velike natančnosti, je vrtljive dajalnik in luknje na dostopni plošči veliko lažje ustvariti.

8. korak: Naredite pokrovne plošče

Naredite pokrovne plošče
Naredite pokrovne plošče
Naredite pokrovne plošče
Naredite pokrovne plošče
Naredite pokrovne plošče
Naredite pokrovne plošče

Prav tako morate izdelati pokrovne plošče za okvir zaslona in ploščo za dostop. Dostopna plošča potrebuje pravokotno luknjo za priključek USB (mikro). Uporabite samo obstoječi priključek na Arduinu, saj za mikro USB ni veliko možnosti pritrditve na ploščo. (čeprav bi oblikoval od začetka, bi pogledal enega od teh)

Če želite pritrditi ploščo, oblikujte L nosilce iz medenine in jih spajkajte na zadnjo stran dostopne plošče. To vam omogoča nekaj širine pri pozicioniranju. Če želite pravilno pozicionirati, najprej ustvarite montažno ploščo (z montažnimi luknjami) za Arduino MICRO in nanjo pritrdite L nosilce z uporabo 2-56 strojnih vijakov. Nato lahko prilagodite lokacijo, da poravnate vrata USB in natančno označite mesta za oklepaje na plošči. Odstranite nosilce iz plošče in jih spajkajte. Končno namestite sklop perfboard.

Za pritrditev plošče za dostop do medenine sem uporabil štiri majhne medeninaste vijake za les.

Na tej točki priporočam preizkus prileganja pred začetkom končne montaže. Ta korak ni obvezen, vendar je priporočljiv. Pred lepljenjem je veliko lažje narediti prilagoditve.

9. korak: Priključite žice na tiskano vezje; Priključite in preizkusite elektroniko

Image
Image
Pritrdite vrat na telo Ukulele
Pritrdite vrat na telo Ukulele

Elektronike še ne priključite trajno. Pritrdite žice na tiskano vezje in pazite, da pustite dovolj prostora, da izpeljete dostopno luknjo. Sčasoma jih je treba trajno pritrditi na ploščo Arduino MICRO (fotografije prikazujejo Arduino UNO, ki sem ga uporabil za razvoj kode)

10. korak: Pritrdite vrat na telo Ukulele

Pritrdite vrat na telo Ukulele po navodilih, ki so priložena kompletu Ukulele. Posebej pazite na poravnavo površine gredice s telesom uke.

Korak 11: Izvrtite dostopno luknjo za prehod žic PCB v telo

Izvrtajte dostopno luknjo za prehod žic PCB v telo
Izvrtajte dostopno luknjo za prehod žic PCB v telo

Ko se lepilo posuši, izvrtajte 10 -milimetrsko luknjo pod kotom, da žice iz tiskanega vezja potujejo v ohišje Ukulele. Pazite, da ne poškodujete zvočne plošče.

Morda boste morali ustvariti tudi majhen žep, ki bo omogočal debelino žic pod ploščo (ali po želji priključke postaviti na vrh in vključiti relief v gredi.)

Še en testni primer na tej točki ne bi škodil.

Korak: Poravnajte in lepite tiskano vezje in ogrodje na vrat

Poravnajte in lepite tiskano vezje in ogrodje na vrat
Poravnajte in lepite tiskano vezje in ogrodje na vrat

Predlagam, da pred lepljenjem premislite o vpenjanju (in ga preizkusite!). Morda boste želeli oblikovati blok, oblikovan na spodnji strani vratu, da boste dobili ravno vpenjalno površino. Gredica je na tem mestu večja od vratu, zato morate to dopustiti.

Bodite zelo previdni, da epoksid ne pride na katero koli površino, ki jo želite kasneje zaključiti. Še bolje pa, da pred lepljenjem nanesete maskiranje na vse nelepljene površine, da se prepričate, da gre le tam, kjer ste nameravali.

Uporabite epoksid z najmanj 60 minut delovne dobe … vse to boste potrebovali.

Najprej lepite tiskano vezje in pazite, da se odvečno lepilo ne iztisne v površino lepljenja gredi. To zagotavlja metodo za poravnavo gredi z vratom. PCB ima gladko površino spajkalne maske, zato sem jo ostrgala z malo brusnega papirja, da sem epoksidu nekoliko izboljšala površinsko obdelavo.

Grenčico poravnajte in prilepite na vrat. Pazite, da ne pustite žepov, ki bi lahko kasneje odmevali (brenčanje!). Pazite tudi, da lepilo ne pride na LED površine.

Ko se lepilo posuši, boste morda želeli še enkrat povezati in preizkusiti elektroniko. Ena slaba LED vam bo sovražila življenje. Na prototipu sem imel eno slabo LED (prvo!) In moral sem narediti nekaj ustvarjalnega lesa za dostop do okvarjene LED in jo čisto popraviti.

Korak 13: Poravnajte robove grede do vratu in dodajte žice

Ko se lepilo posuši, lahko začnete zaključevati robove. Previdno sem odrezal odvečni material gredic (z mlinom) in zadnji milimeter dokončal z ročnim brušenjem.

Dodajanje žic za prah lahko preprosto izvedete s kladivom (s plastično površino, da se izognete poškodbam). Samo ne udarjajte premočno. Če ste napeljali žico z režami, bi morali vstopiti brez večjih težav.

Na kaj morate paziti, je razbijanje tanke površine LED žepa. Na prototipu sem dovolil, da se nekateri LED žepi (blizu 12. praga, kjer je prostora malo) razširijo v režo za prag. To je slaba ideja, saj to ustvari šibko mesto, ki lahko (in se je) razpokalo, ko je vstavljena žica.

Korak 14: Nanesite maskiranje in nanesite zaključek na Ukulele

Maskirajte gredico (ni dokončana) in območje lepljenja mostu in začnite nanašati zaključek.

Pri prikrivanju območja mostu preberite navodila s kompletom in nato dvakrat preverite dolžino lestvice, da se prepričate. Komplet, ki sem ga uporabil za prototip, je uporabil napačno dolžino merila in je zato zagotovil napačne mere za iskanje mostu (vendar je imel opombo, da na spletnem mestu preveri najnovejša navodila!). Črevo mi je govorilo, da je to narobe, vendar sem slepo sprejel avtoriteto.

Vedno je bolje razumeti ZAKAJ nekaj delate, kot pa slepo slediti navodilom.

Za zaključek je veliko vadnic Luthierjev, ki vedo, kaj počnejo na spletu, zato priporočam, da se z njimi posvetujete, preden skočite v zaključni postopek.

Tega seveda nisem storil, zato sem na koncu uporabil napačno tesnilo, kar je povzročilo zelo zrnato površino. Ne počni tega.

Naredi svojo domačo nalogo.

Korak 15: Poravnajte in pritrdite most

Poravnajte in pritrdite most
Poravnajte in pritrdite most

Ta korak je precej preprost, vendar spet načrtujte svojo metodo vpenjanja in jo preizkusite vnaprej, preden lepite. Za pritrditev mostu sem uporabil standardno lepilo za les.

Korak 16: Namestite elektroniko in preizkusite

Namestite elektroniko in preizkusite
Namestite elektroniko in preizkusite

Zdaj je čas, da ožičite svoje ožičenje. Poleg tega ne želite, da bi lebdelo po telesu in dalo odmevne hrupe ali še huje, vendar se je zlomilo na odru.

Kodo Arduino je mogoče posodobiti prek vrat USB, zato je res ni treba ločevati, razen če se želite poigrati.

Korak 17: Namestite sprejemnike in napeljite instrument

Image
Image
Programiranje Uke
Programiranje Uke

Verjetno boste morali izravnati prage in se malo poigrati z nastavitvami, a zakaj bi zdaj skrbeli, ko ste tako blizu konca?

Nadgradil sem uglaševalce in uporabil lepe strune Aquila, ki zvoku niso nič pomagale. Zato imejte to v mislih, ko denar izplačujete v projekt ukulele …

18. korak: Programiranje Uke

Končna Arduino koda je na Githubu. V kodi je nekaj vrstic za podporo prihodnjim izboljšavam (na primer funkcija metronoma in "drsniki" za prikaz (element uporabniškega vmesnika, ki izgleda kot drsnik)

Ta koda uporablja knjižnico rotacijskega kodirnika (knjižnica rotacijskega dajalnika Arduino) za obdelavo vnosov uporabnikov iz rotacijskega dajalnika.

Uporablja tudi knjižnico Adafruit Neopixel in primer kode, ki se nahaja tukaj. Gledališki in mavrični način izhajata iz primerov, ki so priloženi knjižnici. (glej strandtest.ino).

Gonilnik zaslona ponujajo 4D sistemi in ga najdete na Githubu tukaj.

Za projekt Ukulele sta izvedeni dve edinstveni funkciji. Prva izvaja knjižnico akordov, druga pa prikazuje drsno besedilno sporočilo z uporabo nabora znakov po meri.

Na priloženem diagramu so prikazane lokacije LED žarnic in kako so povezane. LED 0 se nahaja v zgornjem desnem kotu.

19. korak: Kako prikazati akord

Kako prikazati akord
Kako prikazati akord

Funkcija displayChord prikazuje položaje prstov (zaenkrat le prvo mesto) za vsak akord. Akordi, ki jih izbere uporabnik (korenska nota in kakovost), so shranjeni kot par indeksov. Ti se nato uporabljajo za iskanje prstov za vsak akord.

Za shranjevanje akordov sem uporabil zapis "GCEA" (npr. "A" je "2100"). Akordi so vnaprej izračunani za vsako korensko noto in shranjeni v spremenljivki, ki ustreza kakovosti akorda. (torej, A -dur je shranjen na prvi lokaciji niza "majorChords", kar ustreza "2100").

char* majorChords = {"2100 / n", "3211 / n", "4322 / n", "0003 / n", "1114 / n", "2220 / n", "3331 / n", " 4442 / n "," 2010 / n "," 3121 / n "," 0232 / n "," 5343 / n "};

Upoštevajte, da ker je to besedilni niz, bi lahko vsaka številka predstavljala tudi šestnajstiško vrednost, ki bi upoštevala položaje praga, večje od 9. To pomeni, da bi A in B predstavljali LED 10 in 11. Za akorde prve pozicije to ni bila težava).

LED niz je po dolžini ožičen v vrsticah po 12 (oktava) vzdolž vsakega niza (začenši z nizom A), poznejši niz 12 pa se začne pri prvem pragu naslednjega niza (glej diagram v koraku 18). To je pomembno za algoritem, da določi, katere luči naj vklopi za dani akord. To pomeni, da so piksli od 0 do 11 LED A v nizu, 12 do 23 LED v nizu E itd. Pri razčlenjevanju A = "2100" (shranjeno kot niz, v kodi je tudi ničelni zaključek "\ n"), ga razlagamo kot: nobena slikovna pika v nizu A ne sveti, niti v nizu E, slikovna pika 0 (fret 1) na nizu C sveti in pixel 1 (fret 2) na nizu G. Upoštevajte, da je "0" izklopljena, ne prva LED. Na podlagi ožičenja želimo prižgati LED 24 in 37. Koda za prikaz akorda je prikazana spodaj.

for (int i = 0; i <4; i ++) {if (int (akord - '0')) {// algoritem za razčlenitev niza akordov int ledNumber = int (akord - '0') + (3 - i) * 12 - 1; // glej zgornjo razpravo, (3-i) je obrniti indeksni trak.setPixelColor (ledNumber, 0, 125, 125); // setPixelColor (ledNumber, rdeča vrednost, zelena vrednost, modra vrednost)}}

Stavek if preveri, če je LED izklopljen. Če ni, potem vzame vrednost ascii znaka, akord in odšteje vrednost ascii za '0', da zasveti LEDNumber.

strip je primerek razreda Adafruit_NeoPixel. Funkcija setPixelColor nastavi barvo izračunane slikovne pike (v tem primeru fiksno na (0, 125, 125)).

20. korak: Kako prikazati drsno sporočilo

Kako prikazati drsno sporočilo
Kako prikazati drsno sporočilo

Imamo torej 12 x 4 matrico LED … zakaj ne bi prikazala kaj drugega kot precej naključne vzorce svetlobe!

Prva težava je, da je višina prikaza (4) precej omejena zaradi števila nizov na Ukeju. Vodoravno drsenje bi bilo večinoma nečitljivo, v navpični usmeritvi pa lahko podpiramo 4 x 5 znakov, ki tečejo navpično.

Organiziranje znakov v petih "navpičnih" vrsticah pomeni, da se lahko hkrati prikažeta dva znaka, kar omogoča razmik v eni vrstici med vsakim znakom.

Težava je bila v tem, da ni bilo standardnega niza znakov 4 x 5. Naredil sem si svoje s pomočjo priložene preglednice. Vsaki vrstici sem dodelil eno šestnajstiško vrednost (4 bita, ki predstavljajo, kateri piksel je vklopljen ali izklopljen). Kombinacija petih šestnajstih vrednosti je znak (npr. "0" je 0x69996).

Vrednosti za vsak znak so shranjene v matriki v vrstnem redu ASCII. Nabor znakov naredi nekaj kompromisov z nekaterimi črkami, vendar je večina razumno jasna. (pisanje na dnu preglednice so ideje, s katerimi sem se igral, saj imamo barvo kot možnost, lahko junaku dodamo "globino" in morda dobimo dodatno ločljivost.

Prikazan niz je v spremenljivki niza, sporočilo.

Ustvari se medpomnilnik, ki predstavlja prikaz znakov. Mislim, da bi lahko preprosto ustvaril velik medpomnilnik s celotnim prevedenim zaporedjem sporočil, še posebej, ker bo večina sporočil manj kot 20 znakov. Namesto tega sem se odločil za ustvarjanje fiksnega tri znakovnega (18 bajtov) medpomnilnika. Aktivno sta prikazana samo dva znaka, tretji pa je pogled naprej, kjer je naložen naslednji znak. LED niz (pomislite na to kot velik premični register) je naložen s 48 biti za niz. Za lažjo zasnovo sem zapravil nekaj pomnilniškega prostora. Vsako grizljanje dobi svojo pomnilniško lokacijo, kar podvoji potrebo po pomnilniku, vendar glede na velikost vmesnega pomnilnika ni veliko.

Medpomnilnik se naloži z naslednjim znakom, ko izhodni indeks (kazalec) pride do meje znakov (outputPointer pri 5, 11 ali 17).

Za nalaganje medpomnilnika vzamemo prvi znak v "message" kot vrednost ASCII in odštejemo 48, da dobimo indeks v matriki asciiFont. Vrednost tega indeksa je shranjena v codedChar.

Prvi del sporočila, ki je pomaknjen navzven, ustreza LED 47, 35, 23 in 11 (na dnu zaslona). Torej za število nič 0x0F999F se F (levi) premakne najprej, 9 sekund itd.

Naslednji znak se naloži tako, da vsak zalogaj prikrije in premakne v desno. Za zgornji primer algoritem daje (0x0F999F & 0xF00000) >> 20, nato (0x0F999F & 0x0F0000) >> 16 itd.

int indeks; if (outputPointer == 17 || outputPointer == 5 || outputPointer == 11) {char displayChar = message.charAt (messagePointer); // zgrabi prvi znak sporočila long codedChar = asciiFont [displayChar - 48]; if (displayChar == 32) codedChar = 0x000000; messageBuffer [bytePointer+5] = bajt ((codedChar & 0xF00000) >> 20); // prikrijemo vse, razen zadnjega, in ga premaknemo za 20 (in tako naprej) messageBuffer [bytePointer+4] = bajt ((codedChar & 0x0F0000) >> 16); // to bi moralo dati en griz na pomnilniško lokacijo messageBuffer [bytePointer+3] = bajt ((codedChar & 0x00F000) >> 12); // vseh šest predstavlja na znaku messageBuffer [bytePointer+2] = bajt ((codedChar & 0x000F00) >> 8); messageBuffer [bytePointer+1] = bajt ((codedChar & 0x0000F0) >> 4); messageBuffer [bytePointer] = bajt ((codedChar & 0x00000F)); if (bytePointer == 0) {// ročaj zanko na bytePointer bytePointer = 12; } else {bytePointer -= 6; // polnimo od spodaj navzgor; OPOMBA: pogledati morate v obratni smeri in preveriti, ali olajša} if (messagePointer == message.length ()-1) {// ročaj okoli zanke v sporočilu messagePointer = 0; } else {messagePointer += 1; // premakni se na naslednji znak}}

Ko je vmesnik naložen, gre za sledenje, kje je izhodni kazalec, in nalaganje LED niza s pravilnimi 48 biti (trenutni 4 in prejšnji 44). Kot smo že omenili, je strip primerek razreda NeoPixel in setPixelColor nastavi barvo (RGB) vsake slikovne pike. Funkcija show () premakne prikazane vrednosti v LED niz.

// zanka za nenehno premikanje medpomnilnika

// želimo zapisati celoten trak pri vsakem prehodu skozi zanko, spremeni se le začetno mesto za (int row = 12; row> 0; row--) {index = outputPointer + (12-row); if (indeks> 17) indeks = outputPointer+(12 vrstic) -18; // zanka, če je večja od 17 za (int stolpec = 4; stolpec> 0; stolpec--) {strip.setPixelColor (uint16_t (12*(stolpec-1)+(vrstica-1)), uint8_t (RedLED*(bitRead (messageBuffer [index], stolpec-1))), uint8_t (GreenLED*(bitRead (messageBuffer [index], stolpec-1))), uint8_t (BlueLED*(bitRead (messageBuffer [index], stolpec-1)))); // na vsaki lokaciji zasveti LED, če je bit en}} // outputPointer kaže na trenutni najnižji bajt v nizu prikaza if (outputPointer == 0) outputPointer = 17; else outputPointer -= 1; strip.show (); }

21. korak: Presenetite svet s svojo lepoto Ukulele

Image
Image

Končni prototip Ukulele je trajal približno 6 mesecev od začetkov in postankov.

Veliko nove tehnologije za učenje in morda nekaj lesa in glasbene teorije za zagon!

Kaj storiti za naslednjo različico?

  1. Znebite se zaslona in vrtljivega kodirnika. Zamenjajte jih z modulom Bluetooth, priključenim na arduino. Upravljajte ga na daljavo s telefonom ali tabličnim računalnikom. Z Bluetooth je vse bolje.
  2. Oddaljeno posodabljanje vzorcev akordov v realnem času. Nekaj je najbolje, da ostane aplikaciji.
  3. LED pokrovi. Trenutna različica ne preprečuje, da bi gunk prišel v luknje LED. Prijatelj je naredil kup majhnih leč, vendar nikoli nisem mogel ugotoviti, kako jih pravilno natakniti.
  4. Nadomestni materiali za gredi, morda nekaj jasnega, dokler držijo pragovi.
  5. Več luči! Odpravite omejitev besedila z dodajanjem več "vrstic". To je res omejitev, ki jo povzroča velikost ohišja in ohišja LED.

Ponovno si oglejte spremljevalca Instructable, ki opisuje nabor znakov, ki sem ga moral ustvariti, da omogočim drsenje po besedilu.

Najlepša hvala, da ste prišli tako daleč! Mahalo!

Priporočena: