Sadržaj:
- Korak 1: Napravite plan
- Korak 2: Prikupite materijale
- Korak 3: Nabavite potrebne alate
- Korak 4: Glodanje vrata za smještaj debljeg daske
- Korak 5: Nabavite i konstruirajte PCB držeći LED diode
- Korak 6: Glodanje grede
- Korak 7: Izbrusite pristupne rupe u tijelu Ukulele
- Korak 8: Napravite pokrovne ploče
- Korak 9: Priključite žice na PCB; Spojite i isprobajte elektroniku
- Korak 10: Pričvrstite vrat na tijelo Ukulele
- Korak 11: Izbušite pristupnu rupu za uvođenje žica PCB -a u tijelo
- Korak 12: Poravnajte i zalijepite PCB i gredicu na vrat
- Korak 13: Nivelirajte rubove gvozdene ploče do vrata i dodajte žice za gomilu
- Korak 14: Nanesite maskiranje i nanesite Završni sloj na Ukulele
- Korak 15: Poravnajte i pričvrstite most
- Korak 16: Instalirajte elektroniku i testirajte
- Korak 17: Instalirajte tunere i nanizajte instrument
- Korak 18: Programiranje Ukea
- Korak 19: Kako prikazati akord
- Korak 20: Kako prikazati pomičnu poruku
- Korak 21: Zadivite svijet svojom veličanstvenošću ukulele
Video: Kako izgraditi svjetlosnu ukulelu!: 21 korak
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
Sviram Ukulele. Nekako osrednje (ako je to riječ) pa sam pomislio: "ako doista želite impresionirati dame, trebate sredstvo da ih odvratite od katastrofe koja se igra na pozornici." Tako je nastala "Light-up Ukulele".
Ovaj projekt uzima Concert Ukulele kit i dodaje Arduino upravljanu LED diodu na svakom položaju žice i freta. Dodaje i elegantni OLED zaslon i korisničko sučelje zasnovano na rotacijskom koderu za odabir načina i intenziteta LED niza.
Dovršene hardverske značajke uke:
- Arduino MICRO za sučelje sa LED nizom, zaslonom i ulaznim uređajem.
- 48 pojedinačno programabilnih LED dioda u boji
- OLED zaslon
- Okretni koder za unos korisnika
- USB sučelje za vanjsko napajanje i Arduino programiranje
Uke softver ima:
- Osnovni načini upravljanja svjetlom koji pokreću LED diode svojim tempom
- Vrhunski način rada kazališnog okvira (vrlo zgodan za predstave!)
- Kontrola LED intenziteta
- Potpuna biblioteka akorda svih akorda Ukulele na prvoj poziciji (vrijednost i znak akorda)
- Sposobnost prikaza tekućeg teksta (okomito) pomoću jedinstvenog skupa znakova 4 x 6 piksela
Ova uputa opisuje dovršeni prototip. Potpuna razvojna saga dostupna je OVDJE, uključujući neke obrazovne (bolne) greške i vrijednu lekciju zašto MORATE dovršiti svoj prvi dizajn do kraja (bez obzira na to koliko ružne stvari postanu). Nikada ne znate sve stvari koje doista ne znate dok ne dođete do kraja (a onda još uvijek ne znate!), Ali puno ste bolje i puno ste pametniji za sljedeći dizajn.
Prototip sam izgradio oko kompleta za grizli Concert Ukulele. Početak s kompletom oslobađa brige o tijelu ukea (dobro, uglavnom) i uklanja većinu pravih poslova lutžerskog tipa. Ovi su kompleti prilično kompletni i nisu toliko skupi u velikoj shemi stvari (i manje su bolni jer ćete pogriješiti).
Korak 1: Napravite plan
Pločica (ili prst) uključena u neke komplete već ima pričvršćene pragove. To je dobro/loše. Lijepo je za uštedu vremena, ali u smislu postavljanja uzorka bušilice i držanja na mjestu tijekom glodanja, to je pomalo bolno. Nakon što sam uništio onaj koji se nalazi u kompletu, odlučio sam (pa, nisam imao drugog izbora osim kupnje drugog kompleta) za kupnju novog greda.
Prilikom projektiranja gredice moramo izračunati povećanje debljine potrebne za ugradnju PCB -a i LED dioda (i ne zaboravimo pasivne komponente), ali ne toliko da su LED diode previše udaljene od površine gredice.
LED tiskana ploča (PCB) dizajnirana je kao jednostavna dvoslojna ploča. To uvelike pomaže pri ručnom sastavljanju LED žice i daje određenu mehaničku čvrstoću (od stakloplastike i epoksida) vratu Ukulele. Raspored sam započeo u Eagleu, ali sam završio s korištenjem Altium Designera zbog ograničenja veličine ploče. Altium shematske i PCB datoteke nalaze se ovdje.
Gredica kompleta bila je debela svega 0,125 inča. Dakle, uz pretpostavku da je PCB debljine 0,062 inča i dopustiti dodatnih 0,062 inča za LED diode, znači da bismo morali puno izrezati (kao i u svakom slučaju) gredicu. Za kompenzaciju možemo ili djelomično izrezati džepove za LED diode na gvozdenoj ploči s odgovarajućim džepom u vratu za PCB, ili bismo mogli zamijeniti cijelu gredicu (opcija koju sam odabrao) debljom verzijom iz Luther Mercantile International (LMII), što je 0,25 inča za početak.
ALI, zapamtite da ćete i dalje morati strojno obrađivati vrat kako biste kompenzirali povećanje debljine u gredici. Druga prednost koju dobivate je kozmetička, budući da je PCB sada potpuno ugrađen u gredicu što rubove čini daleko lakšim za doradu (i izgledaju daleko ljepše!) I pojednostavljuje glodanje vrata.
Inženjerske stvari (zanemarite ako želite):
Usput, to zapravo ne ugrožava toliko ukočenost vrata. Materijal od PCB -a daleko je čvršći od izvornog drveta od gredica (modul od mahagonija: 10,6 GPa u odnosu na modul FR4: 24 GPa), a budući da gradimo Ukulele, nema velike napetosti strune koja bi se inače mogla iskriviti (uvrnuti ili osnove) vrat.
Jedno vrlo zanimljivo razmatranje (koje bih vjerojatno još trebao izračunati) je ono što se događa pri temperaturi. Općenito za drvo, paralelno sa zrnom, toplinski koeficijent širenja je otprilike 3 x 10^-6/K, a za FR4 14 × 10^−6/K. Dakle, postoji prilično značajna razlika. Zabrinjava to što se napetost stvara u vratu s promjenom temperature, što zauzvrat poništava žice. To je nešto što bi se moglo nadoknaditi primjenom sličnog sloja na suprotnoj strani neutralne osi ili približavanjem FR4 što je moguće bliže neutralnoj osi. Ali to će ostati za 2.0 … Nešto za modeliranje i procjenu.
Elektronika je smještena u tijelu ukea. Otvori su izrezani na bočnoj strani (ne na zvučnoj ploči!) UKE -a kako bi se oslobodilo mjesto za zaslon i okretni davač, plus pristupna ploča za držanje Arduino Micro -a i omogućavanje pristupa USB sučelju. Dizajn i mjesto pristupne ploče/nosača vjerojatno bi se mogli poboljšati kako bi USB veza izašla na prikladnije mjesto, ali kako sada stoji, nije sve tako loše jer vam to ne smeta tijekom igre.
Pregled koraka je sljedeći:
- Prikupiti materijale
- Nabavite potrebne alate
- Glodanje grla za smještaj debljeg greda
- Glodaljkom napravite glodalicu kako biste napravili rupe na potrebnim mjestima i stvorili džepove za ploču i LED diode
- Nabavite i konstruirajte tiskanu ploču koja drži LED diode
- Izbrusite pristupne rupe u tijelu Ukulelea za OLED zaslon, rotacijski koder i pristupnu ploču
- Napravite pokrovne ploče
- Pričvrstite žice na PCB; spojite i isprobajte elektroniku
- Pričvrstite vrat na tijelo Ukulele
- Izbušite pristupni držač za prolaz žica PCB -a u tijelo
- Poravnajte i zalijepite tiskanu ploču i gredicu na vrat
- Izravnajte rubove gredice do vrata (uklonite višak materijala)
- Ugradite žice za pranje
- Nanesite maskiranje i nanesite završnu obradu na Ukulele
- Poravnajte i pričvrstite most
- Instalirajte elektroniku i testirajte.
- Instalirajte tunere i nanizajte instrument
- Programirajte Uke kontroler
- Zadivite svijet svojom veličinom Ukulele!
Korak 2: Prikupite materijale
Naš popis materijala izgleda ovako:
- Komplet za ukulele - Koristio sam komplet za ukulele s koncertom Grizzly (Grizzly Uke Kit na Amazonu), ali čini se da će se to prekinuti. Zimo proizvodi sličan model (Zimo Uke Kit @ Amazon) koji izgleda da će odraditi posao
- Ukulele fretboard, s prorezima (LMII Uke Fingerboards). Postavit će gredicu na vašu vagu, što vam štedi nevolje
- Epoksid - za lijepljenje gredice na vrat. Odabrao sam epoksid jer je kompatibilan s PCB materijalom. Potražite nešto s najmanje 60 minuta radnog vijeka. NEMOJTE koristiti vrste od 5 minuta, potrebno vam je vrijeme za prilagodbe
- Žice za pričvršćivanje - također dostupne u LMII
- Prilagođena PCB - Altium datoteke su ovdje. Odlučio sam se za normalan materijal tipa FR4. Savitljive (poliimidne) ploče bile bi zanimljiva (ako su skuplja) alternativa, jer mogu biti mnogo tanje
- 48x LED dioda neopiksela (SK6812). Dostupno na Adafruit -u i Digikey -u
- 48x 0,1uF 0402 kape - veće su prihvatljive, ali morate paziti na položaj
- Priključna žica - najmanje 4 do 6 boja kako ne bi došlo do zabune, prvenstveno sam koristio žicu promjera 28. Gledajte pad istosmjernog napona na LED priključcima za napajanje (i VCC i ZEMLJA … ta se struja mora vratiti na izvor!)
- Rotacijski davač-PEC16-4220F-S0024
- Moderno drveno dugme - za rotacijski davač (ja sam svoj dobio od LMII)
- OLED zaslon - iz 4D sustava OLED zasloni
- Vanjska USB baterija - cijelo vrijeme jeftinija, a možete nositi i rezervne dijelove!
- Arduino MICRO
- List od mesinga - kako bi ploča držala arduino i okvir za zaslon
- Razni potrošni materijal, uključujući: brusni papir, uretanski premaz, štapići od sladoleda, gumice, lemljenje, fluks, četke, dvostrana traka (sviđa mi se UHC traka od 3M) i mali mesingani vijci za drvo (za ploču)
- Dodatna poboljšanja Ukulelea - bolji tuneri, bolje žice, bolja matica i sedlo, umetci ako želite pokazati svoju hrabrost)
Korak 3: Nabavite potrebne alate
Prije ili kasnije morat ćete dobiti ili pristupiti ovim:
Naš popis alata uključuje:
- Glodalica - poželjno CNC, ali možda ćete se snaći i s usmjerivačem i uz puno sreće. Koristio sam kombinirani CNC mlin/glodalicu
- Glodalice - poželjno od karbida. Glodalice su odabrane za krajnje glodalice budući da obrađujemo drvo, a ne metal
- Stezaljke - puno njih. Uglavnom potrebno za držanje dijelova tijekom lijepljenja
- Lemilica - mali vrh za površinsko lemljenje
- Mikroskop ili povećalo - možete pokušati lemiti samo očima, ali ne bih to preporučio, najmanje 10x
- Pinceta (za postavljanje dijelova)
- Alati za pričvršćivanje (pogledajte odgovarajuće alate na LMII -u ovdje, ali koristio sam ono što sam imao kod kuće i za koje sam se snašao; čekići, turpije i rezači)
- Različiti ručni alati, poput dlijeta za drvo, odvijača, mekog udarca ili čekića od sirove kože (za fretanje) itd.
- Abrazivi - različiti zrnci brusnog papira
Naši softverski alati uključuju (neki su izborni, ovisno o vašem proračunu/domišljatosti):
- Arduino softver
- Izvorni kod Ukulelea (https://github.com/conrad26/Ukulele)
- Paket izgleda PCB -a - koristio sam Altium jer besplatna verzija Eagle nije podržavala željenu veličinu ploče. Altium je potpuno opremljen paket izgleda i nije baš u cjenovnom rangu hobista. Uključio sam Gerberove datoteke na svoju web stranicu za prototip, ali ove definitivno treba ažurirati
- Softver za 3D modeliranje - koristio sam SolidWorks, ali jedna besplatna alternativa je FreeCAD (https://www.freecadweb.org/)
- CAM softver - poput FeatureCAM -a iz Autodeska za stvaranje datoteke NC mlina.
Kombinacija izvoza 3D step datoteka iz Altiuma zajedno s 3D modelom gredice uklanja mnoge poteškoće u osiguravanju da se sve poravna, ali to nije uvjet. Pažljivim rasporedom postići ćete isti rezultat.
Sada kada znamo što želimo učiniti i što trebamo učiniti, napravimo Ukulele.
Korak 4: Glodanje vrata za smještaj debljeg daske
Prije glodanja imajte na umu da se MORA održavati izvorna ravnost površine ugradnje grede ili ćete imati uvijenu gredicu, što dovodi do raznih problema s niveliranjem pragova.
Samo nemojte ići tamo, odvojite vrijeme i pažljivo i kruto stegnite vrat te prije rezanja provjerite poravnanje s glodalicom preko cijelog vrata. Vrijeme provedeno ovdje kasnije će vam uštedjeti mnogo tuge.
Jedan od razloga zašto sam se odlučio za deblji karton preko umetka u vratu bila je povećana površina ugradnje (lijepljenja). Drugi razlog je što pojednostavljuje glodanje vrata. Jednostavno zujanjem izrežete cijelu površinu do potrebne visine.
Korak 5: Nabavite i konstruirajte PCB držeći LED diode
Ručno sam zalemio cijeli sklop. LED paketi se posebno lako tope, stoga pazite da ih ne oštetite. Predlažem nošenje statičkog remena jer niz ovisi o svakom LED -u koji radi.
Fretboard dizajn temelji se na LED -ima WS2812B. Odlučio sam napraviti samo prvu oktavu greda (48 LED dioda !!). Svaka LED dioda se može smatrati jednim bitom u registru pomaka. Registar pomaka radi na 800 kHz. Koristio sam biblioteku Adafruit (vidi odjeljak o programiranju) kako bih brzo pokrenuo stvari.
Dizajn sam započeo u Eagleu, ali veličina ploče je ograničena na 4 x 5 inča, pa sam morao (ili točnije odlučio sam se) prebaciti na Altium. Koristim Altium na poslu, pa mi je u stvarnosti to ubrzalo stvari. Projekt Altium, shematske i PCB datoteke (i dijelovi knjižnice) nalaze se na mojoj web stranici. Ploča je trapezoidnog oblika i dugačka oko 10 cm. Mislim da sam trebao pokušati još malo stisnuti obris (sljedeće okretanje!) Montaža nije bila loša, ali ako si to možete priuštiti, doista preporučujem pristojno lemilicu (JBC lemilice) i dobar mikroskop. Da, razmažen sam i ne, nemam takve stvari u svom kućnom laboratoriju. Jeftin sam.
Ploče sam dao napraviti u Sunstoneu. 129 dolara za dvije ploče. Zajamčena izmjena tjedan dana. Ipak, nemojte štedjeti na otpremi. Nisam primijetio da sam koristio UPS zemlju i na kraju sam čekao dodatni tjedan da stignu moje ploče. Ukupno vrijeme montaže bilo je oko 2 sata (98 dijelova).
Korak 6: Glodanje grede
Moramo glodati gredicu kako bismo napravili rupe na potrebnim mjestima i stvorili džepove za ploču i LED diode.
Napravio sam 3D model dovršene gredice u Solidworksu i napravio CNC rutinu glodanja pomoću FeatureCAM -a.
Donji dio gredice (najbliži zvučnoj rupi) morat će biti tanji kako bi se uzela u obzir promjena stepenica u visini između vrata i tijela. Svakako vrijedi nekoliko puta testirati ugradnju kako biste bili sigurni da je prikladno pripijena.
U retrospektivi, trebao sam odrezati neiskorištene dijelove gredice kako bi bolje pristajao mlinu (moj jeftini mlin imao je samo hod od 12 po osi X). Redoslijed operacija trebao bi biti postavljen na podešavanje debljine prvog mlina prije glodanje džepova, što bi trebalo dovesti do manjeg izbijanja džepova.
Po potrebi izvršite ručne prilagodbe kako biste dodali prostor za ožičenje. Jedna važna stvar koju treba napomenuti je da sam u nekim džepovima provalio u utor gdje će proći žica od freta. S obzirom da je to kondukter, pazite da na kraju ne skrati nešto važno. Također smanjuje čvrstoću materijala koji drži prag na mjestu. Dizajn bi trebao biti modificiran tako da se nikada ne siječe s utorom za fret.
Korak 7: Izbrusite pristupne rupe u tijelu Ukulele
Ručno sam glodala pristupne rupe u tijelu. Najteži dio je pronaći "najravnije" područje vrlo zakrivljene površine. Olovkom označite obris i postupno glodajte materijal dok ne uklopite OLED zaslon. Dobio sam obrađen mesingani okvir i pričvrstio ga pomoću 3M VHB ljepljive trake.
Budući da ni jedno ni drugo ne zahtijevaju veliku preciznost, rotirajući koder i rupe za pristupnu ploču daleko je lakše stvoriti.
Korak 8: Napravite pokrovne ploče
Također morate izraditi pokrovne ploče za okvir zaslona i ploču za pristup. Pristupnoj ploči je potreban otvor (pravokutni) za USB (mikro) priključak. Samo upotrijebite postojeći priključak na Arduinu, jer nema mnogo opcija za montiranje ploče za mikro USB. (mada, ako sam dizajnirao od nule, pogledao bih jednu od ovih)
Da biste držali ploču na mjestu, izradite L držače od mjedi i lemite ih na stražnju stranu pristupne ploče. To vam omogućuje određenu širinu u pozicioniranju. Da biste pravilno pozicionirali, najprije izradite ploču za montažu (s otvorima za montažu) za Arduino MICRO i pričvrstite L nosače na nju pomoću 2-56 strojnih vijaka. Zatim možete prilagoditi lokaciju kako biste postavili USB priključak i točno označili mjesta zagrada na ploči. Uklonite nosače s ploče za lemljenje i lemite ih na mjesto. Na kraju montirajte perfboard sklop.
Koristio sam četiri mala mesingana vijka za drvo kako bih držao pristupnu ploču od mesinga na mjestu.
U ovom trenutku preporučujem testiranje prije početka konačne montaže. Ovaj korak nije obavezan, ali se preporučuje. Daleko je lakše izvršiti prilagodbe prije lijepljenja.
Korak 9: Priključite žice na PCB; Spojite i isprobajte elektroniku
Nemojte još trajno priključivati elektroniku. Pričvrstite žice na tiskanu ploču, pazeći da ostavite dovoljno opuštenosti da provučete pristupnu rupu. Na kraju ih treba trajno pričvrstiti na Arduino MICRO ploču (fotografije prikazuju Arduino UNO koji sam koristio za razvoj koda)
Korak 10: Pričvrstite vrat na tijelo Ukulele
Pričvrstite vrat na tijelo Ukulele -a slijedeći upute isporučene s kompletom Ukulele. Posebno pazite na poravnavanje površine gredice prema tijelu ukea.
Korak 11: Izbušite pristupnu rupu za uvođenje žica PCB -a u tijelo
Nakon što se ljepilo osuši, izbušite rupu od ~ 1/4 (10 mm) pod kutom kako biste omogućili da žice s PCB -a prođu u tijelo Ukulelea. Pazite da ne oštetite zvučnu ploču.
Možda ćete morati stvoriti i mali džep kako biste omogućili debljinu žica ispod ploče (ili po želji stavite priključke na vrh i uključite reljef u gredicu.)
Još jedno testiranje ne bi škodilo u ovom trenutku.
Korak 12: Poravnajte i zalijepite PCB i gredicu na vrat
Predlažem da prije lijepljenja razmislite o stezanju (i isprobate ga!). Možda ćete htjeti izraditi blok oblikovan prema donjoj strani vrata kako biste dobili ravnu steznu površinu. Gredica je u ovom trenutku veća od vrata, pa to morate dopustiti.
Budite vrlo oprezni da ne dospijete epoksid na površinu koju želite kasnije završiti. Još bolje, prije lijepljenja nanesite maskiranje na sve nelijepljene površine kako biste bili sigurni da ide samo tamo gdje ste namjeravali.
Koristite epoksid s najmanje 60 minuta radnog vijeka … sve će vam trebati.
Najprije zalijepite PCB na mjesto, pazeći da višak ljepila ne istisne u površinu za lijepljenje gredica. Ovo pruža metodu za poravnavanje gredice prema vratu. PCB ima glatku završnu masku za lemljenje pa sam ga grubo brušio s malo brusnog papira kako bih epoksidu dao malo poboljšanu površinsku obradu.
Poravnajte i zalijepite gredicu na vrat. Pazite da ne ostavite džepove koji bi kasnije mogli postati rezonantni (zujanje!). Također pripazite da ljepilo ne dospije na LED površine.
Nakon što se ljepilo osuši, možda ćete htjeti još jednom spojiti žicu i testirati elektroniku. Jedna loša LED dioda natjerat će vas da mrzite život. Imao sam jednu lošu LED diodu (prvu!) Na prototipu i morao sam napraviti kreativnu stolariju kako bih pristupio neispravnoj LED i čisto je zakrpati.
Korak 13: Nivelirajte rubove gvozdene ploče do vrata i dodajte žice za gomilu
Nakon što se ljepilo osuši, možete početi dovršavati rubove. Pažljivo sam odrezao višak materijala za gredice (pomoću mlina) i zadnji milimetar završio ručnim brušenjem.
Dodavanje žica za uzrujanje može se jednostavno izvesti čekićem (s plastičnim licem kako se ne bi oštetilo). Samo nemojte previše udarati čekićem. Ako ste žicu za spajanje spojili s utorima, trebali bi ući bez većih poteškoća.
Ono na što morate paziti je razbijanje tanke površine LED džepa. Na prototipu sam dopustio da se neki LED džepovi (blizu 12. praga, gdje se prostor stisne) prošire u otvor za prag. To je loša ideja, jer to stvara slabu točku koja može (i jest) puknuti nakon umetanja žice za prah.
Korak 14: Nanesite maskiranje i nanesite Završni sloj na Ukulele
Maskirajte gredicu (nema završnu obradu) i područje lijepljenja mosta i počnite nanositi završnu obradu.
Prilikom maskiranja područja mosta pročitajte upute s kompletom, a zatim dvaput provjerite duljinu ljestvice samo da biste bili sigurni. Komplet koji sam koristio za prototip koristio je pogrešnu duljinu mjerila i stoga dao pogrešne dimenzije za lociranje mosta (ali imao je napomenu da provjeri web stranicu za najnovije upute!). Utroba mi je govorila da to nije u redu, ali sam slijepo prihvatio autoritet.
Uvijek je bolje razumjeti ZAŠTO nešto radite, nego slijepo slijediti upute.
Za kraj, postoji mnogo tutoriala od Luthiersa koji znaju što rade na webu, pa preporučujem da ih konzultirate prije nego što prijeđete na završni proces.
Ja to, naravno, nisam učinio pa sam na kraju upotrijebio pogrešno brtvilo, što je rezultiralo vrlo zrnastom površinom. Nemojte to činiti.
Napiši zadaću.
Korak 15: Poravnajte i pričvrstite most
Ovaj korak je prilično jednostavan, ali opet isplanirajte svoju metodu stezanja i isprobajte je unaprijed prije lijepljenja. Za pričvršćivanje mosta koristio sam standardno ljepilo za drvo.
Korak 16: Instalirajte elektroniku i testirajte
Sada je vrijeme da svoje ožičenje učinite lijepim. Osim toga, ne želite da lebdi po tijelu i ispušta zujanje ili još gore, ali da se lomi na pozornici.
Arduino kôd može se ažurirati putem USB priključka, tako da ga zaista nema potrebe rastavljati osim ako ne želite petljati.
Korak 17: Instalirajte tunere i nanizajte instrument
Vjerojatno ćete također morati poravnati fretove i malo se poigrati s postavkama, ali zašto sada brinuti, kad ste tako blizu kraja?
Nadogradio sam tjunere i koristio lijepe Aquila žice, koje zvuku nisu nimalo pomogle. Zato imajte to na umu dok odvajate novac u projektnu ukulele …
Korak 18: Programiranje Ukea
Konačni Arduino kod nalazi se na Githubu. U kodu postoje neke linije koje podržavaju buduća poboljšanja (poput funkcije metronoma i "klizača" za prikaz (element korisničkog sučelja koji izgleda kao klizač)
Ovaj kôd koristi biblioteku rotacijskog kodera (biblioteka rotacijskog kodera Arduino) za rukovanje korisničkim unosom iz rotacijskog kodera.
Također koristi biblioteku Adafruit Neopixel i primjer koda koji se nalazi ovdje. Načini kazališta i duge izvedeni su iz primjera koji se isporučuju s bibliotekom. (vidi strandtest.ino).
Upravljački program za prikaz pružaju 4D sustavi i nalazi se na Githubu ovdje.
Za projekt Ukulele implementirane su dvije jedinstvene funkcije. Prvi implementira knjižnicu akorda, a drugi prikazuje tekstualnu poruku koja se pomiče pomoću prilagođenog skupa znakova.
Na priloženom dijagramu prikazane su lokacije LED žaruljice i kako su spojene. LED 0 nalazi se u gornjem desnom kutu.
Korak 19: Kako prikazati akord
Funkcija displayChord prikazuje položaje prstiju (za sada samo prvo mjesto) za svaki akord. Akordi koje je korisnik odabrao (korijenska nota i kvaliteta) pohranjuju se kao par indeksa. Oni se zatim koriste za traženje prstiju za svaki akord.
Koristio sam zapis "GCEA" za spremanje akorda (npr. "A" je "2100"). Akordi su unaprijed izračunati za svaku korijensku notu i pohranjeni u varijablu koja odgovara kvaliteti akorda. (dakle, A -dur je pohranjen na prvom mjestu niza "majorChords", što odgovara "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 "};
Imajte na umu da budući da se radi o tekstualnom nizu, svaka znamenka može predstavljati i heksadecimalnu vrijednost koja bi uzela u obzir pozicije freta veće od 9. To jest, A i B bi predstavljale LED diode 10 i 11. Za akorde prve pozicije to nije bio problem).
LED niz je ožičen po dužini u redovima od 12 (oktava) duž svakog niza (počevši od niza A), a sljedeći niz od 12 započinje na prvom pragu sljedećeg niza (vidi dijagram u koraku 18). To je važno za algoritam da odredi koja svjetla treba uključiti za dati akord. To znači da su pikseli od 0 do 11 LED žaruljice A, 12 do 23 LED žarulje E, itd. Prilikom raščlanjivanja A = "2100" (pohranjenog kao niz, u kodu postoji i null terminator "\ n"), tumačimo ga kao: nijedan piksel na nizu A nije osvijetljen, niti na nizu E, piksel 0 (fret 1) na nizu C svijetli, a piksel 1 (fret 2) na nizu G. Imajte na umu da je "0" isključeno, a ne prva LED. Na temelju ožičenja želimo upaliti LED diode 24 i 37. Kod za prikaz akorda prikazan je u nastavku.
for (int i = 0; i <4; i ++) {if (int (akord - '0')) {// algoritam za raščlanjivanje niza akorda int ledNumber = int (akord - '0') + (3 - i) * 12 - 1; // vidi gornju raspravu, (3-i) treba poništiti indeksnu traku.setPixelColor (ledNumber, 0, 125, 125); // setPixelColor (ledNumber, crvena vrijednost, zelena vrijednost, plava vrijednost)}}
Naredba if provjerava je li LED isključen. Ako nije, tada uzima vrijednost ascii znaka, akord i oduzima vrijednost ascii za '0' kako bi LEDNumber zasvijetlio.
strip je primjer klase Adafruit_NeoPixel. Funkcija setPixelColor postavlja boju za izračunati piksel (u ovom slučaju fiksno na (0, 125, 125)).
Korak 20: Kako prikazati pomičnu poruku
Dakle, imamo niz LED dioda 12 x 4 … zašto ne bismo prikazali nešto drugo osim prilično slučajnih svjetlosnih uzoraka!
Prvo je pitanje što je visina prikaza (4) prilično ograničena zbog broja žica na Ukeu. Vodoravno pomicanje bilo bi uglavnom nečitko, ali u okomitom usmjerenju možemo podržati 4 x 5 znakova koji rade okomito.
Organiziranje znakova u pet "okomitih" redaka znači da se dva znaka mogu prikazati istovremeno dopuštajući razmak u jednom retku između svakog znaka.
Poteškoća je bila u tome što nije postojao standardni skup 4 x 5 znakova. Napravio sam svoj pomoću priložene tablice. Dodijelio sam svakom retku jednu heksadecimalnu vrijednost (4 bita predstavljaju koji je piksel uključen ili isključen). Kombinacija pet heksadecimalnih vrijednosti čini znak (npr. "0" je 0x69996).
Vrijednosti za svaki znak pohranjene su u nizu ASCII redoslijedom. Skup znakova čini neke kompromise s određenim slovima, ali većina je razumljivo jasna. (pisanje na dnu proračunske tablice su ideje s kojima sam se igrao budući da imamo boju kao opciju, možemo dodati "dubinu" liku i eventualno dobiti dodatnu razlučivost.
Prikazani niz nalazi se u varijabli niza, poruci.
Međuspremnik se stvara za prikaz prikaza znakova. Pretpostavljam da sam jednostavno mogao stvoriti veliki međuspremnik s cijelim prevedenim nizom poruka, pogotovo jer će većina poruka imati manje od 20 znakova. Međutim, umjesto toga odlučio sam stvoriti fiksni međuspremnik od tri znaka (18 bajtova). Samo su dva znaka aktivno prikazana, a treći je pogled unaprijed, gdje se učitava sljedeći znak. LED niz (zamislite ga kao veliki registar pomaka) je opterećen s 48 bita za niz. Potrošio sam malo memorijskog prostora kako bih ovo lakše konceptualizirao. Svako grickanje dobiva vlastitu memorijsku lokaciju, udvostručujući memorijski zahtjev, ali s obzirom na veličinu međuspremnika nije mnogo.
Međuspremnik se učitava sa sljedećim znakom kada izlazni indeks (pokazivač) dođe do granice znaka (outputPointer na 5, 11 ili 17).
Da bismo učitali međuspremnik, zgrabimo prvi znak u "poruci" kao ASCII vrijednost i oduzmemo 48 da bismo dobili indeks u polju asciiFont. Vrijednost tog indeksa pohranjena je u codedChar.
Prvi dio poruke pomaknut prema van odgovara LED -ima 47, 35, 23 i 11 (pri dnu zaslona). Dakle, za broj nula 0x0F999F, F (lijevi) se pomiče prvi, 9 sekundi i tako dalje.
Sljedeći znak učitava se maskiranjem svakog grickanja i pomicanjem udesno. Za gornji primjer, algoritam daje (0x0F999F & 0xF00000) >> 20, zatim (0x0F999F & 0x0F0000) >> 16 itd.
int indeks; if (outputPointer == 17 || outputPointer == 5 || outputPointer == 11) {char displayChar = message.charAt (messagePointer); // zgrabite prvi znak poruke long codedChar = asciiFont [displayChar - 48]; if (displayChar == 32) codedChar = 0x000000; messageBuffer [bytePointer+5] = bajt ((codedChar & 0xF00000) >> 20); // maskiramo sve osim zadnjeg grickanja i pomaknemo ga za 20 (i tako dalje) messageBuffer [bytePointer+4] = byte ((codedChar & 0x0F0000) >> 16); // ovo bi trebalo staviti jedan zalogaj po memorijskoj lokaciji messageBuffer [bytePointer+3] = bajt ((codedChar & 0x00F000) >> 12); // svih šest predstavljaju na znaku messageBuffer [bytePointer+2] = bajt ((codedChar & 0x000F00) >> 8); messageBuffer [bytePointer+1] = bajt ((codedChar & 0x0000F0) >> 4); messageBuffer [bytePointer] = bajt ((codedChar & 0x00000F)); if (bytePointer == 0) {// rukovanje petljom po bytePointer bytePointer = 12; } else {bytePointer -= 6; // punimo odozdo prema gore; NAPOMENA: potrebno je preokrenuti ovo kako biste vidjeli može li to olakšati} if (messagePointer == message.length ()-1) {// rukovati petljom oko poruke messagePointer = 0; } else {messagePointer += 1; // prelazak na sljedeći znak}}
Nakon što se međuspremnik učita, postaje pitanje praćenja gdje se nalazi izlazni pokazivač i učitavanja LED niza s ispravnih 48 bita (trenutnih 4 i prethodnih 44). Kao što je ranije spomenuto, strip je primjer klase NeoPixel, a setPixelColor postavlja boju (RGB) svakog piksela. Funkcija show () pomiče prikazane vrijednosti u LED niz.
// petlja za stalno istiskivanje međuspremnika
// želimo ispisati cijelu traku pri svakom prolasku kroz petlju, samo se početno mjesto mijenja za (int row = 12; row> 0; row--) {index = outputPointer + (12-row); if (indeks> 17) indeks = outputPointer+(12 redaka) -18; // petlja ako je veća od 17 za (int stupac = 4; stupac> 0; stupac--) {strip.setPixelColor (uint16_t (12*(stupac-1)+(red-1))), uint8_t (RedLED*(bitRead (messageBuffer [indeks], stupac-1))), uint8_t (GreenLED*(bitRead (messageBuffer [indeks], stupac-1))), uint8_t (BlueLED*(bitRead (messageBuffer [indeks], stupac-1)))); // na svakom mjestu svijetli LED dioda ako je bit jedan}} // outputPointer pokazuje na trenutni najniži bajt u nizu prikaza if (outputPointer == 0) outputPointer = 17; else outputPointer -= 1; strip.show (); }
Korak 21: Zadivite svijet svojom veličanstvenošću ukulele
Završni prototip Ukulelea trajao je oko 6 mjeseci od početka i zaustavljanja.
Mnogo nove tehnologije za naučiti, a možda i nešto teorije o obradi drveta i glazbe!
Što učiniti za sljedeću verziju?
- Riješite se zaslona i rotacijskog kodera. Zamijenite ih Bluetooth modulom priključenim na arduino. Upravljajte daljinski pomoću telefona ili tableta. Sve je bolje s Bluetoothom.
- Daljinski ažurirajte uzorke akorda u stvarnom vremenu. Nešto je najbolje ostalo za aplikaciju.
- LED poklopci. Trenutna verzija ne čini ništa kako bi spriječila ulazak ruma u LED rupe. Prijatelj je napravio hrpu malih leća, ali nikad nisam mogao shvatiti kako ih natjerati da pravilno ostanu na svom mjestu.
- Zamjenski materijali za opružne ploče, možda nešto jasno sve dok pragovi drže.
- Još svjetla! Uklonite ograničenje teksta dodavanjem više "redaka". Ovo je doista ograničenje uzrokovano veličinom gredice i LED tijelima.
Opet, pogledajte popratni Instructable koji opisuje skup znakova koji sam morao stvoriti kako bih omogućio pomicanje teksta.
Hvala vam puno što ste uspjeli dovde! Mahalo!
Preporučeni:
Korak po korak Izgradnja računala: 9 koraka
Korak po korak izgradnja računala: potrepštine: hardver: matična ploča CPU & Hladnjak procesoraPSU (jedinica za napajanje) Skladištenje (HDD/SSD) RAMGPU (nije potrebno) Alati za kućište: Odvijač ESD narukvica/mattermalna pasta s aplikatorom
Kako izraditi web stranicu (korak-po-korak vodič): 4 koraka
Kako izraditi web stranicu (korak-po-korak vodič): U ovom vodiču pokazat ću vam kako većina web programera gradi svoje web stranice i kako možete izbjeći skupe graditelje web stranica koji su često previše ograničeni za veće web stranice. pomoći vam da izbjegnete neke greške koje sam učinio kad sam počeo
Kako izgraditi svog prvog robota (85 USD): 21 korak (sa slikama)
Kako izgraditi svog prvog robota (85 USD): Uradio sam novu i ažuriranu OVU VERZIJU. MOLIMO, NAĐITE OVDJE https://www.instructables.com/id/How-to-make-your-first-robot-an-actual-programma/ **************** ************************************************ ************** Ažuriranje: Nekim 1
Kako izgraditi kutiju zvučnika za gitaru ili izgraditi dvije za svoj stereo .: 17 koraka (sa slikama)
Kako izgraditi kutiju za zvučnike na gitari ili izgraditi dvije za svoj stereo uređaj. Htio sam novi zvučnik za gitaru uz cijevno pojačalo koje gradim. Zvučnik će ostati vani u mojoj trgovini pa ne mora biti ništa posebno. Tolex prekrivač mogao bi se previše lako oštetiti pa sam samo poprskao crnu vanjsku stranu nakon laganog pijeska
Kako izgraditi svjetlosnu razinu kamere za DSLR: 4 koraka (sa slikama)
Kako izgraditi razinu osvijetljene kamere za DSLR: Jeste li ikada snimali u uvjetima slabog osvjetljenja i primijetili da vaši snimci nisu bili ravni? Pa svakako imam! U posljednje sam vrijeme puno radio s fotografiranjem s dugom ekspozicijom, a kad sam na terenu koristeći gorillapoda, otrčao sam