Innehållsförteckning:
- Steg 1: Konvertera musikmusiken till digitala noter: fördröjningsvärden
- Steg 2: Konvertera musikmusiken till digitala noter: Hertz -värden
- Steg 3: Kretsdesign
- Steg 4: Uppladdning av kod: Hur
- Steg 5: Uppladdning av kod: Vad betyder allt detta?
- Steg 6: Avslutad !!
Video: Digitalisera en sång med Arduino: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
Jag ville skapa ett projekt som kombinerade två av mina favoritämnen: vetenskap och musik. Jag tänkte på alla sätt jag kunde kombinera dessa två domäner, och jag trodde att det skulle vara intressant att göra en Arduino -pjäs Fur Elise samtidigt som tonens tonhöjd visas i Hertz. Nu ska vi börja bygga!
Du behöver en Arduino Uno eller Mega, många bygelkablar, en Piezo -summer, en brödbräda, en 16*2 LCD -skärm med alla torkarpinnar på plats och en 10k Potentiometer (du kan också höra dem kallas potmetrar)). Det är bäst att få ihop alla dessa tillbehör innan vi börjar bygga.
Steg 1: Konvertera musikmusiken till digitala noter: fördröjningsvärden
Det finns två steg för att digitalt transkribera en anteckning från poängen till dess digitala ekvivalent. Först måste vi skriva den tid noten varar i millisekunder. Jag använde ett diagram som hittades online för denna uppgift. Baserat på om en lapp var en halvnot, kvartnot, åttonde not, etc, transkriberade jag notlängden till millisekunder. Du kan se dessa nummer i min kod som fördröjning (); funktion och antalet inom parentes är fördröjningsvärdet i millisekunder som vi bestämde i detta steg.
Steg 2: Konvertera musikmusiken till digitala noter: Hertz -värden
Innan jag börjar detta steg, låt mig definiera några tekniska termer. "Notens" värde kan användas omväxlande med orden "pitch", "value" och "note". Nu måste du läsa varje ton av låten från noten. Du måste sedan översätta varje ton till Hertz med hjälp av en musik till Hertz -bord, som du enkelt kan hitta online. En sak att komma ihåg är att mitten C är listad som C4 på bordet, och en oktav högre är C5, och så vidare. När alla dessa anteckningar transkriberats till Hertz kommer du att placera värdena i funktionstonen (x, y, z); där X är pin -numret eller const int, ett sätt att definiera variabler som jag kommer att förklara senare. Y är Hertz -värdet som du just transkriberade, och Z är notens varaktighet i millisekunder avrundat till närmaste hundradel. Förseningen(); värdena kommer att vara anteckningens varaktighet. Låt oss nu utforma kretsen som kan spela musiken.
Steg 3: Kretsdesign
Nu när vi har översatt alla anteckningar till digitala värden som en dator kan förstå, är det dags att bygga kretsen. Börja med att ta en brödbräda och placera LCD -skärmen med den första stiftet (GND) på rad 14. Placera summern var du vill och placera en potentiometer bredvid den. Målet är att rada upp allt, för att minimera röran i ledningarna. Placera Arduino bredvid brödbrädan och anslut 5v -stiftet till den positiva skenan på brödbrädet och marknålen till den negativa skenan. Nu är vi redo att ansluta hoppare mellan Arduino och komponenterna.
Låt oss nu prata om stiften på LCD -skärmen och hur du kopplar dem.
GND står för jord, detta är den negativa ledningen i likström. Anslut GND till den negativa skenan på brödbrädan.
VCC står för Voltage at the Common Collector, och det är här du ansluter din 5-volts strömkälla (den positiva kraftskenan).
VO står för Contrast, anslut detta till potentiometerns mittstift. Anslut den vänstra stiftet på potentiometern till den positiva kraftskenan och den högra stiftet till den jordade kraftskenan.
RS står för Register Select, och detta används av Arduino för att berätta för displayen var data ska lagras. Anslut denna stift till stift 12 på Arduino.
RW står för Read/Write pin, som Arduino använder för att kontrollera om skärmen visar vad du har programmerat den att visa. Anslut denna stift till den negativa skenan på brödbrädan.
E står för Enable, vilket visar LCD -skärmen vilka pixlar som ska aktiveras (slås på) eller inaktiveras (stängas av). Anslut denna stift till Arduino pin 11.
D4, D5, D6 och D7 är displaynålar som styr de tecken och bokstäver som visas. Anslut dem till Arduino -stiften 5, 4, 3 respektive 2.
Pin A, ibland märkt LED, är LED -anoden för bakgrundsbelysningen. Anslut detta till den positiva kraftskenan med en kabel eller med ett 220-ohm motstånd. Motståndet är bättre för längre användning eftersom det sparar LCD -skärmen, men om enheten inte kommer att användas dag och natt behöver du inte motståndet.
Pin K, ibland också (förvirrande) märkt LED, är LED -jordstiftet. Anslut detta till markströmsskenan.
Steg 4: Uppladdning av kod: Hur
Anslut din Arduino till datorns USB. Ladda upp följande kod med Arduino IDE -programmeraren.
#omfatta
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
void setup () {
// ställ in LCD -skärmens antal kolumner och rader: lcd.begin (16, 2); // Skriv ut ett meddelande till LCD -skärmen. lcd.print ("Hertz Pitch:!"); fördröjning (1000); void loop () {// play e4 delay (600); // pause for 0.6 seconds tone (10, 329.63, 300); // play e to the summer by pin 10, last in.3 secs lcd.print (" 329.63 "); // visa ett meddelande på LCD" 329.63"
fördröjning (350); // fördröjning i.35 sekunder
lcd.clear (); // rensa LCD och återställ för nästa meddelande // spela d4# ton (10, 311.13, 300); lcd.print ("311.13"); fördröjning (350); lcd.clear (); // spela e4 -ton (10, 329,63, 300); lcd.print ("329,63"); fördröjning (350); lcd.clear (); // spela d4# ton (10, 311.13, 300); lcd.print ("311.13"); fördröjning (350); lcd.clear (); // spela e4 -ton (10, 329,63, 300); lcd.print ("329,63"); fördröjning (350); lcd.clear (); // spela b3 ton (10, 246,94, 300); lcd.print ("246,94"); fördröjning (400); lcd.clear (); // spela d4 ton (10, 293,66, 300); lcd.print ("293,66"); fördröjning (400); lcd.clear (); // spela c4 -ton (10, 261,63, 300); lcd.print ("261,63"); fördröjning (400); lcd.clear (); // spela a3 -ton (10, 220, 900); lcd.print ("220,0"); fördröjning (1000); lcd.clear (); // line60 // helpsave // avrdude.failure.eeprom // spela d3 ton (10, 146,83, 300); lcd.print ("146,63"); fördröjning (350); lcd.clear (); // spela f3 ton (10, 174,61, 300); lcd.print ("174,61"); fördröjning (400); lcd.clear (); // spela a3 -ton (10, 220, 300); lcd.print ("220"); fördröjning (400); lcd.clear (); // spela b3 ton (10, 246,94, 900); lcd.print ("246,94"); fördröjning (1000); lcd.clear ();
// spela e3
ton (10, 164,81, 300); lcd.print ("164,81"); fördröjning (400); lcd.clear (); // spela g3# ton (10, 207,65, 300); lcd.print ("207,65"); fördröjning (400); lcd.clear (); // spela b3 ton (10, 246,94, 300); lcd.print ("246,94"); fördröjning (400); lcd.clear (); // spela c4 -ton (10, 261,63, 900); lcd.print ("261,63"); fördröjning (1000); lcd.clear (); // spela e ton (10, 164,81, 300); lcd.print ("164,81"); fördröjning (400); lcd.clear (); // spela e4 -ton (10, 329,63, 300); lcd.print ("329,63"); fördröjning (400); lcd.clear (); // spela d4# ton (10, 311.13, 300); lcd.print ("311.13"); fördröjning (400); lcd.clear (); // spela e4 -ton (10, 329,63, 300); lcd.print ("329,63"); fördröjning (400); lcd.clear (); // spela d4# ton (10, 311.13, 300); lcd.print ("311.13"); fördröjning (400); lcd.clear (); // spela e4 -ton (10, 329,63, 300); lcd.print ("329,63"); fördröjning (400); lcd.clear (); // spela b3 ton (10, 246,94, 300); lcd.print ("246,94"); fördröjning (400); lcd.clear (); // spela d4 ton (10, 293,66, 300); lcd.print ("293,66"); fördröjning (400); lcd.clear (); // spela c4 -ton (10, 261,63, 300); lcd.print ("261,63"); fördröjning (400); lcd.clear (); // spela a3 -ton (10, 220, 900); lcd.print ("220,0"); fördröjning (1000); lcd.clear (); // spela d3 ton (10, 146,83, 300); lcd.print ("146,83"); fördröjning (400); lcd.clear (); // spela f3 ton (10, 174,61, 300); // eeprom 20--6 yesno, flash 65--0 noyes lcd.print ("174.61"); fördröjning (400); lcd.clear (); // spela a3 -ton (10, 220, 300); lcd.print ("220,0"); fördröjning (400); lcd.clear (); // spela b3 ton (10, 246,94, 900); lcd.print ("246,94"); fördröjning (1000); lcd.clear (); // spela f3 ton (10, 174,61, 300); lcd.print ("174,61"); fördröjning (400); lcd.clear (); // spela c4 -ton (10, 261,63, 300); lcd.print ("261,63"); fördröjning (400); lcd.clear (); // spela b3 ton (10, 246,94, 300); lcd.print ("246,94"); fördröjning (400); lcd.clear (); // spela a3 -ton (10, 220, 900); lcd.print ("220,0"); fördröjning (1000); lcd.clear (); // spela b3 ton (10, 246,94, 300); lcd.print ("246,94"); fördröjning (400); lcd.clear (); // spela c4 -ton (10, 261,63, 300); lcd.print ("261,63"); fördröjning (400); lcd.clear (); // spela d4 ton (10, 293,66, 300); lcd.print ("293,66"); fördröjning (400); lcd.clear (); // spela e4 -ton (10, 329,63, 900); lcd.print ("329,63"); fördröjning (1000); lcd.clear (); // spela g3 -ton (10, 196, 300); lcd.print ("196,0"); fördröjning (400); lcd.clear (); // spela f4 -ton (10, 349,23, 300); lcd.print ("349,23"); fördröjning (400); lcd.clear (); // spela e4 -ton (10, 329,23, 300); lcd.print ("329,23"); fördröjning (400); lcd.clear (); // spela d4 ton (10, 293,63, 900); lcd.print ("293,63"); fördröjning (1000); lcd.clear (); // spela e3 -ton (10, 164,81, 300); lcd.print ("164,81"); fördröjning (400); lcd.clear (); // spela e4 -ton (10, 329,63, 300); lcd.print ("329,63"); fördröjning (400); lcd.clear (); // spela d4 ton (10, 293,63, 300); lcd.print ("293,63"); fördröjning (400); lcd.clear (); // spela c4 -ton (10, 261,63, 900); lcd.print ("261,63"); fördröjning (1000); lcd.clear (); // spela d3 ton (10, 146,83, 300); lcd.print ("146,83"); fördröjning (400); lcd.clear (); // spela d4 ton (10, 293,63, 300); lcd.print ("293,63"); fördröjning (400); lcd.clear (); // spela c4 -ton (10, 261,63, 300); lcd.print ("261,63"); fördröjning (400); lcd.clear (); // spela b3 ton (10, 246,94, 900); lcd.print ("246,94"); fördröjning (1000); lcd.clear (); // spela e4 -ton (10, 329,63, 300); lcd.print ("329,63"); fördröjning (400); lcd.clear (); // spela d4# ton (10, 311.13, 300); lcd.print ("311.13"); fördröjning (350); lcd.clear (); // spela e4 -ton (10, 329,63, 300); lcd.print ("329,63"); fördröjning (350); lcd.clear (); // spela d4# ton (10, 311.13, 300); lcd.print ("311.13"); fördröjning (350); lcd.clear (); // spela e4 -ton (10, 329,63, 300); lcd.print ("329,63"); fördröjning (350); lcd.clear (); // spela b3 ton (10, 246,94, 300); lcd.print ("246,94"); fördröjning (400); lcd.clear (); // spela d4 ton (10, 293,66, 300); lcd.print ("293,66"); fördröjning (400); lcd.clear (); // spela c4 -ton (10, 261,63, 300); lcd.print ("261,63"); fördröjning (400); lcd.clear (); // spela a3 -ton (10, 220, 900); lcd.print ("220,0"); fördröjning (1000); lcd.clear (); // spela d3 ton (10, 146,83, 300); lcd.print ("146,83"); fördröjning (350); lcd.clear (); // spela f3 ton (10, 174,61, 300); lcd.print ("174,61"); fördröjning (400); lcd.clear (); // spela a3 -ton (10, 220, 300); lcd.print ("220,0"); fördröjning (400); // spela b3 lcd.clear (); ton (10, 246,94, 900); lcd.print ("246,94"); fördröjning (1000); lcd.clear (); // spela e3 -ton (10, 164,81, 300); lcd.print ("164,81"); fördröjning (400); lcd.clear (); // spela g#3 ton (10, 207,65, 300); lcd.print ("207,65"); fördröjning (400); lcd.clear (); // spela b3 ton (10, 246,94, 300); lcd.print ("246,94"); fördröjning (400); lcd.clear (); // spela c4 -ton (10, 261,63, 900); lcd.print ("261,63"); fördröjning (1000); fördröjning (300); lcd.clear (); // spela e3 -ton (10, 164,81, 300); lcd.print ("164,81"); fördröjning (400); lcd.clear (); // spela e4 -ton (10, 329,63, 300); lcd.print ("329,63"); fördröjning (400); lcd.clear (); // spela d4# ton (10, 311.13, 300); lcd.print ("311.13"); fördröjning (400); lcd.clear (); // spela e4 -ton (10, 329,63, 300); lcd.print ("329,63"); fördröjning (400); lcd.clear (); // spela d4# ton (10, 311.13, 300); lcd.print ("311.13"); fördröjning (400); lcd.clear (); // spela e4 -ton (10, 329,63, 300); lcd.print ("329,63"); fördröjning (400); lcd.clear (); // spela b3 ton (10, 246,94, 300); lcd.print ("246,94"); fördröjning (400); lcd.clear (); // spela d4 ton (10, 293,66, 300); lcd.print ("293,66"); fördröjning (400); lcd.clear (); // spela c4 -ton (10, 261,63, 300); lcd.print ("261,63"); fördröjning (400); lcd.clear (); // spela a3 -ton (10, 220, 900); lcd.print ("220,0"); fördröjning (1000); lcd.clear (); // spela d3 ton (10, 146,83, 300); lcd.print ("146,83"); fördröjning (400); lcd.clear (); // spela f3 ton (10, 174,61, 300); lcd.print ("174,61"); fördröjning (400); lcd.clear (); // spela a3 -ton (10, 220, 300); lcd.print ("220,0"); fördröjning (400); lcd.clear (); // spela b3 ton (10, 246,94, 900); lcd.print ("246,94"); fördröjning (1000); lcd.clear (); // spela f3 ton (10, 174,61, 300); lcd.print ("174,61"); fördröjning (400); lcd.clear (); // spela c4 -ton (10, 261,63, 300); lcd.print ("261,63"); fördröjning (400); lcd.clear (); // spela b3 ton (10, 246,94, 300); lcd.print ("246,94"); fördröjning (400); lcd.clear (); // spela a3 -ton (10, 220, 900); lcd.print ("220,0"); fördröjning (1000); lcd.clear (); }
Steg 5: Uppladdning av kod: Vad betyder allt detta?
Låt oss definiera några funktioner på engelska, så att du kan förstå koden.
ton (x, y, z); = spela en ton med en tonhöjd på y Hertz, till en summer vid stift x, i z millisekunder.
lcd.print ("XYZ"); = skriv ut ett meddelande med tecknen XYZ till LCD -skärmen. (t.ex. visa Hertz -tonhöjd)
fördröjning (x); = paus i x millisekunder.
const int X = Y = ställ in en konstant variabel X till pin Y, och använd antingen X eller Y för att tilldela uppgifter till enheten.
lcd.clear (); = rensa LCD -skärmen och återställ för en ny display
pinMode (X, OUTPUT); = Ställ in stift X för utgångsläge
När du väl förstår alla dessa funktioner kan du enkelt ersätta variablerna med data som du samlar in när du översätter en låt, och du kan sedan koda din egen låt!
Steg 6: Avslutad !!
Antingen har du en Arduino som spelar Fur Elise och visar notvärdena i Hertz, eller så har du gjort en Arduino som spelar melodin på låten du valde och visar text som du ville visa. Tack för att du besöker denna handledning, och jag hoppas att du får detta projekt på Arduino.
Rekommenderad:
Digitalisera ditt Hi-Fi-system: 6 steg (med bilder)
Digitalisera ditt Hi-Fi-system: I denna instruktionsbok vill jag visa dig hur jag digitaliserade mitt analoga hi-fi-system och därmed förverkligade webbradio, tillgång till musiksamlingen lagrad på min NAS, etc. Implementeringen är huvudsakligen baserad på en Hallon Pi, en Hifiberry -hatt och en touch
Ge din säng underglöd !: 7 steg (med bilder)
Ge din säng underglöd !: I denna instruktionsbok förklarar jag hur du får din säng att se fantastisk ut med RGB -lysdioder. De jag fick är fjärrstyrda, de har olika alternativ som blekning eller blinkning, och de är väldigt billiga. Nyligen var det en rea på bangg
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter - Rc helikopter - RC -plan med Arduino: 5 steg (med bilder)
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter | Rc helikopter | Rc -plan med Arduino: Att driva en Rc -bil | Quadcopter | Drone | RC -plan | RC -båt, vi behöver alltid en mottagare och sändare, antag att för RC QUADCOPTER behöver vi en 6 -kanals sändare och mottagare och den typen av TX och RX är för dyr, så vi kommer att göra en på vår
Tändklocka för barn - Green Means Go! Röd, stanna i SÄNG !!!: 5 steg (med bilder)
Tändklocka för barn - Green Means Go! Röd, stanna i SÄNG !!!: Vi blev galna utan tillräckligt med sömn !!! Vår 2-åring kunde inte förstå hur man " vänta på 7 " på klockan innan han kom ut ur sitt rum morgon efter morgon. Han skulle vakna tidigt (jag menar som klockan 05:27 - " det finns en 7 !!! "
Ett bättre bärbart stativ för säng: 7 steg (med bilder)
Ett bättre bärbart stativ för säng: Gör ett enkelt men otroligt användbart bärbart stativ i cirka $ 15 och 30-60 minuter! Perfekt för användning i sängen medan du skriver, surfar och särskilt tittar på filmer. När jag använder min bärbara dator i sängen är det ofta obehagligt. Jag måste balansera den bärbara datorn på m