Innehållsförteckning:

Digitalisera en sång med Arduino: 6 steg
Digitalisera en sång med Arduino: 6 steg

Video: Digitalisera en sång med Arduino: 6 steg

Video: Digitalisera en sång med Arduino: 6 steg
Video: 10-åriga Eva rör juryn till tårar med sin magiska sångröst 2024, November
Anonim
Digitalisera en sång med Arduino
Digitalisera en sång med Arduino

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

Konvertera musikmusiken till digitala noter: fördröjningsvärden
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

Konvertera musikmusiken till digitala noter: Hertz -värden
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

Kretsdesign
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 !!

Färdiga!!!
Färdiga!!!
Färdiga!!!
Färdiga!!!

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: