Indholdsfortegnelse:
- Trin 1: Konverter musikalscoren til digitale noter: forsinkelsesværdier
- Trin 2: Konverter musikalscoren til digitale noter: Hertz -værdier
- Trin 3: Kredsløbsdesign
- Trin 4: Upload af kode: Sådan gør du
- Trin 5: Upload af kode: Hvad betyder alt det?
- Trin 6: Færdig !
Video: Digitaliser en sang med Arduino: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
Jeg ville oprette et projekt, der kombinerede to af mine yndlingsfag: videnskab og musik. Jeg tænkte på alle de måder, hvorpå jeg kunne kombinere disse to domæner, og jeg tænkte, at det ville være interessant at lave et Arduino -spil Fur Elise, mens tonens tonehøjde blev vist i Hertz. Lad os nu begynde at bygge!
Du skal bruge en Arduino Uno eller Mega, en masse springkabler, en Piezo -summer, et brødbræt, en 16*2 LCD -skærm med alle viskernåle på plads og et 10k Potentiometer (du kan også høre dem blive omtalt som potmetre)). Det er bedst at få alle disse forsyninger samlet, før vi starter byggeriet.
Trin 1: Konverter musikalscoren til digitale noter: forsinkelsesværdier
Der er to trin til digital transskription af en note fra partituret til dens digitale ækvivalent. Først skal vi skrive den tid, noten varer i millisekunder. Jeg brugte et diagram fundet online til denne opgave. Baseret på om en note var en halv note, kvart note, ottende note osv., Transskriberede jeg notelængden til millisekunder. Du kan se disse tal i min kode som forsinkelsen (); funktion og tallet inden for parenteser vil være forsinkelsesværdien i millisekunder, vi bestemte i dette trin.
Trin 2: Konverter musikalscoren til digitale noter: Hertz -værdier
Inden jeg starter dette trin, lad mig definere nogle tekniske termer. "Værdien" af en note kan bruges i flæng med ordene "tonehøjde", "værdi" og "note". Nu skal du læse hver note af sangen fra partituret. Du bliver derefter nødt til at oversætte hver note til Hertz ved hjælp af en musik til Hertz -bord, som du nemt kan finde online. En ting at huske er, at midten C er angivet som C4 på bordet, og en oktav højere er C5 og så videre. Når disse noter alle er transskriberet til Hertz, placerer du værdierne i funktionstonen (x, y, z); hvor X er pinkoden eller const int, en måde at definere variabler på, som jeg vil forklare senere. Y vil være Hertz -værdien, som du lige har transskriberet, og Z vil være varigheden af noten i millisekunder afrundet til den nærmeste hundredel. Forsinkelsen(); værdier vil være notens varighed. Lad os nu designe kredsløbet, der kan afspille musikken.
Trin 3: Kredsløbsdesign
Nu hvor vi har oversat alle noterne til digitale værdier, som en computer kan forstå, er det tid til at bygge kredsløbet. Begynd med at tage et brødbræt og placer LCD -skærmen med den første pin (GND) i række 14. Placer summeren hvor som helst, og placer et potentiometer ved siden af den. Målet er at stille alt op, for at minimere rod i ledningerne. Placer Arduino ved siden af brødbrættet, og slut 5v -stiften til den positive skinne på brødbrættet og jordstiften til den negative skinne. Nu er vi klar til at forbinde jumpere mellem Arduino og komponenterne.
Lad os nu tale om stifterne på LCD'et, og hvordan du kabler dem.
GND står for jorden, dette er den negative ledning i jævnstrøm. Led GND til den negative skinne på brødbrættet.
VCC står for Voltage at the Common Collector, og det er her du tilslutter din 5 volt strømkilde (den positive power rail).
VO står for Kontrast, led dette til den midterste pin på potentiometeret. Tilslut potentiometerets venstre ben til den positive strømskinne og den højre stift til jordstrømskinnen.
RS står for Register Select, og dette bruges af Arduino til at fortælle displayet, hvor data skal gemmes. Tilslut denne pin til pin 12 på Arduino.
RW står for Read/Write pin, som Arduino bruger til at kontrollere, om skærmen viser, hvad du har programmeret den til at vise. Tilslut denne pin til den negative skinne på brødbrættet.
E står for Enable, som fortæller LCD'et, hvilke pixels der skal aktiveres (tændes) eller deaktiveres (slukkes). Tilslut denne pin til Arduino pin 11.
D4, D5, D6 og D7 er displaynåle, der styrer de tegn og bogstaver, der vises. Tilslut dem til henholdsvis Arduino pins 5, 4, 3 og 2.
Pin A, undertiden mærket LED, er LED -anoden til baggrundsbelysningen. Tilslut dette til den positive strømskinne med en ledning eller med en 220-ohm modstand. Modstanden er bedre til længere brug, da den skåner LCD'et, men hvis enheden ikke skal bruges dag og nat, behøver du ikke modstanden.
Pin K, undertiden også (forvirrende) mærket LED, er LED jordstift. Tilslut dette til jorden power rail.
Trin 4: Upload af kode: Sådan gør du
Slut din Arduino til din computers USB. Upload følgende kode ved hjælp af Arduino IDE -programmereren.
#omfatte
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
ugyldig opsætning () {
// konfigurer LCD's antal kolonner og rækker: lcd.begin (16, 2); // Udskriv en besked til LCD -skærmen. lcd.print ("Hertz Pitch:!"); forsinkelse (1000); void loop () {// play e4 delay (600); // pause i 0,6 sekunder tone (10, 329,63, 300); // play e til summeren ved pin 10, sidste i.3 sec lcd.print (" 329.63 "); // vis en meddelelse på LCD" 329.63"
forsinkelse (350); // forsinkelse i.35 sekunder
lcd.clear (); // ryd LCD og nulstil til næste besked // afspil d4# tone (10, 311.13, 300); lcd.print ("311.13"); forsinkelse (350); lcd.clear (); // afspil e4 tone (10, 329,63, 300); lcd.print ("329,63"); forsinkelse (350); lcd.clear (); // afspil d4# tone (10, 311.13, 300); lcd.print ("311.13"); forsinkelse (350); lcd.clear (); // afspil e4 tone (10, 329,63, 300); lcd.print ("329,63"); forsinkelse (350); lcd.clear (); // afspil b3 tone (10, 246,94, 300); lcd.print ("246,94"); forsinkelse (400); lcd.clear (); // afspil d4 tone (10, 293,66, 300); lcd.print ("293,66"); forsinkelse (400); lcd.clear (); // afspil c4 tone (10, 261,63, 300); lcd.print ("261,63"); forsinkelse (400); lcd.clear (); // afspil a3 tone (10, 220, 900); lcd.print ("220,0"); forsinkelse (1000); lcd.clear (); // line60 // helptave // avrdude.failure.eeprom // afspil d3 tone (10, 146,83, 300); lcd.print ("146,63"); forsinkelse (350); lcd.clear (); // afspil f3 tone (10, 174,61, 300); lcd.print ("174,61"); forsinkelse (400); lcd.clear (); // afspil a3 tone (10, 220, 300); lcd.print ("220"); forsinkelse (400); lcd.clear (); // afspil b3 tone (10, 246,94, 900); lcd.print ("246,94"); forsinkelse (1000); lcd.clear ();
// afspil e3
tone (10, 164,81, 300); lcd.print ("164,81"); forsinkelse (400); lcd.clear (); // afspil g3# tone (10, 207,65, 300); lcd.print ("207,65"); forsinkelse (400); lcd.clear (); // afspil b3 tone (10, 246,94, 300); lcd.print ("246,94"); forsinkelse (400); lcd.clear (); // afspil c4 tone (10, 261,63, 900); lcd.print ("261,63"); forsinkelse (1000); lcd.clear (); // afspil e tone (10, 164,81, 300); lcd.print ("164,81"); forsinkelse (400); lcd.clear (); // afspil e4 tone (10, 329,63, 300); lcd.print ("329,63"); forsinkelse (400); lcd.clear (); // afspil d4# tone (10, 311.13, 300); lcd.print ("311.13"); forsinkelse (400); lcd.clear (); // afspil e4 tone (10, 329,63, 300); lcd.print ("329,63"); forsinkelse (400); lcd.clear (); // afspil d4# tone (10, 311.13, 300); lcd.print ("311.13"); forsinkelse (400); lcd.clear (); // afspil e4 tone (10, 329,63, 300); lcd.print ("329,63"); forsinkelse (400); lcd.clear (); // afspil b3 tone (10, 246,94, 300); lcd.print ("246,94"); forsinkelse (400); lcd.clear (); // afspil d4 tone (10, 293,66, 300); lcd.print ("293,66"); forsinkelse (400); lcd.clear (); // afspil c4 tone (10, 261,63, 300); lcd.print ("261,63"); forsinkelse (400); lcd.clear (); // afspil a3 tone (10, 220, 900); lcd.print ("220,0"); forsinkelse (1000); lcd.clear (); // afspil d3 tone (10, 146,83, 300); lcd.print ("146,83"); forsinkelse (400); lcd.clear (); // afspil f3 tone (10, 174,61, 300); // eeprom 20--6 yesno, flash 65--0 noyes lcd.print ("174,61"); forsinkelse (400); lcd.clear (); // afspil a3 tone (10, 220, 300); lcd.print ("220,0"); forsinkelse (400); lcd.clear (); // afspil b3 tone (10, 246,94, 900); lcd.print ("246,94"); forsinkelse (1000); lcd.clear (); // afspil f3 tone (10, 174,61, 300); lcd.print ("174,61"); forsinkelse (400); lcd.clear (); // afspil c4 tone (10, 261,63, 300); lcd.print ("261,63"); forsinkelse (400); lcd.clear (); // afspil b3 tone (10, 246,94, 300); lcd.print ("246,94"); forsinkelse (400); lcd.clear (); // afspil a3 tone (10, 220, 900); lcd.print ("220,0"); forsinkelse (1000); lcd.clear (); // afspil b3 tone (10, 246,94, 300); lcd.print ("246,94"); forsinkelse (400); lcd.clear (); // afspil c4 tone (10, 261,63, 300); lcd.print ("261,63"); forsinkelse (400); lcd.clear (); // afspil d4 tone (10, 293,66, 300); lcd.print ("293,66"); forsinkelse (400); lcd.clear (); // afspil e4 tone (10, 329,63, 900); lcd.print ("329,63"); forsinkelse (1000); lcd.clear (); // afspil g3 tone (10, 196, 300); lcd.print ("196,0"); forsinkelse (400); lcd.clear (); // afspil f4 tone (10, 349,23, 300); lcd.print ("349,23"); forsinkelse (400); lcd.clear (); // afspil e4 tone (10, 329,23, 300); lcd.print ("329,23"); forsinkelse (400); lcd.clear (); // afspil d4 tone (10, 293,63, 900); lcd.print ("293,63"); forsinkelse (1000); lcd.clear (); // afspil e3 tone (10, 164,81, 300); lcd.print ("164,81"); forsinkelse (400); lcd.clear (); // afspil e4 tone (10, 329,63, 300); lcd.print ("329,63"); forsinkelse (400); lcd.clear (); // afspil d4 tone (10, 293,63, 300); lcd.print ("293,63"); forsinkelse (400); lcd.clear (); // afspil c4 tone (10, 261,63, 900); lcd.print ("261,63"); forsinkelse (1000); lcd.clear (); // afspil d3 tone (10, 146,83, 300); lcd.print ("146,83"); forsinkelse (400); lcd.clear (); // afspil d4 tone (10, 293,63, 300); lcd.print ("293,63"); forsinkelse (400); lcd.clear (); // afspil c4 tone (10, 261,63, 300); lcd.print ("261,63"); forsinkelse (400); lcd.clear (); // afspil b3 tone (10, 246,94, 900); lcd.print ("246,94"); forsinkelse (1000); lcd.clear (); // afspil e4 tone (10, 329,63, 300); lcd.print ("329,63"); forsinkelse (400); lcd.clear (); // afspil d4# tone (10, 311.13, 300); lcd.print ("311.13"); forsinkelse (350); lcd.clear (); // afspil e4 tone (10, 329,63, 300); lcd.print ("329,63"); forsinkelse (350); lcd.clear (); // afspil d4# tone (10, 311.13, 300); lcd.print ("311.13"); forsinkelse (350); lcd.clear (); // afspil e4 tone (10, 329,63, 300); lcd.print ("329,63"); forsinkelse (350); lcd.clear (); // afspil b3 tone (10, 246,94, 300); lcd.print ("246,94"); forsinkelse (400); lcd.clear (); // afspil d4 tone (10, 293,66, 300); lcd.print ("293,66"); forsinkelse (400); lcd.clear (); // afspil c4 tone (10, 261,63, 300); lcd.print ("261,63"); forsinkelse (400); lcd.clear (); // afspil a3 tone (10, 220, 900); lcd.print ("220,0"); forsinkelse (1000); lcd.clear (); // afspil d3 tone (10, 146,83, 300); lcd.print ("146,83"); forsinkelse (350); lcd.clear (); // afspil f3 tone (10, 174,61, 300); lcd.print ("174,61"); forsinkelse (400); lcd.clear (); // afspil a3 tone (10, 220, 300); lcd.print ("220,0"); forsinkelse (400); // afspil b3 lcd.clear (); tone (10, 246,94, 900); lcd.print ("246,94"); forsinkelse (1000); lcd.clear (); // afspil e3 tone (10, 164,81, 300); lcd.print ("164,81"); forsinkelse (400); lcd.clear (); // afspil g#3 tone (10, 207,65, 300); lcd.print ("207,65"); forsinkelse (400); lcd.clear (); // afspil b3 tone (10, 246,94, 300); lcd.print ("246,94"); forsinkelse (400); lcd.clear (); // afspil c4 tone (10, 261,63, 900); lcd.print ("261,63"); forsinkelse (1000); forsinkelse (300); lcd.clear (); // afspil e3 tone (10, 164,81, 300); lcd.print ("164,81"); forsinkelse (400); lcd.clear (); // afspil e4 tone (10, 329,63, 300); lcd.print ("329,63"); forsinkelse (400); lcd.clear (); // afspil d4# tone (10, 311.13, 300); lcd.print ("311.13"); forsinkelse (400); lcd.clear (); // afspil e4 tone (10, 329,63, 300); lcd.print ("329,63"); forsinkelse (400); lcd.clear (); // afspil d4# tone (10, 311.13, 300); lcd.print ("311.13"); forsinkelse (400); lcd.clear (); // afspil e4 tone (10, 329,63, 300); lcd.print ("329,63"); forsinkelse (400); lcd.clear (); // afspil b3 tone (10, 246,94, 300); lcd.print ("246,94"); forsinkelse (400); lcd.clear (); // afspil d4 tone (10, 293,66, 300); lcd.print ("293,66"); forsinkelse (400); lcd.clear (); // afspil c4 tone (10, 261,63, 300); lcd.print ("261,63"); forsinkelse (400); lcd.clear (); // afspil a3 tone (10, 220, 900); lcd.print ("220,0"); forsinkelse (1000); lcd.clear (); // afspil d3 tone (10, 146,83, 300); lcd.print ("146,83"); forsinkelse (400); lcd.clear (); // afspil f3 tone (10, 174,61, 300); lcd.print ("174,61"); forsinkelse (400); lcd.clear (); // afspil a3 tone (10, 220, 300); lcd.print ("220,0"); forsinkelse (400); lcd.clear (); // afspil b3 tone (10, 246,94, 900); lcd.print ("246,94"); forsinkelse (1000); lcd.clear (); // afspil f3 tone (10, 174,61, 300); lcd.print ("174,61"); forsinkelse (400); lcd.clear (); // afspil c4 tone (10, 261,63, 300); lcd.print ("261,63"); forsinkelse (400); lcd.clear (); // afspil b3 tone (10, 246,94, 300); lcd.print ("246,94"); forsinkelse (400); lcd.clear (); // afspil a3 tone (10, 220, 900); lcd.print ("220,0"); forsinkelse (1000); lcd.clear (); }
Trin 5: Upload af kode: Hvad betyder alt det?
Lad os definere nogle funktioner på engelsk, så du kan forstå koden.
tone (x, y, z); = afspil en tone med en tonehøjde på y Hertz, til en summer ved pin x, i z millisekunder.
lcd.print ("XYZ"); = udskriv en besked med tegnene XYZ til LCD -skærmen. (f.eks. vis Hertz -tonehøjde)
forsinkelse (x); = pause i x millisekunder.
const int X = Y = indstil en konstant variabel X til pin Y, og brug enten X eller Y til at tildele opgaver til enheden.
lcd.clear (); = ryd LCD -skærmen og nulstil for et nyt display
pinMode (X, OUTPUT); = indstil pin X til udgangstilstand
Når du forstår alle disse funktioner, kan du nemt erstatte variablerne med de data, du indsamler, når du oversætter en sang, og du kan derefter kode din egen sang!
Trin 6: Færdig !
Du har enten en Arduino, der spiller Fur Elise og viser noteværdierne i Hertz, eller du har lavet en Arduino, der afspiller melodien til den sang, du valgte, og viser tekst, som du ønskede at vise. Tak fordi du besøgte denne vejledning, og jeg håber dig dette projekt på Arduino.
Anbefalede:
Digitaliser dit Hi-Fi-system: 6 trin (med billeder)
Digitaliser dit Hi-fi-system: I denne instruktør vil jeg gerne vise dig, hvordan jeg digitaliserede mit analoge hi-fi-system og dermed realiserede webradio, adgang til musiksamlingen gemt på min NAS osv. Implementeringen er hovedsageligt baseret på en Hindbær Pi, en Hifiberry HAT og et tryk
Money Heist BELLA CIAO -sang i Arduino Uno: 9 trin (med billeder)
Money Heist BELLA CIAO -sang i Arduino Uno: I denne vejledning viser jeg dig, hvordan du kan spille Money Heist Song Bella Ciao i enhver Arduino ved hjælp af en piezoelektrisk summer. Dette fede projekt er dedikeret til alle Money Heist -fans over hele verden. Så lad os komme i gang
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)
Sådan styrer du husholdningsapparater med fjernsyn med fjernbetjening med timerfunktion: 7 trin (med billeder)
Sådan styrer du husholdningsapparater med fjernsyn med fjernbetjening med timerfunktion: Selv efter 25 års introduktion til forbrugermarkedet er infrarød kommunikation stadig meget relevant i de seneste dage. Uanset om det er dit 55 tommer 4K -fjernsyn eller dit billydsystem, har alt brug for en IR -fjernbetjening for at reagere på vores
Optagelse af en sang på en iPad: 11 trin (med billeder)
Optagelse af en sang på en iPad: En af mine venner spurgte for nylig, hvordan hun kunne optage nogle af hendes sange med bare en guitar og en iPad. Jeg spurgte hende, om hun havde anden optagehardware som f.eks. En mikrofon og optagegrænseflade. Desværre var svaret nej, og det er hun ikke