Sadržaj:
- Korak 1: Napravite plan
- Korak 2: Prikupite materijale
- Korak 3: Nabavite potrebne alate
- Korak 4: Glodajte vrat kako biste smjestili deblju gredicu
- 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 zaštitne ploče
- Korak 9: Priključite žice na PCB; Povežite i testirajte 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 frizuru
- 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 Uke -a
- Korak 19: Kako prikazati akord
- Korak 20: Kako prikazati pomičnu poruku
- Korak 21: Zadivite svijet svojom ljepotom Ukulele
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-23 14:37
Sviram Ukulele. Nekako osrednje (ako je to riječ) pa sam pomislio, "ako zaista želite impresionirati dame, potrebno vam je 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 ekran i korisničko sučelje zasnovano na rotacijskom koderu za odabir načina i intenziteta LED niza.
Dovršene uke hardverske karakteristike:
- Arduino MICRO za povezivanje sa LED nizom, zaslonom i ulaznim uređajem.
- 48 pojedinačno programabilnih LED dioda u boji
- OLED ekran
- Rotacijski 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 kroz njihov tempo
- Odličan način rada u kazalištu (vrlo zgodan za predstave!)
- Kontrola LED intenziteta
- Potpuna biblioteka akorda svih akorda Ukulele na prvoj poziciji (vrijednost i karakter akorda)
- Mogućnost prikaza tekućeg teksta (okomito) pomoću jedinstvenog skupa znakova 4 x 6 piksela
Ova instrukcija 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 zaista ne znate dok ne dođete do kraja (a onda još uvijek ne znate!), Ali puno ste bolje i mnogo ste pametniji za sljedeći dizajn.
Prototip sam izgradio oko kompleta za grizli koncert Ukulele. Početak s kompletom oslobađa brigu o tijelu ukea (dobro, uglavnom) i uklanja većinu pravih poslova lutčijeg tipa. Ovi kompleti su prilično kompletni i nisu toliko skupi u velikoj shemi stvari (i manje su bolni jer ćete pogriješiti).
Korak 1: Napravite plan
Gredica (ili fingerboard) 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 kupovine drugog kompleta) da kupim novu gredicu.
Prilikom projektiranja grede, 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 greda.
LED štampana ploča (PCB) dizajnirana je kao jednostavna dvoslojna ploča. Ovo 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 Eagle -u, ali sam završio s korištenjem Altium Designer -a zbog ograničenja veličine ploče. Altium shematski i PCB fajlovi su ovdje.
Gredica u kompletu 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 grlu za PCB, ili bismo mogli zamijeniti cijelu gredicu (opcija koju sam odabrao) debljom verzijom kompanije Luther Mercantile International (LMII), što je 0,25 inča za početak.
ALI, zapamtite da ćete i dalje morati mašinski obrađivati vrat da 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 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 u suprotnom mogla iskriviti (uvrnuti ili osnove) vrata.
Jedno vrlo zanimljivo razmatranje (koje bih vjerojatno trebao još izračunati) je ono što se događa pri temperaturi. Općenito za drvo, paralelno sa zrnom, toplinski koeficijent ekspanzije je otprilike 3 x 10^-6/K, a za FR4 14 × 10^−6/K. Dakle, postoji značajna razlika. Zabrinjava to što se napetost stvara u vratu pri promjeni temperature, što zauzvrat poništava žice. To je nešto što se može kompenzirati 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. Rupe su izrezane na bočnoj strani (ne na zvučnoj ploči!) UKE -a kako bi se oslobodio prostor za zaslon i rotacijski koder, plus pristupna ploča za držanje Arduino Micro -a i omogućavanje pristupa USB sučelju. Dizajn i lokacija pristupne ploče/nosača bi se vjerojatno mogli poboljšati kako bi USB veza izašla na prikladniju lokaciju, ali kako sada stoji, nije sve tako loše jer vam to ne smeta pri igranju.
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 PCB koji 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č da provučete žice PCB -a u telo
- Poravnajte i zalijepite PCB i gredicu na vrat
- Izravnajte rubove greda do vrata (uklonite višak materijala)
- Ugradite žice za pričvršćivanje
- 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ša lista materijala izgleda ovako:
- Komplet za ukulele - Koristio sam komplet za ukulele sa 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 sa PCB materijalom. Potražite nešto sa najmanje 60 minuta radnog vijeka. NE koristite tipove od 5 minuta, potrebno vam je vrijeme za prilagođavanja
- Žice za ograde - takođe 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
- Spojna žica - najmanje 4 do 6 boja kako ne bi došlo do zabune, koristio sam prvenstveno žicu promjera 28. Gledajte pad DC -a na LED priključcima za napajanje (i VCC i GROUND … ta struja se mora vratiti na izvor!)
- Rotacijski davač-PEC16-4220F-S0024
- Moderno drveno dugme - za rotacijski davač (ja sam svoj dobio od LMII)
- OLED ekran - iz 4D sistema OLED ekrani
- Vanjska USB baterija - uvijek jeftinija, a možete nositi i rezervne dijelove!
- Arduino MICRO
- List od mesinga - kako bi ploča držala arduino i okvir za ekran
- 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)
- Opcionalna 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ša lista alata uključuje:
- Glodalica - preferira se 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 jer obrađujemo drvo, a ne metal
- Stezaljke - puno njih. Uglavnom potrebno za držanje dijelova tokom lijepljenja
- Lemilica - mali vrh za površinsko lemljenje
- Mikroskop ili lupa - možete pokušati lemiti samo očima, ali ne bih to preporučio, najmanje 10x
- Pinceta (za postavljanje delova)
- Alati za pričvršćivanje (pogledajte odgovarajuće alate na LMII ovdje, ali koristio sam ono što sam imao kod kuće i snalazio se; č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 zrna brusnog papira
Naši softverski alati uključuju (neki su izborni, ovisno o vašem budžetu/domišljatosti):
- Arduino softver
- Izvorni kod Ukulele -a (https://github.com/conrad26/Ukulele)
- Paket izgleda PCB -a - koristio sam Altium jer besplatna verzija Eagle -a nije podržavala željenu veličinu ploče. Altium je potpuno opremljen paket izgleda i nije baš u cjenovnom rangu hobista. Uključio sam Gerber datoteke na svoju web stranicu za prototip, ali definitivno je potrebno ažuriranje
- 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 gvozdene ploče 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 šta želimo da radimo i šta nam je potrebno za to, napravimo Ukulele.
Korak 4: Glodajte vrat kako biste smjestili deblju gredicu
Prije glodanja imajte na umu da se MORA održavati izvorna ravnost montažne površine, 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 i provjerite poravnanje sa glodalicom preko cijelog vrata prije rezanja. Vreme provedeno ovde će vam kasnije uštedeti mnogo tuge.
Jedan od razloga zašto sam se odlučio za deblji karton preko umetka u vratu je povećana površina montaže (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, pa pazite da ih ne oštetite. Predlažem nošenje statičkog remena jer niz ovisi o svakom LED -u koji radi.
Dizajn gvozdenih dasaka zasnovan je na LED diodama 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 Eagle -u, ali je veličina ploče ograničena na 4 x 5 inča, pa sam morao (ili točnije, odlučio sam se) prebaciti se na Altium. Koristim Altium na poslu, pa mi je u stvarnosti to ubrzalo stvari. Projekt Altium, shematski i PCB datoteke (i dijelovi biblioteke) nalaze se na mojoj web lokaciji. Ploča je trapezoidnog oblika i duga oko 10 inča. Mislim da sam trebao pokušati još malo stisnuti konturu (sljedeće okretanje!) Montaža nije bila loša, ali ako si to možete priuštiti, zaista vam preporučujem pristojno lemilicu (JBC lemilice) i dobar mikroskop. Da, razmažen sam i ne, nemam takve stvari u svojoj kućnoj laboratoriji. Ja sam jeftin.
Napravio sam ploče u Sunstoneu. 129 USD za dvije ploče. Garantovano jedna nedelja smene. Ipak, nemojte štedjeti na otpremi. Nisam primijetio da sam koristio UPS tlo i na kraju sam čekao dodatnu sedmicu da stignu moje ploče. Ukupno vrijeme montaže bilo je oko 2 sata (98 dijelova).
Korak 6: Glodanje grede
Moramo glodati gredicu da napravimo rupe na potrebnim lokacijama i stvorimo džepove za ploču i LED diode.
Napravio sam 3D model dovršene gredice u Solidworks -u i kreirao CNC rutinu glodanja koristeći FeatureCAM.
Donji dio greda (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 odgovarao 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čna podešavanja 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 u koji ć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 modifikovan tako da se nikada ne ukršta sa utorom za fret.
Korak 7: Izbrusite pristupne rupe u tijelu Ukulele
Ručno sam glodala pristupne rupe na tijelu. Najteži dio je pronaći "najravnije" područje vrlo zakrivljene površine. Označite konturu olovkom i postupno glodajte materijal dok ne uklopite OLED ekran. Dobio sam obrađeni 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 su lakše stvoriti.
Korak 8: Napravite zaštitne ploče
Takođe morate izraditi poklopce za okvir ekrana i ploču za pristup. Pristupnoj ploči je potreban otvor (pravokutni) za USB (mikro) konektor. Samo upotrijebite postojeći priključak na Arduinu, jer nema mnogo opcija za montiranje ploče za mikro USB. (iako bih dizajnirao od nule, pogledao bih jednu od ovih)
Da biste držali ploču na mjestu, oblikujte L držače od mesinga i lemite ih na stražnju stranu pristupne ploče. To vam omogućuje određenu širinu u pozicioniranju. Da biste pravilno pozicionirali, najprije stvorite montažnu 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 vijaka za stroj. Zatim možete prilagoditi lokaciju kako biste postavili USB priključak i precizno označili lokacije zagrada na ploči. Uklonite držač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. Mnogo je lakše izvršiti podešavanja prije lijepljenja.
Korak 9: Priključite žice na PCB; Povežite i testirajte elektroniku
Nemojte još trajno priključivati elektroniku. Pričvrstite žice na tiskanu ploču, pazeći da ostavite dovoljno slobodnog prostora da provučete pristupnu rupu. Oni na kraju moraju biti trajno priključeni 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 prema uputama priloženim uz komplet Ukulele. Posebno pazite na poravnanje 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 opcionalno 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 oblikovati 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 nanesite maskiranje na sve nezalijepljene površine prije lijepljenja kako biste bili sigurni da ide samo tamo gdje ste namjeravali.
Koristite epoksid s najmanje 60 minuta radnog vijeka … sve će vam trebati.
Prvo zalijepite PCB na mjesto, pazeći da višak ljepila ne istisne na 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 sa malo brusnog papira kako bih epoksidu dao malo poboljšanu površinu.
Poravnajte i zalijepite gredicu na vrat. Pazite da ne ostavljate džepove koji bi kasnije mogli odjeknuti (zujanje!). Pazite i 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 lampica će vas natjerati da mrzite život. Imao sam jednu lošu LED diodu (prvu!) Na prototipu i morao sam napraviti malo kreativne stolarije da bih pristupio neispravnoj LED i čisto je zakrpati.
Korak 13: Nivelirajte rubove gvozdene ploče do vrata i dodajte žice za frizuru
Nakon što se ljepilo osuši, možete započeti doradu rubova. Pažljivo sam odrezao višak materijala od greda (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 bi se izbjeglo kvarenje). Samo nemojte jako 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 dozvolio da se neki LED džepovi (blizu 12. praga, gdje se prostor stisne) prošire u otvor za fret. 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 sa svojim kompletom, a zatim još jednom provjerite dužinu skale kako biste bili sigurni. Komplet koji sam koristio za prototip koristio je pogrešnu duljinu skale i stoga dao pogrešne dimenzije za lociranje mosta (ali je imao napomenu da provjeri web stranicu za najnovija uputstva!). 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 tutorijala od Luthiersa koji znaju šta rade na webu, pa preporučujem da ih konsultujete prije nego što pređ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. Ne radi to.
Uradi svoju 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 se može ažurirati putem USB priključka, tako da zaista nema potrebe da ga razdvajate osim ako ne želite petljati.
Korak 17: Instalirajte tunere i nanizajte instrument
Vjerovatno ć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 nisu nimalo pomogle zvuku. Zato imajte to na umu dok odvajate novac u projekt ukulele …
Korak 18: Programiranje Uke -a
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 Rotary Encoder Library (Rotary Encoder Arduino Library) za rukovanje korisničkim unosom iz rotacijskog kodera.
Također koristi biblioteku Adafruit Neopixel i primjer koda koji se nalazi ovdje. Režimi 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 sistemi i nalazi se na Github -u ovdje.
Za projekt Ukulele implementirane su dvije jedinstvene funkcije. Prvi implementira biblioteku akorda, a drugi prikazuje tekstualnu poruku koja se pomiče koristeći prilagođeni skup znakova.
Na priloženom dijagramu prikazane su lokacije LED žaruljica i kako su spojene. LED 0 se nalazi u gornjem desnom uglu.
Korak 19: Kako prikazati akord
Funkcija displayChord prikazuje pozicije prstiju (za sada samo prvu poziciju) za svaki akord. Akordi koje je korisnik odabrao (korijenska nota i kvaliteta) pohranjeni su 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 notu i pohranjeni u varijabli koja odgovara kvaliteti akorda. (dakle, A -dur je pohranjen na prvoj lokaciji 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 je ovo tekstualni niz, 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 naredni niz od 12 počinje na prvom pragu sljedećeg niza (pogledajte dijagram u koraku 18). Ovo 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 žice 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 osnovu ožičenja želimo upaliti LED diode 24 i 37. Kod za prikaz akorda prikazan je ispod.
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) služi za promjenu indeksne trake.setPixelColor (ledNumber, 0, 125, 125); // setPixelColor (LED broj, 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 od 12 x 4 … zašto ga ne bismo natjerali da prikazuje nešto drugo osim prilično nasumičnih svjetlosnih uzoraka!
Prvi problem je što je visina prikaza (4) prilično ograničena zbog broja nizova na Ukeu. Horizontalno pomicanje bilo bi uglavnom nečitko, ali u vertikalnoj orijentaciji možemo podržati 4 x 5 znakova koji rade okomito.
Organiziranje znakova u pet "okomitih" redova 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 tabele. Dodijelio sam svaki red jednoj heksadecimalnoj vrijednosti (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 pravi neke kompromise s određenim slovima, ali većina je razumljivo jasna. (piskanje 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 rezoluciju.
Prikazani niz je sadržan u promenljivoj stringa, poruci.
Međuspremnik je kreiran za predstavljanje 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 bafer 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 sa 48 bita za niz. Potrošio sam malo memorijskog prostora kako bih ovo lakše konceptualizirao. Svako grickanje dobiva vlastitu memorijsku lokaciju, udvostručuje memorijske zahtjeve, ali s obzirom na veličinu bafera to 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).
Za učitavanje bafera, hvatamo prvi znak u "poruci" kao ASCII vrijednost i oduzimamo 48 da bismo dobili indeks u nizu asciiFont. Vrijednost tog indeksa pohranjena je u codedChar.
Prvi dio poruke pomaknut prema van odgovara LED diodama 47, 35, 23 i 11 (pri dnu ekrana). 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] = byte ((codedChar & 0x00F000) >> 12); // svih šest predstavljaju na karakteru 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; // popunjavamo odozdo prema gore; NAPOMENA: potrebno je preokrenuti ovo da biste vidjeli je li lakše} if (messagePointer == message.length ()-1) {// rukovati petljom oko poruke messagePointer = 0; } else {messagePointer += 1; // prelazak na sljedeći znak}}
Kada 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 bafera
// želimo ispisati cijelu traku pri svakom prolasku kroz petlju, samo se početna lokacija mijenja za (int row = 12; row> 0; row--) {index = outputPointer + (12-row); if (indeks> 17) indeks = outputPointer+(12 redova) -18; // petlja ako je veća od 17 za (int kolona = 4; kolona> 0; kolona--) {strip.setPixelColor (uint16_t (12*(kolona-1)+(red-1))), uint8_t (RedLED*(bitRead (messageBuffer [index], stupac-1))), uint8_t (GreenLED*(bitRead (messageBuffer [index], stupac-1))), uint8_t (BlueLED*(bitRead (messageBuffer [indeks], stupac-1)))); // na svakoj lokaciji 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 ljepotom Ukulele
Za konačni prototip Ukulele -a potrebno je oko 6 mjeseci startovanja i zaustavljanja.
Mnogo nove tehnologije za naučiti, a možda i neke teorije obrade drveta i muzike za pokretanje!
Šta 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 obrasce akorda u stvarnom vremenu. Nešto je najbolje ostalo za aplikaciju.
- LED poklopci. Trenutna verzija ne čini ništa kako bi spriječila upadanje runa u LED rupe. Prijatelj je napravio gomilu malih sočiva, ali nikada nisam mogao shvatiti kako ih natjerati da pravilno ostanu na svom mjestu.
- Zamjenski materijali od greda, možda nešto jasno sve dok pragovi drže.
- Još svetla! Uklonite ograničenje teksta dodavanjem više "redova". Ovo je zaista ograničenje uzrokovano veličinom greda i LED tijelima.
Ponovo pogledajte priručnik Instructable koji opisuje skup znakova koji sam morao stvoriti da bih omogućio pomicanje teksta.
Hvala vam puno što ste uspjeli dovde! Mahalo!
Preporučuje se:
Kako stvoriti web stranicu (korak-po-korak vodič): 4 koraka
Kako stvoriti 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 će vam da izbjegnete neke greške koje sam učinio na početku
Naučite kako nacrtati svijeću - korak po korak: 6 koraka
Naučite kako nacrtati svijeću - Korak po korak: Ovoj svijeći je potrebno 10 minuta za crtanje ako pažljivo slijedite moje korake. Uživajte
Kako izgraditi svog prvog robota (85 USD): 21 korak (sa slikama)
Kako izgraditi svog prvog robota (85 USD): Uradio sam novu i ažuriranu verziju ovoga. 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 za zvučnike na gitari 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 radnji pa ne mora biti ništa posebno. Tolex prekrivač se može previše lako oštetiti pa sam samo poprskao vanjsku crnu boju nakon laganog pijeska
Kako napraviti osvijetljenu LED lupu za oči: 6 koraka (sa slikama)
Kako napraviti osvijetljenu LED lupu za oči: Koristio sam lupu za oči za pregled malih elektroničkih komponenti, pregled PCB -a itd. Međutim, neki dan sam se zaintrigirao kad sam u Sparkfunu vidio ovu osvijetljenu LED lupu za oči i pomislio sam da sam trebao bih napraviti svoj vlastiti. Instrukcija