Kazalo:
- 1. korak: Pretvorite glasbeno glasbo v digitalne opombe: vrednosti zamude
- 2. korak: Pretvorite glasbo v digitalne zapiske: Hertz vrednosti
- 3. korak: Oblikovanje vezja
- 4. korak: Nalaganje kode: kako
- 5. korak: Nalaganje kode: kaj vse to pomeni?
- 6. korak: Končano !!
Video: Digitalizacija pesmi z Arduinom: 6 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
Želel sem ustvariti projekt, ki bi združil dva moja najljubša predmeta: znanost in glasbo. Pomislil sem na vse načine, kako lahko združim ti dve domeni, in mislil sem, da bi bilo zanimivo narediti Arduino, da igra Fur Elise, medtem ko prikazuje višino note v Hertzu. Zdaj pa začnimo graditi!
Potrebovali boste en Arduino Uno ali Mega, veliko mostičnih kablov, piezo zvočni signal, ploščo, LCD zaslon velikosti 16*2 z vsemi nameščenimi zatiči brisalcev in 10k potenciometer (morda jih boste slišali tudi kot potmetre)). Najbolje je, da vse te zaloge sestavite, preden začnemo gradnjo.
1. korak: Pretvorite glasbeno glasbo v digitalne opombe: vrednosti zamude
Obstajata dva koraka za digitalno prepis note iz partiture v njen digitalni ekvivalent. Najprej bomo morali v milisekundah zapisati čas, ko zapisek traja. Za to nalogo sem uporabil grafikon, ki sem ga našel na spletu. Glede na to, ali je nota polovična, četrtinska, osma itd., Sem dolžino note prepisal v milisekunde. Te številke lahko vidite v moji kodi kot delay (); funkcijo in število v oklepajih bo vrednost zakasnitve v milisekundah, ki smo jo določili v tem koraku.
2. korak: Pretvorite glasbo v digitalne zapiske: Hertz vrednosti
Preden začnem ta korak, naj opredelim nekaj tehničnih izrazov. "Vrednost" note se lahko zamenljivo uporablja z besedami "višina", "vrednost" in "nota". Zdaj morate prebrati vsako noto pesmi iz partiture. Nato boste morali vsako noto prevesti v Hertz z uporabo glasbene tabele Hertz, ki jo lahko preprosto najdete na spletu. Ne pozabite si, da je srednji C na mizi naveden kot C4, oktava višja pa je C5 itd. Ko bodo vse zapiske prepisane v Hertz, boste vrednosti vnesli v funkcijski ton (x, y, z); kjer je X številka pin ali const int, način definiranja spremenljivk, ki ga bom razložil kasneje. Y bo vrednost Herca, ki ste jo pravkar prepisali, Z pa trajanje note v milisekundah, zaokroženo na najbližjo stotino. Zamuda(); vrednosti bodo trajanje zapiska. Zdaj pa oblikujmo vezje, ki lahko predvaja glasbo.
3. korak: Oblikovanje vezja
Zdaj, ko smo vse zapiske prevedli v digitalne vrednosti, ki jih računalnik lahko razume, je čas za izgradnjo vezja. Začnite tako, da vzamete ploščico in LCD zaslon s prvim zatičem (GND) postavite v vrstico 14. Zvočnik postavite kamor koli želite, poleg njega pa potenciometer. Cilj je vse poravnati in zmanjšati nered žic. Arduino postavite poleg mize in priključite 5v zatič na pozitivno vodilo plošče, ozemljitveni zatič pa na negativno tirnico. Zdaj smo pripravljeni povezati skakalce med Arduinom in komponentami.
Zdaj pa se pogovorimo o zatičih na LCD -ju in o tem, kako jih povezati.
GND pomeni ozemljitev, to je negativna žica v enosmernem toku. Priključite GND na negativno tirnico plošče.
VCC pomeni napetost na skupnem zbiralniku in tu priključite 5-voltni vir napajanja (pozitivni vodnik).
VO pomeni Contrast, priklopite ga na srednji zatič potenciometra. Levi zatič potenciometra priključite na pozitivno vodilo, desni pa na ozemljitveni vodnik.
RS pomeni Register Select, ki ga Arduino uporablja za prikaz zaslona, kje naj shrani podatke. Priključite ta pin na pin 12 na Arduinu.
RW pomeni pin za branje/pisanje, s katerim Arduino preveri, ali zaslon prikazuje tisto, kar ste programirali. Ta pin priklopite na negativno vodilo na plošči.
E pomeni Omogoči, ki LCD -ju pove, katere slikovne pike naj omogoči (vklopi) ali onemogoči (izklopi). Priključite ta pin na Arduino pin 11.
D4, D5, D6 in D7 so prikazni zatiči, ki nadzorujejo prikazane znake in črke. Povežite jih z zatiči Arduino 5, 4, 3 in 2.
Pin A, včasih označen kot LED, je LED anoda za osvetlitev ozadja. To povežite s pozitivnim vodilom z žico ali z 220-ohmskim uporom. Upor je boljši za daljšo uporabo, saj prihrani LCD, če pa naprave ne boste uporabljali podnevi in ponoči, upora ne potrebujete.
Pin K, včasih tudi (zmedeno) označen kot LED, je ozemljitveni zatič LED. Priključite ga na ozemljitveno tirnico.
4. korak: Nalaganje kode: kako
Arduino priključite na USB računalnika. Naložite naslednjo kodo s programerjem Arduino IDE.
#vključi
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LCD tekoči kristal (rs, en, d4, d5, d6, d7);
void setup () {
// nastavimo število stolpcev in vrstic LCD -ja: lcd.begin (16, 2); // Natisnite sporočilo na LCD. lcd.print ("Hertz Pitch:!"); zamuda (1000); void loop () {// predvajanje e4 zakasnitve (600); // zaustavitev za 0,6 sekunde ton (10, 329,63, 300); // predvajanje e do brenčalnika na pin 10, zadnja 0,3 sekunde lcd.print (" 329,63 "); // prikaže sporočilo na LCD -ju" 329,63"
zakasnitev (350); // zakasnitev 0,35 sekunde
lcd.clear (); // počistite LCD in ponastavite za naslednje sporočilo // predvajajte d4# ton (10, 311.13, 300); lcd.print ("311.13"); zamuda (350); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (350); lcd.clear (); // predvajaj d4# ton (10, 311.13, 300); lcd.print ("311.13"); zamuda (350); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (350); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton d4 (10, 293.66, 300); lcd.print ("293.66"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 300); lcd.print ("261,63"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 900); lcd.print ("220.0"); zamuda (1000); lcd.clear (); // line60 // helpave // avrdude.failure.eeprom // predvaja d3 ton (10, 146.83, 300); lcd.print ("146,63"); zamuda (350); lcd.clear (); // predvajaj ton f3 (10, 174.61, 300); lcd.print ("174,61"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 300); lcd.print ("220"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 900); lcd.print ("246,94"); zamuda (1000); lcd.clear ();
// predvajaj e3
ton (10, 164,81, 300); lcd.print ("164,81"); zamuda (400); lcd.clear (); // predvajaj ton g3# (10, 207.65, 300); lcd.print ("207.65"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 900); lcd.print ("261,63"); zamuda (1000); lcd.clear (); // predvajaj e ton (10, 164.81, 300); lcd.print ("164,81"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (400); lcd.clear (); // predvajaj d4# ton (10, 311.13, 300); lcd.print ("311.13"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (400); lcd.clear (); // predvajaj d4# ton (10, 311.13, 300); lcd.print ("311.13"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton d4 (10, 293.66, 300); lcd.print ("293.66"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 300); lcd.print ("261,63"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 900); lcd.print ("220.0"); zamuda (1000); lcd.clear (); // predvajaj ton d3 (10, 146.83, 300); lcd.print ("146,83"); zamuda (400); lcd.clear (); // predvajaj ton f3 (10, 174.61, 300); // eeprom 20–6 yesno, bliskavica 65–0 noyes lcd.print ("174,61"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 300); lcd.print ("220.0"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 900); lcd.print ("246,94"); zamuda (1000); lcd.clear (); // predvajaj ton f3 (10, 174.61, 300); lcd.print ("174,61"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 300); lcd.print ("261,63"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 900); lcd.print ("220,0"); zamuda (1000); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 300); lcd.print ("261,63"); zamuda (400); lcd.clear (); // predvajaj ton d4 (10, 293.66, 300); lcd.print ("293.66"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.63, 900); lcd.print ("329,63"); zamuda (1000); lcd.clear (); // predvajaj ton g3 (10, 196, 300); lcd.print ("196,0"); zamuda (400); lcd.clear (); // predvajaj ton f4 (10, 349.23, 300); lcd.print ("349.23"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.23, 300); lcd.print ("329,23"); zamuda (400); lcd.clear (); // predvajaj ton d4 (10, 293.63, 900); lcd.print ("293.63"); zamuda (1000); lcd.clear (); // predvajaj ton e3 (10, 164.81, 300); lcd.print ("164,81"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (400); lcd.clear (); // predvajaj ton d4 (10, 293.63, 300); lcd.print ("293.63"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 900); lcd.print ("261,63"); zamuda (1000); lcd.clear (); // predvajaj ton d3 (10, 146.83, 300); lcd.print ("146,83"); zamuda (400); lcd.clear (); // predvajaj ton d4 (10, 293.63, 300); lcd.print ("293.63"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 300); lcd.print ("261,63"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 900); lcd.print ("246,94"); zamuda (1000); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (400); lcd.clear (); // predvajaj d4# ton (10, 311.13, 300); lcd.print ("311.13"); zamuda (350); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (350); lcd.clear (); // predvajaj d4# ton (10, 311.13, 300); lcd.print ("311.13"); zamuda (350); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (350); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton d4 (10, 293.66, 300); lcd.print ("293.66"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 300); lcd.print ("261,63"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 900); lcd.print ("220.0"); zamuda (1000); lcd.clear (); // predvajaj ton d3 (10, 146.83, 300); lcd.print ("146,83"); zamuda (350); lcd.clear (); // predvajaj ton f3 (10, 174.61, 300); lcd.print ("174,61"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 300); lcd.print ("220.0"); zamuda (400); // predvajaj b3 lcd.clear (); ton (10, 246,94, 900); lcd.print ("246,94"); zamuda (1000); lcd.clear (); // predvajaj ton e3 (10, 164.81, 300); lcd.print ("164,81"); zamuda (400); lcd.clear (); // predvajaj ton#3 (10, 207.65, 300); lcd.print ("207.65"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 900); lcd.print ("261,63"); zamuda (1000); zamuda (300); lcd.clear (); // predvajaj ton e3 (10, 164.81, 300); lcd.print ("164,81"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (400); lcd.clear (); // predvajaj d4# ton (10, 311.13, 300); lcd.print ("311.13"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (400); lcd.clear (); // predvajaj d4# ton (10, 311.13, 300); lcd.print ("311.13"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton d4 (10, 293.66, 300); lcd.print ("293.66"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 300); lcd.print ("261,63"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 900); lcd.print ("220.0"); zamuda (1000); lcd.clear (); // predvajaj ton d3 (10, 146.83, 300); lcd.print ("146,83"); zamuda (400); lcd.clear (); // predvajaj ton f3 (10, 174.61, 300); lcd.print ("174,61"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 300); lcd.print ("220.0"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 900); lcd.print ("246,94"); zamuda (1000); lcd.clear (); // predvajaj ton f3 (10, 174.61, 300); lcd.print ("174,61"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 300); lcd.print ("261,63"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 900); lcd.print ("220.0"); zamuda (1000); lcd.clear (); }
5. korak: Nalaganje kode: kaj vse to pomeni?
Določimo nekatere funkcije v angleščini, da boste razumeli kodo.
ton (x, y, z); = predvajajte ton z višino y Hertz, do brenčal na pin x, za z milisekunde.
lcd.print ("XYZ"); = natisnite sporočilo z znaki XYZ na LCD zaslon. (na primer prikaz Hertz smole)
zamuda (x); = pavza za x milisekunde.
const int X = Y = nastavite konstantno spremenljivko X na pin Y in uporabite X ali Y za dodelitev nalog napravi.
lcd.clear (); = počistite LCD zaslon in ponastavite na nov zaslon
pinMode (X, OUTPUT); = nastavite pin X za način izhoda
Ko razumete vse te funkcije, lahko spremenljivke enostavno zamenjate s podatki, ki jih zberete pri prevajanju pesmi, nato pa kodirate svojo pesem!
6. korak: Končano !!
Ali imate Arduino, ki igra Fur Elise in prikazuje notne vrednosti v Hertzu, ali pa ste naredili Arduino, ki predvaja melodijo pesmi, ki ste jo izbrali, in prikazuje besedilo, ki ste ga želeli prikazati. Hvala, ker ste obiskali to vadnico, in upam, da vam bom predstavil ta projekt na Arduinu.
Priporočena:
Led utripajoča Hack-O-Lantern, ki sledi pesmi: 6 korakov
Led utripajoča Hack-O-Lantern, ki sledi pesmi: naredite jack-o-lantern, ki predvaja in utripa večbarvne LED-je za najljubšo pesem Halloween
Digitalizacija vašega hi-fi sistema: 6 korakov (s slikami)
Digitalizacija vašega hi-fi sistema: V tem navodilu bi vam rad pokazal, kako sem digitaliziral svoj analogni hi-fi sistem in s tem realiziral spletni radio, dostop do glasbene zbirke, shranjene na mojem NAS-u itd. Izvajanje temelji predvsem na Raspberry Pi, Hifiberry HAT in dotik
Ustvarjanje pesmi z Arduinom in enosmernim motorjem: 6 korakov
Ustvarjanje pesmi z Arduinom in enosmernim motorjem: Pred dnevi sem med listanjem nekaj člankov o Arduinu opazil zanimiv projekt, ki je z uporabo koračnih motorjev, ki jih upravlja Arduino, ustvarjal kratke melodije. Arduino je za zagon koračnega motorja uporabil pin PWM (Pulse Width Modulation)
Predvajajte pesmi z Arduinom z uporabo ADC -ja na PWM na Flyback transformatorju ali zvočniku: 4 koraki
Predvajajte pesmi z Arduinom z uporabo ADC -ja za PWM na Flyback Transformerju ali zvočniku: Pozdravljeni fantje, to je drugi del mojega drugega navodila (to je bilo zelo težko). V bistvu sem v tem projektu uporabil ADC in TIMERS na svojem Arduinu za Pretvorite avdio signal v signal PWM. To je veliko lažje kot moj prejšnji Instructa
Predvajanje pesmi (MP3) z Arduinom z uporabo PWM na zvočniku ali povratnem transformatorju: 6 korakov (s slikami)
Predvajajte pesmi (MP3) z Arduinom z uporabo PWM na zvočniku ali Flyback Transformerju: Pozdravljeni fantje, to je moj prvi pouk, upam, da vam bo všeč !! V bistvu sem v tem projektu uporabil serijsko komunikacijo med mojim Arduinom in prenosnim računalnikom, za prenos glasbenih podatkov iz prenosnega računalnika v Arduino. In z uporabo Arduino TIMERS t