Sisällysluettelo:

Digitoi kappale Arduinolla: 6 vaihetta
Digitoi kappale Arduinolla: 6 vaihetta

Video: Digitoi kappale Arduinolla: 6 vaihetta

Video: Digitoi kappale Arduinolla: 6 vaihetta
Video: Trey Songz - She Lovin It [Official Music Video] 2024, Marraskuu
Anonim
Digitoi kappale Arduinon avulla
Digitoi kappale Arduinon avulla

Halusin luoda projektin, jossa yhdistettiin kaksi suosikkiaiheani: tiede ja musiikki. Mietin kaikkia tapoja, joilla voisin yhdistää nämä kaksi verkkotunnusta, ja ajattelin, että olisi mielenkiintoista tehdä Arduinosta näytelmä Fur Elise näyttäen nuotin sävelkorkeutta Hertzissä. Aloitetaan nyt rakentaminen!

Tarvitset yhden Arduino Unon tai Megan, paljon hyppyjohtoja, Piezo -summerin, leipälevyn, 16*2 LCD -näytön, jossa kaikki pyyhkimen nastat paikallaan, ja 10 k: n potentiometrin (saatat myös kuulla, että niitä kutsutaan potterimittareiksi)). On parasta saada kaikki nämä tarvikkeet yhteen ennen rakentamisen aloittamista.

Vaihe 1: Muunna musiikkipisteet digitaalisiin muistiinpanoihin: Viivearvot

Muunna musiikkipisteet digitaalisiksi muistiinpanoiksi: Viivearvot
Muunna musiikkipisteet digitaalisiksi muistiinpanoiksi: Viivearvot

Nuotin transkriptio digitaalisesti partituurista sen digitaaliseen vastaavaan on kaksi vaihetta. Ensinnäkin meidän on kirjoitettava muistiinpanon kesto millisekunteina. Käytin netistä löytyvää kaaviota tätä tehtävää varten. Sen perusteella, onko nuotti puoliksi, neljännes-, kahdeksas, jne., Kirjoitin nuotin pituuden millisekunteiksi. Näet nämä numerot koodissani viiveenä (); -funktio ja suluissa oleva luku ovat tässä vaiheessa määrittämämme viivearvo millisekunteina.

Vaihe 2: Muunna musiikkipisteet digitaalisiin muistiinpanoihin: Hertz -arvot

Muunna musiikkipisteet digitaalisiksi muistiinpanoiksi: Hertz -arvot
Muunna musiikkipisteet digitaalisiksi muistiinpanoiksi: Hertz -arvot

Ennen kuin aloitan tämän vaiheen, haluan määritellä joitain teknisiä termejä. Nuotin "arvoa" voidaan käyttää sanojen "pitch", "value" ja "note" kanssa. Nyt sinun on luettava kappaleen jokainen nuotti partituurista. Sinun on sitten käännettävä jokainen nuotti hertseiksi käyttämällä musiikkia Hertz -taulukkoon, jonka löydät helposti verkosta. Yksi asia on muistaa, että keskimmäinen C on taulukossa merkitty C4: ksi ja oktaavi korkeampi on C5 jne. Kun nämä muistiinpanot on kirjoitettu hertseiksi, asetat arvot funktion sävyyn (x, y, z); jossa X on pin -numero tai const int, tapa määritellä muuttujat, jotka selitän myöhemmin. Y on hertsi -arvo, jonka juuri kirjoitit, ja Z on nuotin kesto millisekunteina pyöristettynä lähimpään sadasosaan. Viive(); arvot ovat muistiinpanon kesto. Suunnitellaan nyt piiri, jolla voi toistaa musiikkia.

Vaihe 3: Piirin suunnittelu

Piirin suunnittelu
Piirin suunnittelu

Nyt kun olemme kääntäneet kaikki muistiinpanot digitaalisiin arvoihin, jotka tietokone voi ymmärtää, on aika rakentaa piiri. Aloita ottamalla leipälauta ja asettamalla nestekidenäyttö rivin 14 ensimmäiseen tappiin (GND). Aseta summeri haluamaasi paikkaan ja aseta potentiometri sen viereen. Tavoitteena on järjestää kaikki yhteen, minimoida johtojen sotku. Aseta Arduino leipälaudan viereen ja kytke 5 voltin nasta leipälevyn positiiviseen kiskoon ja maadoitusnasta negatiiviseen kiskoon. Nyt olemme valmiita yhdistämään puserot Arduinon ja komponenttien välille.

Puhutaan nyt nestekidenäytön nastoista ja niiden johtamisesta.

GND tarkoittaa maata, tämä on tasavirran negatiivinen johto. Johda GND leipälevyn negatiivikiskoon.

