Obsah:

Digitalizujte píseň pomocí Arduina: 6 kroků
Digitalizujte píseň pomocí Arduina: 6 kroků

Video: Digitalizujte píseň pomocí Arduina: 6 kroků

Video: Digitalizujte píseň pomocí Arduina: 6 kroků
Video: Digitalizujte svůj byznys - ALL (23 S) 2024, Listopad
Anonim
Digitalizujte píseň pomocí Arduina
Digitalizujte píseň pomocí Arduina

Chtěl jsem vytvořit projekt, který by spojil dva mé oblíbené předměty: vědu a hudbu. Přemýšlel jsem o všech způsobech, jak bych mohl tyto dvě domény kombinovat, a řekl jsem si, že by bylo zajímavé přimět Arduino hrát Fur Elise při zobrazení výšky tónu v Hertz. Začněme stavět!

Budete potřebovat jeden Arduino Uno nebo Mega, spoustu propojovacích kabelů, Piezo bzučák, prkénko, 16*2 LCD obrazovku se všemi stíracími kolíky na místě a 10k potenciometr (můžete také slyšet, že jsou označovány jako potmetry). Nejlepší je dát si všechny tyto zásoby dohromady, než se pustíme do stavby.

Krok 1: Převeďte hudební skóre na digitální poznámky: hodnoty zpoždění

Převeďte hudební skóre na digitální poznámky: hodnoty zpoždění
Převeďte hudební skóre na digitální poznámky: hodnoty zpoždění

Existují dva kroky k digitálnímu přepisu noty z partitury do jejího digitálního ekvivalentu. Nejprve budeme muset napsat dobu, po kterou poznámka trvá, v milisekundách. Pro tento úkol jsem použil graf nalezený online. Na základě toho, zda nota byla poloviční, čtvrtinová, osmá atd., Jsem přepsal délku noty na milisekundy. Tato čísla můžete v mém kódu vidět jako delay (); funkce a číslo v závorkách bude hodnota zpoždění v milisekundách, kterou jsme v tomto kroku určili.

Krok 2: Převeďte hudební skóre na digitální poznámky: Hertzovy hodnoty

Převeďte hudební skóre na digitální poznámky: hodnoty Hertz
Převeďte hudební skóre na digitální poznámky: hodnoty Hertz

Před zahájením tohoto kroku mi dovolte definovat některé technické termíny. „Hodnota“poznámky může být zaměnitelně použita se slovy „výška“, „hodnota“a „poznámka“. Nyní musíte přečíst každou notu písně ze skóre. Poté budete muset každou notu přeložit do Hertz pomocí tabulky Hertz s hudbou, kterou můžete snadno najít online. Jedna věc, kterou si musíte pamatovat, je, že střední C je v tabulce uveden jako C4 a o oktávu vyšší je C5 atd. Jakmile jsou všechny noty přepsány do Hertz, vložíte hodnoty do funkčního tónu (x, y, z); kde X je číslo PIN nebo const int, způsob definování proměnných, který vysvětlím později. Y bude hodnota Hertz, kterou jste právě přepsali, a Z bude trvání poznámky v milisekundách zaokrouhlené na nejbližší setinu. Zpoždění(); hodnoty budou trvání poznámky. Nyní navrhneme obvod, který může přehrávat hudbu.

Krok 3: Návrh obvodu

Návrh obvodu
Návrh obvodu

Nyní, když jsme přeložili všechny poznámky do digitálních hodnot, kterým může počítač rozumět, je čas sestavit obvod. Začněte tím, že vezmete prkénko a umístíte obrazovku LCD s prvním kolíkem (GND) do řady 14. Umístěte bzučák kamkoli se vám líbí a vedle něj umístěte potenciometr. Cílem je vše seřadit, aby se minimalizovalo zaplnění vodičů. Umístěte Arduino vedle prkénka a připojte 5v kolík k kladné kolejnici prkénka a uzemňovací kolík k záporné liště. Nyní jsme připraveni připojit propojky mezi Arduino a komponenty.

Nyní si promluvíme o pinech na LCD a o tom, jak je zapojit.

GND znamená zem, toto je záporný vodič stejnosměrného proudu. Připojte GND k záporné liště prkénka.

VCC je zkratka pro Voltage at the Common Collector, a zde připojíte svůj 5voltový zdroj energie (kladná napájecí lišta).

VO znamená kontrast, připojte jej ke střednímu kolíku potenciometru. Připojte levý kolík potenciometru k kladné napájecí liště a pravý kolík k zemnící napájecí liště.

