INHOUDSOPGAWE:
- Stap 1: Skakel die musiekmusiek om in digitale notas: vertragingswaardes
- Stap 2: Skakel die musiekmusiek om in digitale notas: Hertz -waardes
- Stap 3: Kringontwerp
- Stap 4: Oplaai van kode: hoe om dit te doen
- Stap 5: Kode -oplaai: wat beteken dit alles?
- Stap 6: klaar !
Video: Digitaliseer 'n liedjie met Arduino: 6 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
Ek wou 'n projek skep wat twee van my gunsteling vakke kombineer: wetenskap en musiek. Ek het gedink aan al die maniere waarop ek hierdie twee domeine kon kombineer, en ek het gedink dat dit interessant sou wees om 'n Arduino -toneelstuk Fur Elise te maak terwyl die toonhoogte van die noot in Hertz vertoon word. Nou, laat ons begin bou!
U benodig een Arduino Uno of Mega, baie springkabels, 'n Piezo -zoemer, 'n broodbord, 'n 16*2 LCD -skerm met alle wisserpenne en 'n 10k Potentiometer (u kan ook hoor dat hulle potmeters genoem word)). Dit is die beste om al hierdie voorrade bymekaar te kry voordat ons begin bou.
Stap 1: Skakel die musiekmusiek om in digitale notas: vertragingswaardes
Daar is twee stappe om 'n nota van die telling digitaal na die digitale ekwivalent daarvan oor te skryf. Eerstens moet ons die tyd skryf wat die noot in millisekondes duur. Ek het 'n grafiek gebruik wat vir hierdie taak aanlyn gevind is. Op grond daarvan of 'n noot 'n halwe noot, kwartnoot, agtste noot, ens. Was, het ek die nootlengte in millisekondes getranskribeer. U kan hierdie getalle in my kode sien as die vertraging (); funksie en die getal binne die hakies is die vertragingswaarde in millisekondes wat ons in hierdie stap bepaal het.
Stap 2: Skakel die musiekmusiek om in digitale notas: Hertz -waardes
Voordat ek met hierdie stap begin, moet ek 'n paar tegniese terme definieer. Die "waarde" van 'n noot kan uitruilbaar gebruik word met die woorde "toonhoogte", "waarde" en "noot". Nou moet u elke noot van die liedjie uit die partituur lees. U sal dan elke noot in Hertz moet vertaal met behulp van 'n musiek na Hertz -tafel, wat u maklik aanlyn kan vind. Een ding om te onthou, is dat middel C op die tafel as C4 gelys word, en 'n oktaaf hoër is C5, ensovoorts. Sodra hierdie notas almal in Hertz getranskribeer is, plaas u die waardes in die funksietoon (x, y, z); waar X die speldgetal of const int is, 'n manier om veranderlikes te definieer wat ek later sal verduidelik. Y is die Hertz -waarde wat u pas getranskribeer het, en Z is die duur van die noot in millisekondes afgerond tot die naaste honderdste. Die vertraging (); waardes sal die duur van die nota wees. Laat ons nou die kring ontwerp wat die musiek kan speel.
Stap 3: Kringontwerp
Noudat ons al die notas in digitale waardes vertaal het wat 'n rekenaar kan verstaan, is dit tyd om die kring te bou. Begin met 'n broodbord en plaas die LCD -skerm met die eerste pen (GND) in ry 14. Plaas die zoemer waar u wil, en plaas 'n potensiometer daaraan. Die doel is om alles in lyn te bring, om die rommel van die drade tot 'n minimum te beperk. Plaas die Arduino langs die broodbord en koppel die 5v -pen aan die positiewe reling van die broodbord en die grondpen aan die negatiewe reling. Nou is ons gereed om springers tussen die Arduino en die komponente aan te sluit.
Kom ons praat nou oor die penne op die LCD en hoe om dit te bedek.
GND staan vir grond, dit is die negatiewe draad in gelykstroom. Dra GND na die negatiewe spoor van die broodbord.
VCC staan vir Voltage at the Common Collector, en dit is waar u u 5 volt-kragbron (die positiewe kragrail) aansluit.
VO staan vir Contrast, dra dit na die middelste pen van die potensiometer. Koppel die linker pen van die potensiometer aan die positiewe kragrail en die regterpen aan die gronddraad.
RS staan vir Register Select, en dit word deur die Arduino gebruik om die skerm te vertel waar data gestoor moet word. Koppel hierdie pen aan pen 12 op die Arduino.
RW staan vir Read/Write pin, wat die Arduino gebruik om te kyk of die skerm wys wat jy dit geprogrammeer het. Koppel hierdie pen aan die negatiewe reling op die broodbord.
E staan vir Enable, wat die LCD aandui watter pixels om te aktiveer (aan) of uit te skakel (uit). Koppel hierdie pen aan die Arduino -pen 11.
D4, D5, D6 en D7 is skermpenne wat die karakters en letters wat vertoon word, beheer. Koppel hulle aan onderskeidelik Arduino -penne 5, 4, 3 en 2.
Speld A, soms aangedui as LED, is die LED -anode vir die agtergrond. Koppel dit met 'n draad of met 'n weerstand van 220 ohm aan die positiewe kragrail. Die weerstand is beter vir langer gebruik, aangesien dit die LCD spaar, maar as die toestel nie dag en nag gebruik gaan word nie, het u die weerstand nie nodig nie.
Pin K, soms ook (verwarrend) gemerk LED, is die LED -grondpen. Koppel dit aan die grondkragrail.
Stap 4: Oplaai van kode: hoe om dit te doen
Koppel jou Arduino aan op die rekenaar se USB. Laai die volgende kode op met die Arduino IDE -programmeerder.
#insluit
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
ongeldige opstelling () {
// stel die aantal kolomme en rye van die LCD op: lcd.begin (16, 2); // Druk 'n boodskap op die LCD. lcd.print ("Hertz Pitch:!"); vertraging (1000); leemte -lus () {// speel e4 -vertraging (600); // pouse vir 0,6 sekondes toon (10, 329,63, 300); // speel e met die gonser by pen 10, laaste vir.3 sekondes lcd.print (" 329.63 "); // 'n boodskap op LCD" 329.63 "vertoon
vertraging (350); // vertraging vir.35 sekondes
lcd.clear (); // maak die LCD skoon en herstel vir die volgende boodskap // speel d4# toon (10, 311.13, 300); lcd.print ("311.13"); vertraging (350); lcd.clear (); // speel e4 toon (10, 329.63, 300); lcd.print ("329,63"); vertraging (350); lcd.clear (); // speel d4# toon (10, 311.13, 300); lcd.print ("311.13"); vertraging (350); lcd.clear (); // speel e4 toon (10, 329.63, 300); lcd.print ("329,63"); vertraging (350); lcd.clear (); // speel b3 toon (10, 246,94, 300); lcd.print ("246,94"); vertraging (400); lcd.clear (); // speel d4 toon (10, 293,66, 300); lcd.print ("293,66"); vertraging (400); lcd.clear (); // speel c4 toon (10, 261.63, 300); lcd.print ("261,63"); vertraging (400); lcd.clear (); // speel a3 toon (10, 220, 900); lcd.print ("220.0"); vertraging (1000); lcd.clear (); // line60 // helptave // avrdude.failure.eeprom // speel d3 toon (10, 146,83, 300); lcd.print ("146,63"); vertraging (350); lcd.clear (); // speel f3 toon (10, 174,61, 300); lcd.print ("174,61"); vertraging (400); lcd.clear (); // speel a3 toon (10, 220, 300); lcd.print ("220"); vertraging (400); lcd.clear (); // speel b3 toon (10, 246,94, 900); lcd.print ("246,94"); vertraging (1000); lcd.clear ();
// speel e3
toon (10, 164,81, 300); lcd.print ("164,81"); vertraging (400); lcd.clear (); // speel g3# toon (10, 207,65, 300); lcd.print ("207,65"); vertraging (400); lcd.clear (); // speel b3 toon (10, 246,94, 300); lcd.print ("246,94"); vertraging (400); lcd.clear (); // speel c4 toon (10, 261.63, 900); lcd.print ("261,63"); vertraging (1000); lcd.clear (); // speel e toon (10, 164.81, 300); lcd.print ("164,81"); vertraging (400); lcd.clear (); // speel e4 toon (10, 329.63, 300); lcd.print ("329.63"); vertraging (400); lcd.clear (); // speel d4# toon (10, 311.13, 300); lcd.print ("311.13"); vertraging (400); lcd.clear (); // speel e4 toon (10, 329.63, 300); lcd.print ("329,63"); vertraging (400); lcd.clear (); // speel d4# toon (10, 311.13, 300); lcd.print ("311.13"); vertraging (400); lcd.clear (); // speel e4 toon (10, 329.63, 300); lcd.print ("329,63"); vertraging (400); lcd.clear (); // speel b3 toon (10, 246,94, 300); lcd.print ("246,94"); vertraging (400); lcd.clear (); // speel d4 toon (10, 293,66, 300); lcd.print ("293,66"); vertraging (400); lcd.clear (); // speel c4 toon (10, 261.63, 300); lcd.print ("261,63"); vertraging (400); lcd.clear (); // speel a3 toon (10, 220, 900); lcd.print ("220.0"); vertraging (1000); lcd.clear (); // speel d3 toon (10, 146,83, 300); lcd.print ("146,83"); vertraging (400); lcd.clear (); // speel f3 toon (10, 174,61, 300); // eeprom 20--6 yesno, flash 65--0 noyes lcd.print ("174.61"); vertraging (400); lcd.clear (); // speel a3 toon (10, 220, 300); lcd.print ("220.0"); vertraging (400); lcd.clear (); // speel b3 toon (10, 246,94, 900); lcd.print ("246,94"); vertraging (1000); lcd.clear (); // speel f3 toon (10, 174,61, 300); lcd.print ("174,61"); vertraging (400); lcd.clear (); // speel c4 toon (10, 261.63, 300); lcd.print ("261,63"); vertraging (400); lcd.clear (); // speel b3 toon (10, 246,94, 300); lcd.print ("246,94"); vertraging (400); lcd.clear (); // speel a3 toon (10, 220, 900); lcd.print ("220.0"); vertraging (1000); lcd.clear (); // speel b3 toon (10, 246,94, 300); lcd.print ("246,94"); vertraging (400); lcd.clear (); // speel c4 toon (10, 261.63, 300); lcd.print ("261,63"); vertraging (400); lcd.clear (); // speel d4 toon (10, 293,66, 300); lcd.print ("293,66"); vertraging (400); lcd.clear (); // speel e4 toon (10, 329.63, 900); lcd.print ("329,63"); vertraging (1000); lcd.clear (); // speel g3 toon (10, 196, 300); lcd.print ("196.0"); vertraging (400); lcd.clear (); // speel f4 toon (10, 349,23, 300); lcd.print ("349,23"); vertraging (400); lcd.clear (); // speel e4 toon (10, 329.23, 300); lcd.print ("329.23"); vertraging (400); lcd.clear (); // speel d4 toon (10, 293.63, 900); lcd.print ("293,63"); vertraging (1000); lcd.clear (); // speel e3 toon (10, 164,81, 300); lcd.print ("164,81"); vertraging (400); lcd.clear (); // speel e4 toon (10, 329.63, 300); lcd.print ("329.63"); vertraging (400); lcd.clear (); // speel d4 toon (10, 293.63, 300); lcd.print ("293,63"); vertraging (400); lcd.clear (); // speel c4 toon (10, 261.63, 900); lcd.print ("261,63"); vertraging (1000); lcd.clear (); // speel d3 toon (10, 146,83, 300); lcd.print ("146,83"); vertraging (400); lcd.clear (); // speel d4 toon (10, 293.63, 300); lcd.print ("293,63"); vertraging (400); lcd.clear (); // speel c4 toon (10, 261.63, 300); lcd.print ("261,63"); vertraging (400); lcd.clear (); // speel b3 toon (10, 246,94, 900); lcd.print ("246,94"); vertraging (1000); lcd.clear (); // speel e4 toon (10, 329.63, 300); lcd.print ("329,63"); vertraging (400); lcd.clear (); // speel d4# toon (10, 311.13, 300); lcd.print ("311.13"); vertraging (350); lcd.clear (); // speel e4 toon (10, 329.63, 300); lcd.print ("329.63"); vertraging (350); lcd.clear (); // speel d4# toon (10, 311.13, 300); lcd.print ("311.13"); vertraging (350); lcd.clear (); // speel e4 toon (10, 329.63, 300); lcd.print ("329,63"); vertraging (350); lcd.clear (); // speel b3 toon (10, 246,94, 300); lcd.print ("246,94"); vertraging (400); lcd.clear (); // speel d4 toon (10, 293,66, 300); lcd.print ("293,66"); vertraging (400); lcd.clear (); // speel c4 toon (10, 261.63, 300); lcd.print ("261,63"); vertraging (400); lcd.clear (); // speel a3 toon (10, 220, 900); lcd.print ("220.0"); vertraging (1000); lcd.clear (); // speel d3 toon (10, 146,83, 300); lcd.print ("146,83"); vertraging (350); lcd.clear (); // speel f3 toon (10, 174,61, 300); lcd.print ("174,61"); vertraging (400); lcd.clear (); // speel a3 toon (10, 220, 300); lcd.print ("220.0"); vertraging (400); // speel b3 lcd.clear (); toon (10, 246,94, 900); lcd.print ("246,94"); vertraging (1000); lcd.clear (); // speel e3 toon (10, 164,81, 300); lcd.print ("164,81"); vertraging (400); lcd.clear (); // speel g#3 toon (10, 207,65, 300); lcd.print ("207,65"); vertraging (400); lcd.clear (); // speel b3 toon (10, 246,94, 300); lcd.print ("246,94"); vertraging (400); lcd.clear (); // speel c4 toon (10, 261.63, 900); lcd.print ("261,63"); vertraging (1000); vertraging (300); lcd.clear (); // speel e3 toon (10, 164,81, 300); lcd.print ("164,81"); vertraging (400); lcd.clear (); // speel e4 toon (10, 329.63, 300); lcd.print ("329.63"); vertraging (400); lcd.clear (); // speel d4# toon (10, 311.13, 300); lcd.print ("311.13"); vertraging (400); lcd.clear (); // speel e4 toon (10, 329.63, 300); lcd.print ("329.63"); vertraging (400); lcd.clear (); // speel d4# toon (10, 311.13, 300); lcd.print ("311.13"); vertraging (400); lcd.clear (); // speel e4 toon (10, 329.63, 300); lcd.print ("329,63"); vertraging (400); lcd.clear (); // speel b3 toon (10, 246,94, 300); lcd.print ("246,94"); vertraging (400); lcd.clear (); // speel d4 toon (10, 293,66, 300); lcd.print ("293,66"); vertraging (400); lcd.clear (); // speel c4 toon (10, 261.63, 300); lcd.print ("261,63"); vertraging (400); lcd.clear (); // speel a3 toon (10, 220, 900); lcd.print ("220.0"); vertraging (1000); lcd.clear (); // speel d3 toon (10, 146,83, 300); lcd.print ("146,83"); vertraging (400); lcd.clear (); // speel f3 toon (10, 174,61, 300); lcd.print ("174,61"); vertraging (400); lcd.clear (); // speel a3 toon (10, 220, 300); lcd.print ("220.0"); vertraging (400); lcd.clear (); // speel b3 toon (10, 246,94, 900); lcd.print ("246,94"); vertraging (1000); lcd.clear (); // speel f3 toon (10, 174,61, 300); lcd.print ("174,61"); vertraging (400); lcd.clear (); // speel c4 toon (10, 261.63, 300); lcd.print ("261,63"); vertraging (400); lcd.clear (); // speel b3 toon (10, 246,94, 300); lcd.print ("246,94"); vertraging (400); lcd.clear (); // speel a3 toon (10, 220, 900); lcd.print ("220.0"); vertraging (1000); lcd.clear (); }
Stap 5: Kode -oplaai: wat beteken dit alles?
Kom ons definieer 'n paar funksies in Engels, sodat u die kode kan verstaan.
toon (x, y, z); = speel 'n toon met 'n toonhoogte van y Hertz, na 'n zoemer by pen x, vir z millisekondes.
lcd.print ("XYZ"); = druk 'n boodskap uit met die karakters XYZ na die LCD -skerm. (wys byvoorbeeld die Hertz -toonhoogte)
vertraging (x); = pouse vir x millisekondes.
const int X = Y = stel 'n konstante veranderlike X op pen Y, en gebruik óf X óf Y om take aan die toestel toe te ken.
lcd.clear (); = maak die LCD -skerm skoon en herstel vir 'n nuwe skerm
pinMode (X, OUTPUT); = stel pen X in vir die uitvoermodus
Sodra u al hierdie funksies verstaan het, kan u die veranderlikes maklik vervang met die data wat u versamel by die vertaling van 'n lied, en u kan dan u eie lied kodeer!
Stap 6: klaar !
U het óf 'n Arduino wat Fur Elise speel en die nootwaardes in Hertz vertoon, óf u het 'n Arduino gemaak wat die melodie van die gekose liedjie speel en teks vertoon wat u wou wys. Dankie dat u hierdie tutoriaal besoek het, en ek hoop u hierdie projek oor die Arduino.
Aanbeveel:
Hoe om skyfies en filmnegatiewe te digitaliseer met 'n DSLR: 12 stappe (met foto's)
Hoe om skyfies en filmnegatiewe te digitaliseer met 'n DSLR: 'n veelsydige en stabiele opset vir die digitalisering van skyfies en negatiewe met 'n DSLR of enige kamera met 'n makro -opsie. Hierdie instruksie is 'n opdatering van Hoe om 35 mm -negatiewe te digitaliseer (opgelaai Julie 2011) met verskeie verbeterings om die uitbreiding daarvan uit te brei
Digitaliseer u hifi-stelsel: 6 stappe (met foto's)
Digitaliseer u hifi-stelsel: in hierdie instruksies wil ek u wys hoe ek my analoog hifi-stelsel gedigitaliseer het en sodoende webradio, toegang tot die musiekversameling op my NAS, ens. Geïmplementeer het. Die implementering is hoofsaaklik gebaseer op 'n Framboos Pi, 'n Hifiberry -hoed en 'n tikkie
Money Heist BELLA CIAO -liedjie in Arduino Uno: 9 stappe (met foto's)
Money Heist BELLA CIAO Song in Arduino Uno: In hierdie tutoriaal sal ek jou wys hoe jy Money Heist Song Bella Ciao in enige Arduino kan speel met die hulp van 'n piëzo -elektriese zoemer. Hierdie oulike projek is opgedra aan alle Money Heist -aanhangers oor die hele wêreld. Dus, laat ons begin
Hoe om 'n liedjie te kodeer met behulp van bladmusiek in Sonic Pi: 5 stappe
Hoe om 'n liedjie te kodeer met behulp van bladmusiek in Sonic Pi: Hierdie instruksies gaan 'n paar basiese stappe en stukke kode uiteensit wat u moet gebruik wanneer u 'n liedjie in Sonic Pi met behulp van bladmusiek kodeer! Daar is 'n miljoen ander stukke kode om die smaak van u voltooide stuk te probeer toevoeg, dus maak seker dat u ook speel
Opneem van 'n liedjie op 'n iPad: 11 stappe (met foto's)
Opneem van 'n liedjie op 'n iPad: 'n Vriend van my het onlangs gevra hoe sy 'n paar van haar liedjies met net 'n kitaar en 'n iPad kan opneem. Ek het haar gevra of sy enige ander hardeware vir opnames het, soos 'n mikrofoon en opnamekoppelvlak. Ongelukkig was die antwoord nee, en sy is nie