VCC tarkoittaa Voltage at the Common Collector, ja tähän liitetään 5 voltin virtalähde (positiivinen virtakisko).

VO tarkoittaa kontrastia, kytke tämä potentiometrin keskitappiin. Liitä potentiometrin vasen nasta positiiviseen virtakiskoon ja oikea nasta maadoituskiskoon.

RS on lyhenne sanoista Register Select, ja Arduino käyttää sitä kertomaan näytölle, minne tiedot tallennetaan. Liitä tämä nasta Arduinon nastaan 12.

RW on lyhenne sanoista Read/Write pin, jonka avulla Arduino tarkistaa, näkyykö näytössä mitä olet ohjelmoinut sen näytettäväksi. Liitä tämä tappi leipälevyn negatiivikiskoon.

E tarkoittaa Enable, joka kertoo nestekidenäytölle, mitkä pikselit otetaan käyttöön (kytketään päälle) tai poistetaan käytöstä (sammutetaan). Liitä tämä nasta Arduino -nastaan 11.

D4, D5, D6 ja D7 ovat näytön nastoja, jotka ohjaavat näytettäviä merkkejä ja kirjaimia. Liitä ne Arduinon nastoihin 5, 4, 3 ja 2.

Nasta A, joskus merkitty LEDiksi, on taustavalon LED -anodi. Liitä tämä positiiviseen virtakiskoon johdolla tai 220 ohmin vastuksella. Vastus on parempi pidempään käyttöön, koska se säästää nestekidenäyttöä, mutta jos laitetta ei käytetä päivin ja öin, et tarvitse vastusta.

Nasta K, joskus myös (hämmentävästi) merkitty LED, on LED -maadoitustappi. Liitä tämä maadoituskiskoon.

Vaihe 4: Koodin lataaminen: ohjeet

Liitä Arduino tietokoneesi USB -liitäntään. Lataa seuraava koodi Arduino IDE -ohjelmoijalla.

#sisältää

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

