V tem projektu bomo ustvarili zabavo z uporabo Arduina. Vsi imamo navado tapkati mizo ali pero za ustvarjanje poljubne glasbe. Seveda tega morda ne bi šteli za dober manir, vendar vsi to počnemo vsaj enkrat. Zato sem mislil, da bi ga dvignil na naslednjo stopnjo z uporabo Arduinove sposobnosti predvajanja tonov. Ko zgradite ta projekt, boste lahko ustvarjali tone s tapkanjem prstov na karkoli prevodnega in ustvarjali svoje ritme, kot bi igrali klavir na dlani. Sliši se v redu, torej, zgradimo ga.
Potrebne komponente:
Gradiva, potrebna za ta projekt, so navedena spodaj, ni pa nujno, da se jih držite. Ko enkrat zagrabite koncept, ga lahko uporabite na svoj način.
- Arduini Pro Mini
- Zvočnik Peizo
- Flex senzor
- Prstne rokavice
- 10K upori
- BC547 Tranzistorji
- 9V baterija
Shema vezja in razlaga:
Shema vezja za ta klavir Arduino Palm je prikazana spodaj.
Projekt uporablja skupno štiri senzorje, to sta dva flex senzorja in dva Darlingtonova para, ki delujeta kot senzor na dotik. Uporabili smo tudi dva uporovna upora R1 in R2 z vrednostjo 10k, ki bosta delovala kot uporovni upor za Flex senzor. Tu se senzor Flex uporablja za ustvarjanje treh različnih tonov z enim prstom glede na to, koliko se je upognil. Tako lahko z dvema prstoma proizvedemo 6 zvokov. Tukaj preberite o Flex senzorju.
Darlingtonski par:
Preden nadaljujemo, je pomembno vedeti, kaj je Darlington in kako natančno deluje v našem projektu. Darlingtonov par lahko definiramo kot dva bipolarna tranzistorja, povezana tako, da tok, ojačen s prvim, še ojača drugi tranzistor. Par Darlington je prikazan na spodnji sliki:
Kot je prikazano zgoraj, smo uporabili dva tranzistorja BC547, katerih kolektorji so vezani za zbiranje, oddajnik prvega tranzistorja pa je povezan z dnom drugega tranzistorja. To vezje deluje kot ojačevalnik z ojačanjem, kar pomeni, da je vsak majhen signal, dan na dno prvega tranzistorja, dovolj, da premakne osnovo drugega tranzistorja. Naše telo tukaj deluje kot podlaga, tako da kadar koli se dotaknemo dna tranzistorja, postane drugi tranzistor pristranski. S tem smo si ustvarili senzor na dotik za ta projekt.
Zatiča št. 2 in 3 sta prekinitveni zatiči na Arduinu, ki se z notranjimi vlečnimi upori potegnejo visoko, nato pa se ti zatiči držijo na tleh, kadar se stikalo Darlington zapre. Tako vsakič, ko se dotaknemo žice (od osnove 1 st tranzistor) prekinitev se sproži iz Arduino.
Z uporabo dveh prstov lahko dobimo samo dve vrsti tonov, zato sem dodal še upogljiv senzor, ki bo ton spreminjal glede na to, koliko je upognjen. Programiral sem, da na prst ustvarim tri različne tone glede na to, koliko je prst (upogibni senzor) upognjen. Številko lahko povečate, če želite imeti več tonov na konicah prstov.
Celotno desko sem naredil na parfumski deski, tako da se mi zlahka prilega v dlani, lahko pa uporabite tudi mizo. Prepričajte se, da se vaše telo na neki točki dotakne tal vezja. Ko spajkate vse, bi moralo izgledati nekako takole
Z dvema prstnima rokavicama sem žice para Darlington in fleksibilnega senzorja pritrdil v položaj, kot je prikazano zgoraj. Lahko se domislite lastne (boljše, če je le mogoče) ideje, da jih pritrdite na mestu, medtem ko predvajate svoje tone.
Programiranje Arduino:
Program za ta Arduino generator tonskih zvokov je precej preprost. Paziti moramo le na prekinitve žic Darlingtona in če jih najdemo, moramo predvajati ton, ki je odvisen od tega, koliko upognjenega senzorja je upognjen. Popolna koda je podana na koncu tega prispevka, vendar sem spodaj razložil nekaj pomembnih kosov.
Opomba: Ta program deluje s pomočjo knjižnice "pitches.h". Prepričajte se, da ste datoteki glave dodali program, preden ga sestavite. Datoteko glave pitches.h lahko prenesete od tukaj.
V nastavitveni funkciji inicializiramo nožice 2 in 3 kot vhod z vlečnimi upori. Prav tako jih ugotovi kot prekinitvenih zatiči in izvedbo tone1 (), ko pride do prekinitve na nožici 2 in funkcija tone2 (), ko pride do prekinitve na 3 rd zatiča. Te prekinitve se bodo sprožile, kadar bodo ti zatiči NIVO iz svojega vlečenega stanja.
void setup () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
Znotraj funkcije zanke neprestano preverjamo, koliko upognjen je senzor upogiba. Moj FlexSensor 1 je na primer dal vrednosti okoli 200, ko je ostal položen, in se spustil vse do 130, ko sem ga upognil do maksimuma, zato sem vrednost od 200 do 130 preslikal kot 1 do 3, ker moram igrati 3 različne vrste tonov. Ti dve vrstici morate prilagoditi glede na vrednosti senzorja Flex in število tonov.
void loop () {flexSensor1 = map (analogRead (A0), 200,130,1,3); // Zemljevid z lastnimi vrednostmi, ki temeljijo na vašem fleks senzorju flexSensor2 = map (analogRead (A1), 170,185,1,3); // Zemljevid z lastnimi vrednostmi glede na vaš senzor flex}
Kot smo že videli, se bo funkcija tone1 () izvedla, ko bo na zatiču 2 zaznana prekinitev. Kaj se zgodi znotraj funkcije tone1 (), je prikazano zgoraj. Ogledamo si vrednosti FlexSensor1 in predvajamo ton, ki temelji na vrednosti flexSesnor. Toni se bodo predvajali z uporabo funkcije Arduino Tone. V prejšnjem projektu smo razložili funkcijo tone ().
void tone1 () {if (flexSensor1 == 1) tone (8, NOTE_D4,50); sicer če (flexSensor1 == 2) ton (8, OPOMBA_A3,50); sicer če (flexSensor1 == 3) ton (8, NOTE_G4,50); sicer ton (8, OPOMBA_D4,50); }
Spodnja vrstica se uporablja za predvajanje tona. Predvajate lahko kateri koli ton, ki je na voljo v datoteki glave „pitches.h“. Zgornja vrstica na primer predvaja NOTE_A3 na pin v trajanju 50 mili sekund.
ton (8, OPOMBA_A3,50); // ton (PinNum, ime opombe, trajanje);
Delo:
Ko je vaša strojna oprema pripravljena, naložite kodo in jo pritrdite na prste. Poskrbite, da se vaše telo v določenem trenutku dotakne tal vezja. Zdaj se preprosto dotaknite katerega koli prevodnega materiala ali svojega telesa in slišali boste ustrezen ton. Svojo melodijo ali glasbo lahko predvajate s tapkanjem v različnih intervalih in različnih položajih.
Spodnji video prikazuje popolno delovanje tega projekta. Upam, da vam je bilo všeč pri izdelavi projekta, kakršne koli predloge ali vprašanja lahko objavite v spodnjem oddelku za komentarje. Preverite tudi naš Arduino Audio Player in Arduino Tone Generator Project.