RS znamená Register Select a toto Arduino používá k informování displeje, kam ukládat data. Připojte tento pin k pinu 12 na Arduinu.

RW znamená pin pro čtení/zápis, který Arduino používá ke kontrole, zda obrazovka zobrazuje to, co jste naprogramovali. Připojte tento kolík k záporné liště na desce.

E znamená Enable, který říká LCD, které pixely má povolit (zapnout) nebo zakázat (vypnout). Připojte tento pin k pinu Arduino 11.

D4, D5, D6 a D7 jsou kolíky displeje, které ovládají zobrazované znaky a písmena. Připojte je k pinům Arduino 5, 4, 3 a 2.

Pin A, někdy označovaný jako LED, je LED anoda pro podsvícení. Připojte to k kladné napájecí liště pomocí drátu nebo s 220ohmovým odporem. Rezistor je lepší pro delší použití, protože šetří LCD, ale pokud se zařízení nebude používat ve dne v noci, nebudete jej potřebovat.

Pin K, někdy také (matoucí) označená LED, je zemnicí kolík LED. Připojte to k pozemní napájecí liště.

Krok 4: Nahrání kódu: Jak na to

Připojte Arduino k USB počítači. Nahrajte následující kód pomocí programátoru Arduino IDE.

#zahrnout

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