void setup () {

// aseta nestekidenäytön sarakkeiden ja rivien määrä: lcd.begin (16, 2); // Tulosta viesti nestekidenäyttöön. lcd.print ("Hertz Pitch:!"); viive (1000); void loop () {// toista e4 -viive (600); // keskeytä 0,6 sekunnin merkkiääni (10, 329,63, 300); // toista e summerille nastassa 10, kestää.3 sek. lcd.print (" 329.63 "); // näyttää viestin nestekidenäytössä" 329.63"

viive (350); // viive 0,35 sekuntia

lcd.clear (); // tyhjennä nestekidenäyttö ja nollaa seuraava viesti // toista d4# -ääni (10, 311.13, 300); lcd.print ("311.13"); viive (350); lcd.clear (); // toista e4 -ääni (10, 329,63, 300); lcd.print ("329,63"); viive (350); lcd.clear (); // toista d4# -ääni (10, 311,13, 300); lcd.print ("311.13"); viive (350); lcd.clear (); // toista e4 -ääni (10, 329,63, 300); lcd.print ("329,63"); viive (350); lcd.clear (); // toista b3 -ääni (10, 246,94, 300); lcd.print ("246,94"); viive (400); lcd.clear (); // toista d4 -ääni (10, 293,66, 300); lcd.print ("293,66"); viive (400); lcd.clear (); // toista c4 -ääni (10, 261,63, 300); lcd.print ("261.63"); viive (400); lcd.clear (); // toista a3 -ääni (10, 220, 900); lcd.print ("220.0"); viive (1000); lcd.clear (); // line60 // helpave // avrdude.failure.eeprom // toista d3 -ääni (10, 146,83, 300); lcd.print ("146,63"); viive (350); lcd.clear (); // toista f3 -ääni (10, 174,61, 300); lcd.print ("174,61"); viive (400); lcd.clear (); // toista a3 -ääni (10, 220, 300); lcd.print ("220"); viive (400); lcd.clear (); // toista b3 -ääni (10, 246,94, 900); lcd.print ("246,94"); viive (1000); lcd.clear ();

// pelata e3

sävy (10, 164,81, 300); lcd.print ("164,81"); viive (400); lcd.clear (); // toista g3# -ääni (10, 207,65, 300); lcd.print ("207,65"); viive (400); lcd.clear (); // toista b3 -ääni (10, 246,94, 300); lcd.print ("246,94"); viive (400); lcd.clear (); // toista c4 -ääni (10, 261,63, 900); lcd.print ("261.63"); viive (1000); lcd.clear (); // toista e -ääni (10, 164,81, 300); lcd.print ("164,81"); viive (400); lcd.clear (); // toista e4 -ääni (10, 329,63, 300); lcd.print ("329,63"); viive (400); lcd.clear (); // toista d4# -ääni (10, 311,13, 300); lcd.print ("311.13"); viive (400); lcd.clear (); // toista e4 -ääni (10, 329,63, 300); lcd.print ("329,63"); viive (400); lcd.clear (); // toista d4# -ääni (10, 311,13, 300); lcd.print ("311.13"); viive (400); lcd.clear (); // toista e4 -ääni (10, 329,63, 300); lcd.print ("329,63"); viive (400); lcd.clear (); // toista b3 -ääni (10, 246,94, 300); lcd.print ("246,94"); viive (400); lcd.clear (); // toista d4 -ääni (10, 293,66, 300); lcd.print ("293,66"); viive (400); lcd.clear (); // toista c4 -ääni (10, 261,63, 300); lcd.print ("261.63"); viive (400); lcd.clear (); // toista a3 -ääni (10, 220, 900); lcd.print ("220.0"); viive (1000); lcd.clear (); // toista d3 -ääni (10, 146,83, 300); lcd.print ("146,83"); viive (400); lcd.clear (); // toista f3 -ääni (10, 174,61, 300); // eeprom 20--6 yesno, flash 65--0 noyes lcd.print ("174.61"); viive (400); lcd.clear (); // toista a3 -ääni (10, 220, 300); lcd.print ("220.0"); viive (400); lcd.clear (); // toista b3 -ääni (10, 246,94, 900); lcd.print ("246,94"); viive (1000); lcd.clear (); // toista f3 -ääni (10, 174,61, 300); lcd.print ("174,61"); viive (400); lcd.clear (); // toista c4 -ääni (10, 261,63, 300); lcd.print ("261.63"); viive (400); lcd.clear (); // toista b3 -ääni (10, 246,94, 300); lcd.print ("246,94"); viive (400); lcd.clear (); // toista a3 -ääni (10, 220, 900); lcd.print ("220.0"); viive (1000); lcd.clear (); // toista b3 -ääni (10, 246,94, 300); lcd.print ("246,94"); viive (400); lcd.clear (); // toista c4 -ääni (10, 261,63, 300); lcd.print ("261.63"); viive (400); lcd.clear (); // toista d4 -ääni (10, 293,66, 300); lcd.print ("293,66"); viive (400); lcd.clear (); // toista e4 -ääni (10, 329,63, 900); lcd.print ("329,63"); viive (1000); lcd.clear (); // toista g3 -ääni (10, 196, 300); lcd.print ("196,0"); viive (400); lcd.clear (); // toista f4 -ääni (10, 349,23, 300); lcd.print ("349,23"); viive (400); lcd.clear (); // toista e4 -ääni (10, 329,23, 300); lcd.print ("329,23"); viive (400); lcd.clear (); // toista d4 -ääni (10, 293,63, 900); lcd.print ("293,63"); viive (1000); lcd.clear (); // toista e3 -ääni (10, 164,81, 300); lcd.print ("164,81"); viive (400); lcd.clear (); // toista e4 -ääni (10, 329,63, 300); lcd.print ("329,63"); viive (400); lcd.clear (); // toista d4 -ääni (10, 293,63, 300); lcd.print ("293,63"); viive (400); lcd.clear (); // toista c4 -ääni (10, 261,63, 900); lcd.print ("261.63"); viive (1000); lcd.clear (); // toista d3 -ääni (10, 146,83, 300); lcd.print ("146,83"); viive (400); lcd.clear (); // toista d4 -ääni (10, 293,63, 300); lcd.print ("293,63"); viive (400); lcd.clear (); // toista c4 -ääni (10, 261,63, 300); lcd.print ("261.63"); viive (400); lcd.clear (); // toista b3 -ääni (10, 246,94, 900); lcd.print ("246,94"); viive (1000); lcd.clear (); // toista e4 -ääni (10, 329,63, 300); lcd.print ("329,63"); viive (400); lcd.clear (); // toista d4# -ääni (10, 311,13, 300); lcd.print ("311.13"); viive (350); lcd.clear (); // toista e4 -ääni (10, 329,63, 300); lcd.print ("329,63"); viive (350); lcd.clear (); // toista d4# -ääni (10, 311,13, 300); lcd.print ("311.13"); viive (350); lcd.clear (); // toista e4 -ääni (10, 329,63, 300); lcd.print ("329,63"); viive (350); lcd.clear (); // toista b3 -ääni (10, 246,94, 300); lcd.print ("246,94"); viive (400); lcd.clear (); // toista d4 -ääni (10, 293,66, 300); lcd.print ("293,66"); viive (400); lcd.clear (); // toista c4 -ääni (10, 261,63, 300); lcd.print ("261.63"); viive (400); lcd.clear (); // toista a3 -ääni (10, 220, 900); lcd.print ("220.0"); viive (1000); lcd.clear (); // toista d3 -ääni (10, 146,83, 300); lcd.print ("146,83"); viive (350); lcd.clear (); // toista f3 -ääni (10, 174,61, 300); lcd.print ("174,61"); viive (400); lcd.clear (); // toista a3 -ääni (10, 220, 300); lcd.print ("220.0"); viive (400); // toista b3 lcd.clear (); sävy (10, 246,94, 900); lcd.print ("246,94"); viive (1000); lcd.clear (); // toista e3 -ääni (10, 164,81, 300); lcd.print ("164,81"); viive (400); lcd.clear (); // toista g#3 -ääni (10, 207,65, 300); lcd.print ("207,65"); viive (400); lcd.clear (); // toista b3 -ääni (10, 246,94, 300); lcd.print ("246,94"); viive (400); lcd.clear (); // toista c4 -ääni (10, 261,63, 900); lcd.print ("261.63"); viive (1000); viive (300); lcd.clear (); // toista e3 -ääni (10, 164,81, 300); lcd.print ("164,81"); viive (400); lcd.clear (); // toista e4 -ääni (10, 329,63, 300); lcd.print ("329,63"); viive (400); lcd.clear (); // toista d4# -ääni (10, 311,13, 300); lcd.print ("311.13"); viive (400); lcd.clear (); // toista e4 -ääni (10, 329,63, 300); lcd.print ("329,63"); viive (400); lcd.clear (); // toista d4# -ääni (10, 311,13, 300); lcd.print ("311.13"); viive (400); lcd.clear (); // toista e4 -ääni (10, 329,63, 300); lcd.print ("329,63"); viive (400); lcd.clear (); // toista b3 -ääni (10, 246,94, 300); lcd.print ("246,94"); viive (400); lcd.clear (); // toista d4 -ääni (10, 293,66, 300); lcd.print ("293,66"); viive (400); lcd.clear (); // toista c4 -ääni (10, 261,63, 300); lcd.print ("261.63"); viive (400); lcd.clear (); // toista a3 -ääni (10, 220, 900); lcd.print ("220.0"); viive (1000); lcd.clear (); // toista d3 -ääni (10, 146,83, 300); lcd.print ("146,83"); viive (400); lcd.clear (); // toista f3 -ääni (10, 174,61, 300); lcd.print ("174,61"); viive (400); lcd.clear (); // toista a3 -ääni (10, 220, 300); lcd.print ("220.0"); viive (400); lcd.clear (); // toista b3 -ääni (10, 246,94, 900); lcd.print ("246,94"); viive (1000); lcd.clear (); // toista f3 -ääni (10, 174,61, 300); lcd.print ("174,61"); viive (400); lcd.clear (); // toista c4 -ääni (10, 261,63, 300); lcd.print ("261.63"); viive (400); lcd.clear (); // toista b3 -ääni (10, 246,94, 300); lcd.print ("246,94"); viive (400); lcd.clear (); // toista a3 -ääni (10, 220, 900); lcd.print ("220.0"); viive (1000); lcd.clear (); }

Vaihe 5: Koodin lataaminen: Mitä tämä kaikki tarkoittaa?

Määritellään joitakin toimintoja englanniksi, jotta ymmärrät koodin.

sävy (x, y, z); = soita sävy y hertsiääniä, summerilla nastassa x, z millisekuntia.

lcd.print ("XYZ"); = tulosta XYZ -merkkinen viesti nestekidenäyttöön. (esim. näytä Hertzin sävelkorkeus)

viive (x); = tauko x millisekuntia.

const int X = Y = aseta vakiomuuttuja X nastaan Y ja käytä joko X: tä tai Y: tä tehtävien määrittämiseen laitteelle.

lcd.clear (); = tyhjennä nestekidenäyttö ja nollaa uusi näyttö

pinMode (X, OUTPUT); = aseta nasta X tulostustilaa varten

Kun olet ymmärtänyt kaikki nämä toiminnot, voit helposti korvata muuttujat tiedoilla, jotka keräät kappaleen kääntämisessä, ja voit sitten koodata oman kappaleesi!

Vaihe 6: Valmis !

Valmis !!!
Valmis !!!
Valmis !!!
Valmis !!!

Sinulla on joko Arduino, joka soittaa Fur Eliseä ja näyttää nuotin arvot Hertz -muodossa, tai olet luonut Arduinon, joka toistaa valitsemasi kappaleen melodian ja näyttää tekstin, jonka haluat näyttää. Kiitos vierailustasi tässä opetusohjelmassa, ja toivon sinulle tätä projektia Arduinossa.

Suositeltava: