Talaan ng mga Nilalaman:

Digitize a Song With Arduino: 6 Hakbang
Digitize a Song With Arduino: 6 Hakbang

Video: Digitize a Song With Arduino: 6 Hakbang

Video: Digitize a Song With Arduino: 6 Hakbang
Video: 3 bagay lang pala ang gagawin para gumaling sa English ‖ English Everyday Habits ‖ Aubrey Bermudez 2024, Nobyembre
Anonim
Digitize a Song With Arduino
Digitize a Song With Arduino

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

I-convert ang Marka ng Musika Sa Mga Digital na Tala: Ipa-antala ang Mga Halaga
I-convert ang Marka ng Musika Sa Mga Digital na Tala: Ipa-antala ang 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

I-convert ang Marka ng Musika Sa Mga Digital na Tala: Hertz Values
I-convert ang Marka ng Musika Sa Mga Digital na Tala: Hertz Values

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

Disenyo ng Circuit
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 !!

Tapos !!!
Tapos !!!
Tapos !!!
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: