Talaan ng mga Nilalaman:
- Hakbang 1: I-convert ang Marka ng Musika Sa Mga Digital na Tala: Pag-antala ng Mga Halaga
- Hakbang 2: I-convert ang Marka ng Musika Sa Mga Digital na Tala: Mga Halaga ng Hertz
- Hakbang 3: Disenyo ng Circuit
- Hakbang 4: Pag-upload ng Code: How-To
- Hakbang 5: Pag-upload ng Code: Ano ang Ibig Sabihin ng Lahat ng Iyon?
- Hakbang 6: Tapos !!
Video: Digitize a Song With Arduino: 6 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
Nais kong lumikha ng isang proyekto na pinagsama ang dalawa sa aking mga paboritong paksa: agham at musika. Naisip ko ang lahat ng mga paraan na maaari kong pagsamahin ang dalawang domain na ito, at, naisip ko na magiging kawili-wiling gumawa ng isang Arduino na paglalaro ng Fur Elise habang ipinapakita ang tono ng tala sa Hertz. Ngayon, magsimula na tayong magtayo!
Kakailanganin mo ang isang Arduino Uno o Mega, maraming mga jumper cables, isang Piezo buzzer, isang breadboard, isang 16 * 2 LCD screen na may lahat ng wiper pin sa lugar, at isang 10k Potentiometer (maaari mo ring marinig na tinutukoy sila bilang mga potmeter). Mahusay na pagsamahin ang lahat ng mga suplay na ito bago namin simulan ang pagbuo.
Hakbang 1: I-convert ang Marka ng Musika Sa Mga Digital na Tala: Pag-antala ng Mga Halaga
Mayroong dalawang mga hakbang sa digital na paglilipat ng isang tala mula sa iskor sa kanyang katumbas na digital. Una, kakailanganin nating isulat ang oras na tumatagal ang tala sa milliseconds. Nagtatrabaho ako ng isang tsart na nahanap online para sa gawaing ito. Batay sa kung ang isang tala ay isang kalahating tala, kwartong tala, ikawalong tala, atbp, inilipat ko ang haba ng tala sa mga milliseconds. Maaari mong makita ang mga numerong ito sa aking code bilang pagkaantala (); ang pagpapaandar at ang bilang sa loob ng panaklong ay ang halaga ng pagkaantala sa mga millisecond na natukoy namin sa hakbang na ito.
Hakbang 2: I-convert ang Marka ng Musika Sa Mga Digital na Tala: Mga Halaga ng Hertz
Bago simulan ang hakbang na ito, hayaan mo akong tukuyin ang ilang mga teknikal na termino. Ang "halaga" ng isang tala ay maaaring palitan ng paggamit sa mga salitang "pitch", "halaga", at "note". Ngayon, kailangan mong basahin ang bawat tala ng kanta mula sa iskor. Kakailanganin mong isalin ang bawat tala sa Hertz gamit ang isang musika sa talahanayan ng Hertz, na madali mong mahahanap sa online. Ang isang bagay na dapat tandaan ay ang gitnang C ay nakalista bilang C4 sa talahanayan, at ang isang oktaba na mas mataas ay C5, at iba pa. Kapag ang mga tala na ito ay naka-transcript sa lahat sa Hertz, ilalagay mo ang mga halaga sa tone ng pag-andar (x, y, z); kung saan ang X ay ang pin number o const int, isang paraan ng pagtukoy ng mga variable na ipapaliwanag ko sa paglaon. Ang Y ang magiging halaga ng Hertz na inilipat mo lang, at ang Z ang tagal ng tala sa milliseconds na bilugan sa pinakamalapit na sandaang. Ang pagkaantala (); ang mga halaga ay ang tagal ng tala. Ngayon, disenyo natin ang circuit na maaaring magpatugtog ng musika.
Hakbang 3: Disenyo ng Circuit
Ngayon na isinalin namin ang lahat ng mga tala sa mga digital na halagang maaaring maintindihan ng isang computer, oras na upang buuin ang circuit. Magsimula sa pamamagitan ng pagkuha ng isang breadboard at ilagay ang LCD screen gamit ang unang pin (GND) sa hilera 14. Ilagay ang buzzer kahit saan mo gusto, at maglagay ng potensyomiter sa tabi nito. Ang layunin ay upang linya ang lahat, upang i-minimize ang kalat ng mga wire. Ilagay ang Arduino sa tabi ng breadboard, at ikonekta ang 5v pin sa positibong riles ng breadboard, at ang ground pin sa negatibong riles. Ngayon, handa na kaming ikonekta ang mga jumper sa pagitan ng Arduino at ng mga sangkap.
Ngayon, pag-usapan natin ang tungkol sa mga pin sa LCD, at kung paano i-wire ang mga ito.
Ang GND ay nangangahulugang ground, ito ang negatibong wire sa direktang kasalukuyang. Wire GND sa negatibong riles ng breadboard.
Ang VCC ay nangangahulugang Voltage sa Common Collector, at dito mo ikinonekta ang iyong 5-volt na mapagkukunan ng kuryente (ang positibong power rail).
Ang VO ay nangangahulugang Contrast, i-wire ito sa gitnang pin ng potentiometer. Ikonekta ang kaliwang pin ng potentiometer sa positibong power rail, at ang kanang pin sa ground power rail.
Ang RS ay nangangahulugang Pagpili ng Rehistro, at ginagamit ito ng Arduino upang sabihin sa display kung saan mag-iimbak ng data. Ikonekta ang pin na ito sa pin 12 sa Arduino.
Ang RW ay nangangahulugang Basahin / Isulat ang pin, na ginagamit ng Arduino upang suriin kung ipinapakita ng screen kung ano ang na-program mo upang maipakita. Ikonekta ang pin na ito sa negatibong riles sa breadboard.
Ang E ay kumakatawan sa Paganahin, na nagsasabi sa LCD kung aling mga pixel ang maaaring paganahin (i-on) o huwag paganahin (patayin). Ikonekta ang pin na ito sa Arduino pin 11.
Ang D4, D5, D6, at D7 ay mga Display pin na kinokontrol ang mga character at titik na ipinapakita. Ikonekta ang mga ito sa mga pin ng Arduino na 5, 4, 3, at 2, ayon sa pagkakabanggit.
Ang Pin A, kung minsan ay may label na LED, ay ang LED anode para sa backlight. Ikonekta ito sa positibong power rail gamit ang isang wire o gamit ang resistor na 220-ohm. Ang risistor ay mas mahusay para sa mas matagal na paggamit dahil pinapanatili nito ang LCD, ngunit kung ang aparato ay hindi gagamitin araw at gabi, hindi mo na kailangan ang risistor.
Ang Pin K, minsan din (nakalilito) na may label na LED, ay ang LED ground pin. Ikonekta ito sa ground power rail.
Hakbang 4: Pag-upload ng Code: How-To
I-plug ang iyong Arduino sa USB ng iyong computer. I-upload ang sumusunod na code gamit ang programmer ng Arduino IDE.
# isama
Const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
walang bisa ang pag-setup () {
// set up ang bilang ng mga haligi at hilera ng LCD: lcd.begin (16, 2); // I-print ang isang mensahe sa LCD. lcd.print ("Hertz Pitch:!"); pagkaantala (1000); void loop () {// play e4 delay (600); // pause for 0.6 segundo tone (10, 329.63, 300); // play e to the buzzer at pin 10, last for.3 secs lcd.print (" 329.63 "); // magpakita ng isang mensahe sa LCD" 329.63"
antala (350); // pagkaantala ng.35 segundo
lcd.clear (); // malinaw na LCD at i-reset para sa susunod na mensahe // play d4 # tone (10, 311.13, 300); lcd.print ("311.13"); pagkaantala (350); lcd.clear (); // play e4 tone (10, 329.63, 300); lcd.print ("329.63"); pagkaantala (350); lcd.clear (); // play d4 # tone (10, 311.13, 300); lcd.print ("311.13"); pagkaantala (350); lcd.clear (); // play e4 tone (10, 329.63, 300); lcd.print ("329.63"); pagkaantala (350); lcd.clear (); // play b3 tone (10, 246.94, 300); lcd.print ("246.94"); pagkaantala (400); lcd.clear (); // play d4 tone (10, 293.66, 300); lcd.print ("293.66"); pagkaantala (400); lcd.clear (); // play c4 tone (10, 261.63, 300); lcd.print ("261.63"); pagkaantala (400); lcd.clear (); // play a3 tone (10, 220, 900); lcd.print ("220.0"); pagkaantala (1000); lcd.clear (); // line60 // helpsave // avrdude.failure.eeprom // play d3 tone (10, 146.83, 300); lcd.print ("146.63"); pagkaantala (350); lcd.clear (); // play f3 tone (10, 174.61, 300); lcd.print ("174.61"); pagkaantala (400); lcd.clear (); // play a3 tone (10, 220, 300); lcd.print ("220"); pagkaantala (400); lcd.clear (); // play b3 tone (10, 246.94, 900); lcd.print ("246.94"); pagkaantala (1000); lcd.clear ();
// play e3
tono (10, 164.81, 300); lcd.print ("164.81"); pagkaantala (400); lcd.clear (); // play g3 # tone (10, 207.65, 300); lcd.print ("207.65"); pagkaantala (400); lcd.clear (); // play b3 tone (10, 246.94, 300); lcd.print ("246.94"); pagkaantala (400); lcd.clear (); // play c4 tone (10, 261.63, 900); lcd.print ("261.63"); pagkaantala (1000); lcd.clear (); // play e tone (10, 164.81, 300); lcd.print ("164.81"); pagkaantala (400); lcd.clear (); // play e4 tone (10, 329.63, 300); lcd.print ("329.63"); pagkaantala (400); lcd.clear (); // play d4 # tone (10, 311.13, 300); lcd.print ("311.13"); pagkaantala (400); lcd.clear (); // play e4 tone (10, 329.63, 300); lcd.print ("329.63"); pagkaantala (400); lcd.clear (); // play d4 # tone (10, 311.13, 300); lcd.print ("311.13"); pagkaantala (400); lcd.clear (); // play e4 tone (10, 329.63, 300); lcd.print ("329.63"); pagkaantala (400); lcd.clear (); // play b3 tone (10, 246.94, 300); lcd.print ("246.94"); pagkaantala (400); lcd.clear (); // play d4 tone (10, 293.66, 300); lcd.print ("293.66"); pagkaantala (400); lcd.clear (); // play c4 tone (10, 261.63, 300); lcd.print ("261.63"); pagkaantala (400); lcd.clear (); // play a3 tone (10, 220, 900); lcd.print ("220.0"); pagkaantala (1000); lcd.clear (); // play d3 tone (10, 146.83, 300); lcd.print ("146.83"); pagkaantala (400); lcd.clear (); // play f3 tone (10, 174.61, 300); // eeprom 20--6 yesno, flash 65--0 noyes lcd.print ("174.61"); pagkaantala (400); lcd.clear (); // play a3 tone (10, 220, 300); lcd.print ("220.0"); pagkaantala (400); lcd.clear (); // play b3 tone (10, 246.94, 900); lcd.print ("246.94"); pagkaantala (1000); lcd.clear (); // play f3 tone (10, 174.61, 300); lcd.print ("174.61"); pagkaantala (400); lcd.clear (); // play c4 tone (10, 261.63, 300); lcd.print ("261.63"); pagkaantala (400); lcd.clear (); // play b3 tone (10, 246.94, 300); lcd.print ("246.94"); pagkaantala (400); lcd.clear (); // play a3 tone (10, 220, 900); lcd.print ("220.0"); pagkaantala (1000); lcd.clear (); // play b3 tone (10, 246.94, 300); lcd.print ("246.94"); pagkaantala (400); lcd.clear (); // play c4 tone (10, 261.63, 300); lcd.print ("261.63"); pagkaantala (400); lcd.clear (); // play d4 tone (10, 293.66, 300); lcd.print ("293.66"); pagkaantala (400); lcd.clear (); // play e4 tone (10, 329.63, 900); lcd.print ("329.63"); pagkaantala (1000); lcd.clear (); // play g3 tone (10, 196, 300); lcd.print ("196.0"); pagkaantala (400); lcd.clear (); // play f4 tone (10, 349.23, 300); lcd.print ("349.23"); pagkaantala (400); lcd.clear (); // play e4 tone (10, 329.23, 300); lcd.print ("329.23"); pagkaantala (400); lcd.clear (); // play d4 tone (10, 293.63, 900); lcd.print ("293.63"); pagkaantala (1000); lcd.clear (); // play e3 tone (10, 164.81, 300); lcd.print ("164.81"); pagkaantala (400); lcd.clear (); // play e4 tone (10, 329.63, 300); lcd.print ("329.63"); pagkaantala (400); lcd.clear (); // play d4 tone (10, 293.63, 300); lcd.print ("293.63"); pagkaantala (400); lcd.clear (); // play c4 tone (10, 261.63, 900); lcd.print ("261.63"); pagkaantala (1000); lcd.clear (); // play d3 tone (10, 146.83, 300); lcd.print ("146.83"); pagkaantala (400); lcd.clear (); // play d4 tone (10, 293.63, 300); lcd.print ("293.63"); pagkaantala (400); lcd.clear (); // play c4 tone (10, 261.63, 300); lcd.print ("261.63"); pagkaantala (400); lcd.clear (); // play b3 tone (10, 246.94, 900); lcd.print ("246.94"); pagkaantala (1000); lcd.clear (); // play e4 tone (10, 329.63, 300); lcd.print ("329.63"); pagkaantala (400); lcd.clear (); // play d4 # tone (10, 311.13, 300); lcd.print ("311.13"); pagkaantala (350); lcd.clear (); // play e4 tone (10, 329.63, 300); lcd.print ("329.63"); pagkaantala (350); lcd.clear (); // play d4 # tone (10, 311.13, 300); lcd.print ("311.13"); pagkaantala (350); lcd.clear (); // play e4 tone (10, 329.63, 300); lcd.print ("329.63"); pagkaantala (350); lcd.clear (); // play b3 tone (10, 246.94, 300); lcd.print ("246.94"); pagkaantala (400); lcd.clear (); // play d4 tone (10, 293.66, 300); lcd.print ("293.66"); pagkaantala (400); lcd.clear (); // play c4 tone (10, 261.63, 300); lcd.print ("261.63"); pagkaantala (400); lcd.clear (); // play a3 tone (10, 220, 900); lcd.print ("220.0"); pagkaantala (1000); lcd.clear (); // play d3 tone (10, 146.83, 300); lcd.print ("146.83"); pagkaantala (350); lcd.clear (); // play f3 tone (10, 174.61, 300); lcd.print ("174.61"); pagkaantala (400); lcd.clear (); // play a3 tone (10, 220, 300); lcd.print ("220.0"); pagkaantala (400); // play b3 lcd.clear (); tono (10, 246.94, 900); lcd.print ("246.94"); pagkaantala (1000); lcd.clear (); // play e3 tone (10, 164.81, 300); lcd.print ("164.81"); pagkaantala (400); lcd.clear (); // play g # 3 tone (10, 207.65, 300); lcd.print ("207.65"); pagkaantala (400); lcd.clear (); // play b3 tone (10, 246.94, 300); lcd.print ("246.94"); pagkaantala (400); lcd.clear (); // play c4 tone (10, 261.63, 900); lcd.print ("261.63"); pagkaantala (1000); pagkaantala (300); lcd.clear (); // play e3 tone (10, 164.81, 300); lcd.print ("164.81"); pagkaantala (400); lcd.clear (); // play e4 tone (10, 329.63, 300); lcd.print ("329.63"); pagkaantala (400); lcd.clear (); // play d4 # tone (10, 311.13, 300); lcd.print ("311.13"); pagkaantala (400); lcd.clear (); // play e4 tone (10, 329.63, 300); lcd.print ("329.63"); pagkaantala (400); lcd.clear (); // play d4 # tone (10, 311.13, 300); lcd.print ("311.13"); pagkaantala (400); lcd.clear (); // play e4 tone (10, 329.63, 300); lcd.print ("329.63"); pagkaantala (400); lcd.clear (); // play b3 tone (10, 246.94, 300); lcd.print ("246.94"); pagkaantala (400); lcd.clear (); // play d4 tone (10, 293.66, 300); lcd.print ("293.66"); pagkaantala (400); lcd.clear (); // play c4 tone (10, 261.63, 300); lcd.print ("261.63"); pagkaantala (400); lcd.clear (); // play a3 tone (10, 220, 900); lcd.print ("220.0"); pagkaantala (1000); lcd.clear (); // play d3 tone (10, 146.83, 300); lcd.print ("146.83"); pagkaantala (400); lcd.clear (); // play f3 tone (10, 174.61, 300); lcd.print ("174.61"); pagkaantala (400); lcd.clear (); // play a3 tone (10, 220, 300); lcd.print ("220.0"); pagkaantala (400); lcd.clear (); // play b3 tone (10, 246.94, 900); lcd.print ("246.94"); pagkaantala (1000); lcd.clear (); // play f3 tone (10, 174.61, 300); lcd.print ("174.61"); pagkaantala (400); lcd.clear (); // play c4 tone (10, 261.63, 300); lcd.print ("261.63"); pagkaantala (400); lcd.clear (); // play b3 tone (10, 246.94, 300); lcd.print ("246.94"); pagkaantala (400); lcd.clear (); // play a3 tone (10, 220, 900); lcd.print ("220.0"); pagkaantala (1000); lcd.clear (); }
Hakbang 5: Pag-upload ng Code: Ano ang Ibig Sabihin ng Lahat ng Iyon?
Tukuyin natin ang ilang mga pagpapaandar sa Ingles, upang maunawaan mo ang code.
tono (x, y, z); = maglaro ng isang tono na may isang pitch ng y Hertz, sa isang buzzer sa pin x, para sa z milliseconds.
lcd.print ("XYZ"); = i-print ang isang mensahe na may mga character na XYZ sa LCD screen. (hal. ipakita ang Hertz pitch)
antala (x); = i-pause para sa x milliseconds.
Const int X = Y = magtakda ng isang pare-pareho na variable X upang i-pin ang Y, at gamitin ang alinman sa X o Y upang magtalaga ng mga gawain sa aparato.
lcd.clear (); = i-clear ang LCD screen at i-reset para sa isang bagong display
pinMode (X, OUTPUT); = itakda ang pin X para sa output mode
Kapag naintindihan mo ang lahat ng mga pagpapaandar na ito, madali mong mapapalitan ang mga variable sa data na iyong kinokolekta kapag isinasalin ang isang kanta, at maaari mo nang mai-code ang iyong sariling kanta!
Hakbang 6: Tapos !!
Maaari kang magkaroon ng isang Arduino na naglalaro ng Fur Elise at ipinapakita ang mga halaga ng tala sa Hertz, o gumawa ka ng isang Arduino na tumutugtog ng himig ng kanta na iyong pinili, at nagpapakita ng teksto na nais mong ipakita. Salamat sa pagbisita sa tutorial na ito, at inaasahan ko sa iyo ang proyektong ito sa Arduino.
Inirerekumendang:
Paano Mag-Digitize ng Mga Slide at Negatibo sa Pelikula Sa isang DSLR: 12 Hakbang (na may Mga Larawan)
Paano Mag-Digitize ng Mga Slide at Negatibo sa Pelikula Sa isang DSLR: Isang maraming nalalaman at matatag na pag-set up para sa pag-digitize ng mga slide at negatibo sa isang DSLR o anumang camera na may isang pagpipilian na macro. Ang itinuturo na ito ay isang pag-update ng Paano i-digitize ang mga negatibong 35mm (na-upload noong Hulyo 2011) na may maraming mga pagpapabuti upang mapalawak ang
Money Heist BELLA CIAO Song sa Arduino Uno: 9 Mga Hakbang (na may Mga Larawan)
Money Heist BELLA CIAO Song sa Arduino Uno: Sa tutorial na ito, ipapakita ko sa iyo kung paano mo ma-play ang Money Heist Song Bella Ciao sa anumang Arduino sa tulong ng Piezoelectric buzzer. Ang cool na proyekto na ito ay nakatuon sa lahat ng mga tagahanga ng Money Heist sa buong mundo. Kaya, magsimula na tayo
Arduino Uno Tutorial # 2 - ang Buzzer Song: 4 Hakbang (na may Mga Larawan)
Arduino Uno Tutorial # 2 - ang Buzzer Song: Kamusta sa lahat, dahil nakita ko na ang aking unang tutorial ay naging isang mahusay na pagsusugal, napagpasyahan kong gagawa ako ng isang serye ng mga Arduino Uno tutorial para sa iyo
Zelda Song Player: 4 Hakbang
Zelda Song Player: Sa Instructable na ito, ipapakita ko sa iyo kung paano tipunin ang isang aparato na nakabatay sa Arduino Uno-based upang muling likhain ang isang Nintendo 64 controller upang patugtugin ang unang anim na kanta mula sa Legend of Zelda: Ocarina of Time. Maaari itong tumugtog ng Lullaby ni Zelda, Kanta ni Saria, ang Kanta ng
Pag-angkop sa isang Video Doorbell sa isang Digital Song Chime: 5 Hakbang
Pag-angkop sa isang Video Doorbell sa isang Digital Song Chime: Mahaba ang kwento, sinabi sa akin ng Best Buy na hindi ko mai-install ang Simplisafe Doorbell na may isang tunog ng tugtog ng tugtog ng kanta. Ang pagbabasa ng daan-daang mga post ay nagsabing hindi ito maaaring gawin. Sinabi ni Simplisafe na hindi maaaring magawa ngunit magbigay ng kit pa rin. Ang konektor kit ay para sa isang bar st