Sadržaj:
- Korak 1: Pretvorite notni zapis u digitalne note: vrijednosti kašnjenja
- Korak 2: Pretvorite muzičku partituru u digitalne note: Hertz vrijednosti
- Korak 3: Dizajn kola
- Korak 4: Prijenos koda: How-To
- Korak 5: Učitavanje koda: Šta sve to znači?
- Korak 6: Završeno !
Video: Digitalizacija pjesme s Arduinom: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Htela sam da napravim projekat koji je kombinovao dva moja omiljena predmeta: nauku i muziku. Razmišljao sam o svim načinima na koje mogu kombinirati ova dva domena, i mislio sam da bi bilo zanimljivo napraviti Arduino da igra Fur Elise dok prikazuje visinu note u Hertzu. A sada počnimo graditi!
Trebat će vam jedan Arduino Uno ili Mega, puno kratkospojnih kabela, Piezo zujalica, matična ploča, LCD ekran veličine 16*2 sa svim iglama brisača i potenciometar od 10 k (možete ih čuti i kao potmetre)). Najbolje je prikupiti sve ove zalihe prije nego započnemo izgradnju.
Korak 1: Pretvorite notni zapis u digitalne note: vrijednosti kašnjenja
Postoje dva koraka za digitalno prepisivanje note iz partiture u njen digitalni ekvivalent. Prvo ćemo morati zapisati vrijeme trajanja bilješke u milisekundama. Za ovaj sam zadatak upotrijebio grafikon koji je pronađen na internetu. Na osnovu toga da li je nota pola note, četvrtina, osma nota itd., Prepisao sam dužinu note u milisekunde. Ove brojeve možete vidjeti u mom kodu kao delay (); funkcija i broj unutar zagrada bit će vrijednost kašnjenja u milisekundama koju smo odredili u ovom koraku.
Korak 2: Pretvorite muzičku partituru u digitalne note: Hertz vrijednosti
Prije nego započnem ovaj korak, dopustite mi da definiram neke tehničke pojmove. "Vrijednost" note može se naizmjenično koristiti s riječima "visina tona", "vrijednost" i "nota". Sada morate pročitati svaku notu pjesme iz partiture. Zatim ćete morati prevesti svaku notu u Hertz koristeći muziku na Hertz stolu, koju možete lako pronaći na internetu. Treba zapamtiti da je srednji C naveden na tablici kao C4, a za oktavu veći je C5 itd. Nakon što se sve bilješke prepišu u Hertz, vrijednosti ćete postaviti u ton funkcije (x, y, z); gdje je X pin broj ili const int, način definiranja varijabli koji ću objasniti kasnije. Y će biti vrijednost Herca koju ste upravo prepisali, a Z će biti trajanje note u milisekundama zaokruženo na najbližu stotinu. The delay (); vrijednosti će biti trajanje note. Sada, dizajnirajmo krug koji može reproducirati muziku.
Korak 3: Dizajn kola
Sada kada smo sve bilješke preveli u digitalne vrijednosti koje računar može razumjeti, vrijeme je za izgradnju kola. Počnite tako što ćete uzeti ploču za postavljanje osnove i postaviti LCD ekran s prvom iglom (GND) u red 14. Postavite zujalicu gdje god želite, a uz nju postavite potenciometar. Cilj je sve poravnati, kako bi se smanjilo nakupljanje žica. Postavite Arduino pored matične ploče i spojite iglu od 5 V na pozitivnu vodilicu ploče, a iglu za uzemljenje na negativnu vodilicu. Sada smo spremni za spajanje kratkospojnika između Arduina i komponenti.
Hajde sada razgovarati o pinovima na LCD -u i kako ih spojiti.
GND označava uzemljenje, ovo je negativna žica u istosmjernoj struji. Spojite GND na negativnu vodilicu matične ploče.
VCC označava napon na zajedničkom kolektoru, a tu spajate 5-voltni izvor napajanja (pozitivna razvodna traka).
VO označava kontrast, povežite ga sa srednjim pinom potenciometra. Priključite lijevi pin potenciometra na pozitivnu razvodnu žicu, a desnu iglu na uzemljenu razvodnu šinu.
RS znači Register Select, a to koristi Arduino za prikaz na ekranu gdje treba pohraniti podatke. Spojite ovaj pin na pin 12 na Arduinu.
RW je kratica za Read/Write pin, koju Arduino koristi za provjeru prikazuje li ekran ono što ste programirali za prikaz. Spojite ovaj pin na negativnu vodilicu na ploči.
E označava Enable, koji LCD -u govori koje piksele treba omogućiti (uključiti) ili onemogućiti (isključiti). Spojite ovaj pin na Arduino pin 11.
D4, D5, D6 i D7 su prikazivači koji kontroliraju prikazane znakove i slova. Spojite ih na Arduino pinove 5, 4, 3 i 2, respektivno.
Pin A, ponekad označen kao LED, je LED anoda za pozadinsko osvjetljenje. Spojite ga na pozitivni vod sa žicom ili s otpornikom od 220 ohma. Otpornik je bolji za dužu upotrebu jer štedi LCD, ali ako uređaj nećete koristiti danju i noću, otpornik vam ne treba.
Pin K, ponekad (zbunjujuće) označen sa LED, je LED uzemljenje LED. Spojite ovo na uzemljenje.
Korak 4: Prijenos koda: How-To
Uključite svoj Arduino u USB računar. Prenesite sljedeći kod pomoću Arduino IDE programatora.
#include
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
void setup () {
// postavljanje broja stupaca i redova LCD -a: lcd.begin (16, 2); // Odštampajte poruku na LCD ekranu. lcd.print ("Hertz korak:!"); kašnjenje (1000); void loop () {// reprodukcija e4 kašnjenja (600); // pauziranje za 0,6 sekundi ton (10, 329,63, 300); // reprodukcija e do zujalice na pinu 10, traje 0,3 sekunde lcd.print (" 329.63 "); // prikazuje poruku na LCD -u" 329.63"
delay (350); // kašnjenje 0,35 sekundi
lcd.clear (); // očisti LCD i resetira za sljedeću poruku // pusti d4# ton (10, 311.13, 300); lcd.print ("311.13"); kašnjenje (350); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329.63"); kašnjenje (350); lcd.clear (); // pusti d4# ton (10, 311.13, 300); lcd.print ("311.13"); kašnjenje (350); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329.63"); kašnjenje (350); lcd.clear (); // pusti b3 ton (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // pusti d4 ton (10, 293.66, 300); lcd.print ("293.66"); kašnjenje (400); lcd.clear (); // pusti c4 ton (10, 261.63, 300); lcd.print ("261.63"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 900); lcd.print ("220.0"); kašnjenje (1000); lcd.clear (); // line60 // helpave // avrdude.failure.eeprom // pusti d3 ton (10, 146.83, 300); lcd.print ("146.63"); kašnjenje (350); lcd.clear (); // reproduciranje f3 tona (10, 174.61, 300); lcd.print ("174.61"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 300); lcd.print ("220"); kašnjenje (400); lcd.clear (); // pusti b3 ton (10, 246.94, 900); lcd.print ("246.94"); kašnjenje (1000); lcd.clear ();
// pusti e3
ton (10, 164.81, 300); lcd.print ("164.81"); kašnjenje (400); lcd.clear (); // pusti g3# ton (10, 207.65, 300); lcd.print ("207.65"); kašnjenje (400); lcd.clear (); // pusti b3 ton (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // pusti c4 ton (10, 261.63, 900); lcd.print ("261.63"); kašnjenje (1000); lcd.clear (); // pusti e ton (10, 164.81, 300); lcd.print ("164.81"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329.63"); kašnjenje (400); lcd.clear (); // pusti d4# ton (10, 311.13, 300); lcd.print ("311.13"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329.63"); kašnjenje (400); lcd.clear (); // pusti d4# ton (10, 311.13, 300); lcd.print ("311.13"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329.63"); kašnjenje (400); lcd.clear (); // reproduciranje b3 tona (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // pusti d4 ton (10, 293.66, 300); lcd.print ("293.66"); kašnjenje (400); lcd.clear (); // pusti c4 ton (10, 261.63, 300); lcd.print ("261.63"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 900); lcd.print ("220.0"); kašnjenje (1000); lcd.clear (); // pusti d3 ton (10, 146.83, 300); lcd.print ("146.83"); kašnjenje (400); lcd.clear (); // reproduciranje f3 tona (10, 174.61, 300); // eeprom 20--6 yesno, flash 65-00 noyes lcd.print ("174.61"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 300); lcd.print ("220.0"); kašnjenje (400); lcd.clear (); // pusti b3 ton (10, 246.94, 900); lcd.print ("246.94"); kašnjenje (1000); lcd.clear (); // reproduciranje f3 tona (10, 174.61, 300); lcd.print ("174.61"); kašnjenje (400); lcd.clear (); // pusti c4 ton (10, 261.63, 300); lcd.print ("261.63"); kašnjenje (400); lcd.clear (); // reproduciranje b3 tona (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 900); lcd.print ("220.0"); kašnjenje (1000); lcd.clear (); // pusti b3 ton (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // pusti c4 ton (10, 261.63, 300); lcd.print ("261.63"); kašnjenje (400); lcd.clear (); // pusti d4 ton (10, 293.66, 300); lcd.print ("293.66"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.63, 900); lcd.print ("329.63"); kašnjenje (1000); lcd.clear (); // pusti g3 ton (10, 196, 300); lcd.print ("196.0"); kašnjenje (400); lcd.clear (); // reproduciranje f4 tona (10, 349.23, 300); lcd.print ("349.23"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.23, 300); lcd.print ("329.23"); kašnjenje (400); lcd.clear (); // pusti d4 ton (10, 293.63, 900); lcd.print ("293.63"); kašnjenje (1000); lcd.clear (); // pusti e3 ton (10, 164.81, 300); lcd.print ("164.81"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329.63"); kašnjenje (400); lcd.clear (); // pusti d4 ton (10, 293.63, 300); lcd.print ("293.63"); kašnjenje (400); lcd.clear (); // pusti c4 ton (10, 261.63, 900); lcd.print ("261.63"); kašnjenje (1000); lcd.clear (); // pusti d3 ton (10, 146.83, 300); lcd.print ("146.83"); kašnjenje (400); lcd.clear (); // pusti d4 ton (10, 293.63, 300); lcd.print ("293.63"); kašnjenje (400); lcd.clear (); // pusti c4 ton (10, 261.63, 300); lcd.print ("261.63"); kašnjenje (400); lcd.clear (); // pusti b3 ton (10, 246.94, 900); lcd.print ("246.94"); kašnjenje (1000); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329.63"); kašnjenje (400); lcd.clear (); // pusti d4# ton (10, 311.13, 300); lcd.print ("311.13"); kašnjenje (350); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329.63"); kašnjenje (350); lcd.clear (); // pusti d4# ton (10, 311.13, 300); lcd.print ("311.13"); kašnjenje (350); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329.63"); kašnjenje (350); lcd.clear (); // pusti b3 ton (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // pusti d4 ton (10, 293.66, 300); lcd.print ("293.66"); kašnjenje (400); lcd.clear (); // pusti c4 ton (10, 261.63, 300); lcd.print ("261.63"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 900); lcd.print ("220.0"); kašnjenje (1000); lcd.clear (); // pusti d3 ton (10, 146.83, 300); lcd.print ("146.83"); kašnjenje (350); lcd.clear (); // reproduciranje f3 tona (10, 174.61, 300); lcd.print ("174.61"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 300); lcd.print ("220.0"); kašnjenje (400); // pusti b3 lcd.clear (); ton (10, 246.94, 900); lcd.print ("246.94"); kašnjenje (1000); lcd.clear (); // pusti e3 ton (10, 164.81, 300); lcd.print ("164.81"); kašnjenje (400); lcd.clear (); // pusti g#3 ton (10, 207.65, 300); lcd.print ("207.65"); kašnjenje (400); lcd.clear (); // reproduciranje b3 tona (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // pusti c4 ton (10, 261.63, 900); lcd.print ("261.63"); kašnjenje (1000); kašnjenje (300); lcd.clear (); // pusti e3 ton (10, 164.81, 300); lcd.print ("164.81"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329.63"); kašnjenje (400); lcd.clear (); // pusti d4# ton (10, 311.13, 300); lcd.print ("311.13"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329.63"); kašnjenje (400); lcd.clear (); // pusti d4# ton (10, 311.13, 300); lcd.print ("311.13"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329.63"); kašnjenje (400); lcd.clear (); // pusti b3 ton (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // pusti d4 ton (10, 293.66, 300); lcd.print ("293.66"); kašnjenje (400); lcd.clear (); // pusti c4 ton (10, 261.63, 300); lcd.print ("261.63"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 900); lcd.print ("220.0"); kašnjenje (1000); lcd.clear (); // pusti d3 ton (10, 146.83, 300); lcd.print ("146.83"); kašnjenje (400); lcd.clear (); // reproduciranje f3 tona (10, 174.61, 300); lcd.print ("174.61"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 300); lcd.print ("220.0"); kašnjenje (400); lcd.clear (); // pusti b3 ton (10, 246.94, 900); lcd.print ("246.94"); kašnjenje (1000); lcd.clear (); // reproduciranje f3 tona (10, 174.61, 300); lcd.print ("174.61"); kašnjenje (400); lcd.clear (); // pusti c4 ton (10, 261.63, 300); lcd.print ("261.63"); kašnjenje (400); lcd.clear (); // pusti b3 ton (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 900); lcd.print ("220.0"); kašnjenje (1000); lcd.clear (); }
Korak 5: Učitavanje koda: Šta sve to znači?
Definirajmo neke funkcije na engleskom jeziku kako biste razumjeli kôd.
ton (x, y, z); = pusti ton sa visinom y Hertz, do zujalice na pinu x, za z milisekunde.
lcd.print ("XYZ"); = odštampajte poruku sa znakovima XYZ na LCD ekranu. (npr. prikazati Hertz visinu)
kašnjenje (x); = pauza x milisekundi.
const int X = Y = postavite konstantnu varijablu X na pin Y i koristite X ili Y za dodjeljivanje zadataka uređaju.
lcd.clear (); = očistite LCD ekran i resetujte novi ekran
pinMode (X, OUTPUT); = postavite pin X za način rada izlaza
Kada shvatite sve ove funkcije, možete jednostavno zamijeniti varijable podacima koje prikupljate pri prevođenju pjesme, a zatim možete kodirati svoju pjesmu!
Korak 6: Završeno !
Ili imate Arduino koji svira Fur Elise i prikazuje notne vrijednosti u Hertzima, ili ste napravili Arduino koji svira melodiju pjesme koju ste odabrali i prikazuje tekst koji želite prikazati. Hvala vam što ste posjetili ovaj vodič i nadam se ovom projektu na Arduinu.
Preporučuje se:
"Alexa, pošalji mi tekst pjesme _____": 9 koraka (sa slikama)
"Alexa, pošalji mi tekst pjesme _____": Slušate pjesmu koju želite otpjevati? Obično biste morali proći kroz naporan zadatak ukucavanja naziva pjesme u google, nakon čega slijedi riječ "tekst". Takođe biste obično napravili veliku količinu grešaka u kucanju, pogrešan klik
Prilagođavanje zvona na vratima zvuku digitalne pjesme: 5 koraka
Prilagođavanje video zvona na zvono digitalnoj pjesmi: Ukratko, Best Buy mi je rekao da ne mogu instalirati Simplisafe zvono sa melodijom zvona na pjesmi. Čitajući stotine postova rečeno je da se to ne može učiniti. Simplisafe je rekao da se to ne može učiniti, ali je svejedno isporučio komplet. Komplet konektora je za šipku
Reproducirajte pjesme s Arduinom koristeći ADC na PWM na Flyback transformatoru ili zvučniku: 4 koraka
Reproducirajte pjesme s Arduinom pomoću ADC -a za PWM na Flyback transformatoru ili zvučniku: Zdravo dečki, ovo je drugi dio mog drugog uputstva (što je bilo mnogo teško), U osnovi, u ovom projektu sam koristio ADC i TIMERS na svom Arduinu za Pretvorite audio signal u PWM signal. Ovo je mnogo lakše od mog prethodnog Instructa
Reproducirajte pjesme (MP3) s Arduinom pomoću PWM -a na zvučniku ili Flyback transformatoru: 6 koraka (sa slikama)
Reproducirajte pjesme (MP3) s Arduinom koristeći PWM na zvučniku ili Flyback transformatoru: Zdravo momci, ovo je moje prvo uputstvo, nadam se da će vam se svidjeti !! U osnovi, u ovom projektu sam koristio serijsku komunikaciju između mog Arduina i prijenosnog računala, za prenos muzičkih podataka sa mog laptopa na Arduino. A pomoću Arduino TIMERS t
Snimanje pjesme na IPad: 11 koraka (sa slikama)
Snimanje pjesme na iPad: Moja prijateljica je nedavno pitala kako može snimiti neke svoje pjesme samo sa gitarom i iPadom. Pitao sam je ima li još koji hardver za snimanje, poput mikrofona i interfejsa za snimanje. Nažalost, odgovor je bio ne, a ona nije