neplatné nastavení () {

// nastavení počtu sloupců a řádků na LCD: lcd.begin (16, 2); // Vytiskne zprávu na LCD. lcd.print ("Hertz Pitch:!"); zpoždění (1000); void loop () {// přehrávání zpoždění e4 (600); // pauza 0,6 sekundy tón (10, 329,63, 300); // přehrávání e na bzučák na pinu 10, poslední na 0,3 s lcd.print (" 329,63 "); // zobrazí zprávu na LCD" 329,63"

delay (350); // zpoždění 0,35 sekundy

lcd.clear (); // vymazání LCD a reset pro další zprávu // přehrávání d4# tónu (10, 311,13, 300); lcd.print ("311,13"); zpoždění (350); lcd.clear (); // hrát e4 tón (10, 329,63, 300); lcd.print ("329,63"); zpoždění (350); lcd.clear (); // hrát d4# tón (10, 311,13, 300); lcd.print ("311,13"); zpoždění (350); lcd.clear (); // hrát e4 tón (10, 329,63, 300); lcd.print ("329,63"); zpoždění (350); lcd.clear (); // hrát b3 tón (10, 246,94, 300); lcd.print ("246,94"); zpoždění (400); lcd.clear (); // hrát tón d4 (10, 293,66, 300); lcd.print ("293,66"); zpoždění (400); lcd.clear (); // hrát tón c4 (10, 261,63, 300); lcd.print ("261,63"); zpoždění (400); lcd.clear (); // hrát tón a3 (10, 220, 900); lcd.print ("220,0"); zpoždění (1000); lcd.clear (); // line60 // helpsave // avrdude.failure.eeprom // hrát tón d3 (10, 146,83, 300); lcd.print ("146,63"); zpoždění (350); lcd.clear (); // hrát f3 tón (10, 174,61, 300); lcd.print ("174,61"); zpoždění (400); lcd.clear (); // hrát tón a3 (10, 220, 300); lcd.print ("220"); zpoždění (400); lcd.clear (); // hrát b3 tón (10, 246,94, 900); lcd.print ("246,94"); zpoždění (1000); lcd.clear ();

// hraj e3

tón (10, 164,81, 300); lcd.print ("164,81"); zpoždění (400); lcd.clear (); // hrát g3# tón (10, 207,65, 300); lcd.print ("207,65"); zpoždění (400); lcd.clear (); // hrát b3 tón (10, 246,94, 300); lcd.print ("246,94"); zpoždění (400); lcd.clear (); // hrát tón c4 (10, 261,63, 900); lcd.print ("261,63"); zpoždění (1000); lcd.clear (); // hrát e tón (10, 164,81, 300); lcd.print ("164,81"); zpoždění (400); lcd.clear (); // hrát e4 tón (10, 329,63, 300); lcd.print ("329,63"); zpoždění (400); lcd.clear (); // hrát d4# tón (10, 311,13, 300); lcd.print ("311,13"); zpoždění (400); lcd.clear (); // hrát e4 tón (10, 329,63, 300); lcd.print ("329,63"); zpoždění (400); lcd.clear (); // hrát d4# tón (10, 311,13, 300); lcd.print ("311,13"); zpoždění (400); lcd.clear (); // hrát e4 tón (10, 329,63, 300); lcd.print ("329,63"); zpoždění (400); lcd.clear (); // hrát b3 tón (10, 246,94, 300); lcd.print ("246,94"); zpoždění (400); lcd.clear (); // hrát tón d4 (10, 293,66, 300); lcd.print ("293,66"); zpoždění (400); lcd.clear (); // hrát tón c4 (10, 261,63, 300); lcd.print ("261,63"); zpoždění (400); lcd.clear (); // hrát tón a3 (10, 220, 900); lcd.print ("220,0"); zpoždění (1000); lcd.clear (); // hrát tón d3 (10, 146,83, 300); lcd.print ("146,83"); zpoždění (400); lcd.clear (); // hrát f3 tón (10, 174,61, 300); // eeprom 20--6 yesno, flash 65--0 noy lcd.print ("174,61"); zpoždění (400); lcd.clear (); // hrát tón a3 (10, 220, 300); lcd.print ("220,0"); zpoždění (400); lcd.clear (); // hrát b3 tón (10, 246,94, 900); lcd.print ("246,94"); zpoždění (1000); lcd.clear (); // hrát tón f3 (10, 174,61, 300); lcd.print ("174,61"); zpoždění (400); lcd.clear (); // hrát tón c4 (10, 261,63, 300); lcd.print ("261,63"); zpoždění (400); lcd.clear (); // hrát b3 tón (10, 246,94, 300); lcd.print ("246,94"); zpoždění (400); lcd.clear (); // hrát tón a3 (10, 220, 900); lcd.print ("220,0"); zpoždění (1000); lcd.clear (); // hrát b3 tón (10, 246,94, 300); lcd.print ("246,94"); zpoždění (400); lcd.clear (); // hrát tón c4 (10, 261,63, 300); lcd.print ("261,63"); zpoždění (400); lcd.clear (); // hrát tón d4 (10, 293,66, 300); lcd.print ("293,66"); zpoždění (400); lcd.clear (); // hrát e4 tón (10, 329,63, 900); lcd.print ("329,63"); zpoždění (1000); lcd.clear (); // hrát tón g3 (10, 196, 300); lcd.print ("196,0"); zpoždění (400); lcd.clear (); // hrát tón f4 (10, 349,23, 300); lcd.print ("349,23"); zpoždění (400); lcd.clear (); // hrát e4 tón (10, 329,23, 300); lcd.print ("329,23"); zpoždění (400); lcd.clear (); // hrát tón d4 (10, 293,63, 900); lcd.print ("293,63"); zpoždění (1000); lcd.clear (); // hrát e3 tón (10, 164,81, 300); lcd.print ("164,81"); zpoždění (400); lcd.clear (); // hrát e4 tón (10, 329,63, 300); lcd.print ("329,63"); zpoždění (400); lcd.clear (); // hrát tón d4 (10, 293,63, 300); lcd.print ("293,63"); zpoždění (400); lcd.clear (); // hrát tón c4 (10, 261,63, 900); lcd.print ("261,63"); zpoždění (1000); lcd.clear (); // hrát tón d3 (10, 146,83, 300); lcd.print ("146,83"); zpoždění (400); lcd.clear (); // hrát tón d4 (10, 293,63, 300); lcd.print ("293,63"); zpoždění (400); lcd.clear (); // hrát tón c4 (10, 261,63, 300); lcd.print ("261,63"); zpoždění (400); lcd.clear (); // hrát b3 tón (10, 246,94, 900); lcd.print ("246,94"); zpoždění (1000); lcd.clear (); // hrát e4 tón (10, 329,63, 300); lcd.print ("329,63"); zpoždění (400); lcd.clear (); // hrát d4# tón (10, 311,13, 300); lcd.print ("311,13"); zpoždění (350); lcd.clear (); // hrát e4 tón (10, 329,63, 300); lcd.print ("329,63"); zpoždění (350); lcd.clear (); // hrát d4# tón (10, 311,13, 300); lcd.print ("311,13"); zpoždění (350); lcd.clear (); // hrát e4 tón (10, 329,63, 300); lcd.print ("329,63"); zpoždění (350); lcd.clear (); // hrát b3 tón (10, 246,94, 300); lcd.print ("246,94"); zpoždění (400); lcd.clear (); // hrát tón d4 (10, 293,66, 300); lcd.print ("293,66"); zpoždění (400); lcd.clear (); // hrát tón c4 (10, 261,63, 300); lcd.print ("261,63"); zpoždění (400); lcd.clear (); // hrát tón a3 (10, 220, 900); lcd.print ("220,0"); zpoždění (1000); lcd.clear (); // hrát tón d3 (10, 146,83, 300); lcd.print ("146,83"); zpoždění (350); lcd.clear (); // hrát f3 tón (10, 174,61, 300); lcd.print ("174,61"); zpoždění (400); lcd.clear (); // hrát tón a3 (10, 220, 300); lcd.print ("220,0"); zpoždění (400); // hrát b3 lcd.clear (); tón (10, 246,94, 900); lcd.print ("246,94"); zpoždění (1000); lcd.clear (); // hrát e3 tón (10, 164,81, 300); lcd.print ("164,81"); zpoždění (400); lcd.clear (); // hrát tón g#3 (10, 207,65, 300); lcd.print ("207,65"); zpoždění (400); lcd.clear (); // hrát b3 tón (10, 246,94, 300); lcd.print ("246,94"); zpoždění (400); lcd.clear (); // hrát tón c4 (10, 261,63, 900); lcd.print ("261,63"); zpoždění (1000); zpoždění (300); lcd.clear (); // hrát e3 tón (10, 164,81, 300); lcd.print ("164,81"); zpoždění (400); lcd.clear (); // hrát e4 tón (10, 329,63, 300); lcd.print ("329,63"); zpoždění (400); lcd.clear (); // hrát d4# tón (10, 311,13, 300); lcd.print ("311,13"); zpoždění (400); lcd.clear (); // hrát e4 tón (10, 329,63, 300); lcd.print ("329,63"); zpoždění (400); lcd.clear (); // hrát d4# tón (10, 311,13, 300); lcd.print ("311,13"); zpoždění (400); lcd.clear (); // hrát e4 tón (10, 329,63, 300); lcd.print ("329,63"); zpoždění (400); lcd.clear (); // hrát b3 tón (10, 246,94, 300); lcd.print ("246,94"); zpoždění (400); lcd.clear (); // hrát tón d4 (10, 293,66, 300); lcd.print ("293,66"); zpoždění (400); lcd.clear (); // hrát tón c4 (10, 261,63, 300); lcd.print ("261,63"); zpoždění (400); lcd.clear (); // hrát tón a3 (10, 220, 900); lcd.print ("220,0"); zpoždění (1000); lcd.clear (); // hrát tón d3 (10, 146,83, 300); lcd.print ("146,83"); zpoždění (400); lcd.clear (); // hrát f3 tón (10, 174,61, 300); lcd.print ("174,61"); zpoždění (400); lcd.clear (); // hrát tón a3 (10, 220, 300); lcd.print ("220,0"); zpoždění (400); lcd.clear (); // hrát b3 tón (10, 246,94, 900); lcd.print ("246,94"); zpoždění (1000); lcd.clear (); // hrát f3 tón (10, 174,61, 300); lcd.print ("174,61"); zpoždění (400); lcd.clear (); // hrát tón c4 (10, 261,63, 300); lcd.print ("261,63"); zpoždění (400); lcd.clear (); // hrát b3 tón (10, 246,94, 300); lcd.print ("246,94"); zpoždění (400); lcd.clear (); // hrát tón a3 (10, 220, 900); lcd.print ("220,0"); zpoždění (1000); lcd.clear (); }

Krok 5: Nahrání kódu: Co to všechno znamená?

Pojďme definovat některé funkce v angličtině, abyste kódu porozuměli.

tón (x, y, z); = hrajte tón s výškou y Hertz, na bzučák na pinu x, po z milisekund.

lcd.print ("XYZ"); = vytisknout zprávu se znaky XYZ na LCD obrazovku. (např. zobrazit Hertzovu výšku)

zpoždění (x); = pauza na x milisekund.

const int X = Y = nastavte konstantní proměnnou X na pin Y a pomocí X nebo Y přiřaďte zařízení úkoly.

lcd.clear (); = vymažte LCD obrazovku a resetujte pro nové zobrazení

pinMode (X, VÝSTUP); = nastavit pin X pro režim výstupu

Jakmile porozumíte všem těmto funkcím, můžete proměnné snadno nahradit daty, která shromažďujete při překladu skladby, a poté můžete kódovat vlastní skladbu!

Krok 6: Hotovo !

Hotovo !!!
Hotovo !!!
Hotovo !!!
Hotovo !!!

Buď máte Arduino, které hraje Fur Elise a zobrazuje hodnoty not v Hertz, nebo jste vytvořili Arduino, které hraje melodii zvolené skladby a zobrazuje text, který jste chtěli ukázat. Děkuji vám za návštěvu tohoto tutoriálu a doufám, že vám tento projekt na Arduinu.

Doporučuje: