Sisällysluettelo:
- Vaihe 1: Muunna musiikkipisteet digitaalisiin muistiinpanoihin: Viivearvot
- Vaihe 2: Muunna musiikkipisteet digitaalisiin muistiinpanoihin: Hertz -arvot
- Vaihe 3: Piirin suunnittelu
- Vaihe 4: Koodin lataaminen: ohjeet
- Vaihe 5: Koodin lataaminen: Mitä tämä kaikki tarkoittaa?
- Vaihe 6: Valmis !
Video: Digitoi kappale Arduinolla: 6 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
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
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
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
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 !
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:
Moottorin nopeuden mittaus Arduinolla: 6 vaihetta
Moottorin nopeuden mittaus Arduinon avulla: Onko moottorin kierrosluvun mittaaminen vaikeaa? En usko. Tässä on yksi yksinkertainen ratkaisu: Vain yksi infrapuna -anturi ja Arduino sarjassasi voivat tehdä niin. Tässä viestissä annan yksinkertaisen opetusohjelman, jossa selitetään kuinka mitata minkä tahansa moottorin kierrosluku IR -anturia ja A
Tee edullisen anturin kappale muutamassa minuutissa!: 10 vaihetta (kuvilla)
Tee edullisen anturin jälki muutamassa minuutissa!: Edellisessä Instructable -ohjelmassani näytin sinulle, kuinka tehdä juna -asettelun automatisoitu sivuraide. Se käytti raideosaa, nimeltään "sensored track". Se on varsin hyödyllinen asia rautateiden mallissa. Minua voidaan käyttää seuraaviin tarkoituksiin: Estä
Kuinka koodata kappale käyttämällä nuotteja Sonic Pi: 5 vaihetta
Kappaleen koodaaminen nuottien avulla Sonic Pi: ssä: Tässä ohjeessa hahmotellaan joitain perusvaiheita ja koodinpätkiä, joita käytetään koodattaessa kappaletta Sonic Pi: ssä nuotteja käyttäen! On miljoona muuta koodikappaletta, jotka yrittävät lisätä makua valmiiseen kappaleeseesi, joten muista pelata myös y
Sonic Pi "Twinkle Twinkle Little Star" -koodattu kappale Macille: 6 vaihetta
Sonic Pi "Twinkle Twinkle Little Star" -koodattu kappale Macille: Nämä ovat perusohjeet "Twinkle Twinkle Little Star" -koodin koodaamiseen. Macin Sonic Pi -käyttöjärjestelmässä
Muunna mikä tahansa kappale Mp3: 7 -vaiheiksi
Muunna mikä tahansa kappale MP3: ksi: annan tunnustusta las vegasille, hän näytti minulle kuinka. Julkaisen tämän vain niille, jotka ovat tyhmiä kuten minä* päivitys* trebuchet03: n ansiosta et voi siirtää m4p -tiedostoja, mutta voit mp4 -tiedostoilla las vegases -kotisivulla miksi tekisimme tämän? hyvin mp3 -soitin