Съдържание:

Дигитализиране на песен с Arduino: 6 стъпки
Дигитализиране на песен с Arduino: 6 стъпки

Видео: Дигитализиране на песен с Arduino: 6 стъпки

Видео: Дигитализиране на песен с Arduino: 6 стъпки
Видео: How to Burn Outseal PLC Nano Bootloader to Arduino Nano 2024, Ноември
Anonim
Дигитализиране на песен с Arduino
Дигитализиране на песен с Arduino

Исках да създам проект, който да комбинира две от любимите ми теми: наука и музика. Мислех за всички начини, по които мога да комбинирам тези два домена, и реших, че би било интересно да накарам Arduino да играе Fur Elise, докато показва височината на нотата в Hertz. Сега, нека започнем да строим!

Ще ви трябват един Arduino Uno или Mega, много джъмпер кабели, пиезо зумер, макет, 16*2 LCD екран с всички щифтове на чистачките и 10k потенциометър (може също да ги чуете като потметри)). Най -добре е да съберете всички тези доставки преди да започнем изграждането.

Стъпка 1: Преобразувайте музикалната партитура в цифрови бележки: стойности на забавяне

Преобразувайте музикалната партитура в цифрови бележки: стойности на забавяне
Преобразувайте музикалната партитура в цифрови бележки: стойности на забавяне

Има две стъпки за цифрово транскрибиране на бележка от партитурата в нейния цифров еквивалент. Първо, ще трябва да напишем времето, което бележката продължава, в милисекунди. Използвах диаграма, намерена онлайн за тази задача. В зависимост от това дали една бележка е наполовина, четвърт, осма и т.н., аз преписах дължината на нотата в милисекунди. Можете да видите тези числа в кода ми като delay (); функция и числото в скобите ще бъде стойността на закъснението в милисекунди, която определихме в тази стъпка.

Стъпка 2: Преобразувайте музикалната партитура в цифрови бележки: Херцови стойности

Преобразувайте музикалната партитура в цифрови бележки: Херцови стойности
Преобразувайте музикалната партитура в цифрови бележки: Херцови стойности

Преди да започна тази стъпка, нека да дефинирам някои технически термини. "Стойността" на нотата може да се използва взаимозаменяемо с думите "височина", "стойност" и "нота". Сега трябва да прочетете всяка нота на песента от партитурата. След това ще трябва да преведете всяка бележка в Hertz, като използвате музика към Hertz таблица, която лесно можете да намерите онлайн. Едно нещо, което трябва да запомните, е, че средната C е посочена като C4 на масата, а октава по -висока е C5 и т.н. След като всички тези бележки бъдат транскрибирани в Hertz, вие ще поставите стойностите във функционалния тон (x, y, z); където X е пинов номер или const int, начин за дефиниране на променливи, който ще обясня по -късно. Y ще бъде стойността на Херц, която току -що сте преписали, а Z ще бъде продължителността на нотата в милисекунди, закръглена до най -близката стотна. Закъснението(); стойностите ще бъдат продължителността на бележката. Сега, нека проектираме веригата, която може да възпроизвежда музиката.

Стъпка 3: Дизайн на верига

Дизайн на вериги
Дизайн на вериги

Сега, когато сме превели всички бележки в цифрови стойности, които компютърът може да разбере, е време да изградим веригата. Започнете, като вземете макет и поставите LCD екрана с първия щифт (GND) в ред 14. Поставете зумера навсякъде, където желаете, и поставете потенциометър до него. Целта е да се подреди всичко, да се сведе до минимум затрупването на проводниците. Поставете Arduino до макетната платка и свържете 5v щифта към положителната релса на макета, а заземяващия щифт към отрицателната шина. Сега сме готови да свържем джъмперите между Arduino и компонентите.

Сега нека поговорим за щифтовете на LCD и как да ги свържете.

GND означава земя, това е отрицателният проводник в постоянен ток. Свържете GND към отрицателната шина на макета.

VCC означава напрежение на общия колектор и тук свързвате вашия 5-волтов източник на захранване (положителната захранваща шина).

VO означава контраст, свържете го към средния щифт на потенциометъра. Свържете левия щифт на потенциометъра към положителната захранваща шина, а десния щифт към заземителната шина.

RS означава Register Select и това се използва от Arduino, за да каже на дисплея къде да съхранява данни. Свържете този щифт към щифт 12 на Arduino.

RW означава пин за четене/запис, който Arduino използва, за да провери дали екранът показва това, което сте го програмирали да показва. Свържете този щифт към отрицателната шина на макета.

E означава Enable, което казва на LCD кои пиксели да активира (включи) или деактивира (изключи). Свържете този щифт към щифт 11 на Arduino.

D4, D5, D6 и D7 са изводи за показване, които контролират показваните символи и букви. Свържете ги съответно към щифтове 5, 4, 3 и 2 на Arduino.

Пин А, понякога обозначен като LED, е LED анодът за подсветката. Свържете това към положителната захранваща шина с проводник или с 220-омов резистор. Резисторът е по -добър за по -продължителна употреба, тъй като спестява LCD, но ако устройството няма да се използва ден и нощ, нямате нужда от резистора.

Пин К, понякога също (объркващо) означен като LED, е светодиодният заземен щифт. Свържете това към заземяващата шина.

Стъпка 4: Качване на код: Как да

Включете вашия Arduino в USB на вашия компютър. Качете следния код с помощта на Arduino IDE програмист.

#включва

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

void setup () {

// настройваме броя на колоните и редовете на LCD дисплея: lcd.begin (16, 2); // Отпечатайте съобщение на LCD дисплея. lcd.print ("Hertz Pitch:!"); забавяне (1000); void loop () {// възпроизвеждане на e4 забавяне (600); // пауза за 0,6 секунди тон (10, 329,63, 300); // възпроизвеждане на e на зумера на пин 10, последно за.3 секунди lcd.print (" 329.63 "); // показва съобщение на LCD" 329.63"

забавяне (350); // забавяне за.35 секунди

lcd.clear (); // изчистване на LCD и нулиране за следващо съобщение // пускане на d4# тон (10, 311.13, 300); lcd.print ("311.13"); забавяне (350); lcd.clear (); // възпроизвеждане на тон e4 (10, 329.63, 300); lcd.print ("329.63"); забавяне (350); lcd.clear (); // възпроизвеждане на d4# тон (10, 311.13, 300); lcd.print ("311.13"); забавяне (350); lcd.clear (); // възпроизвеждане на тон e4 (10, 329.63, 300); lcd.print ("329.63"); забавяне (350); lcd.clear (); // възпроизвеждане на b3 тон (10, 246.94, 300); lcd.print ("246.94"); забавяне (400); lcd.clear (); // възпроизвеждане на d4 тон (10, 293.66, 300); lcd.print ("293.66"); забавяне (400); lcd.clear (); // възпроизвеждане на c4 тон (10, 261.63, 300); lcd.print ("261.63"); забавяне (400); lcd.clear (); // възпроизвеждане на а3 тон (10, 220, 900); lcd.print ("220.0"); забавяне (1000); lcd.clear (); // line60 // helpave // avrdude.failure.eeprom // възпроизвеждане на d3 тон (10, 146.83, 300); lcd.print ("146.63"); забавяне (350); lcd.clear (); // възпроизвеждане на f3 тон (10, 174.61, 300); lcd.print ("174.61"); забавяне (400); lcd.clear (); // възпроизвеждане на а3 тон (10, 220, 300); lcd.print ("220"); забавяне (400); lcd.clear (); // възпроизвеждане на b3 тон (10, 246.94, 900); lcd.print ("246.94"); забавяне (1000); lcd.clear ();

// пускане на e3

тон (10, 164.81, 300); lcd.print ("164.81"); забавяне (400); lcd.clear (); // пускане на g3# тон (10, 207.65, 300); lcd.print ("207.65"); забавяне (400); lcd.clear (); // възпроизвеждане на b3 тон (10, 246.94, 300); lcd.print ("246.94"); забавяне (400); lcd.clear (); // възпроизвеждане на c4 тон (10, 261.63, 900); lcd.print ("261.63"); забавяне (1000); lcd.clear (); // възпроизвеждане на тон (10, 164.81, 300); lcd.print ("164.81"); забавяне (400); lcd.clear (); // възпроизвеждане на e4 тон (10, 329.63, 300); lcd.print ("329.63"); забавяне (400); lcd.clear (); // възпроизвеждане на d4# тон (10, 311.13, 300); lcd.print ("311.13"); забавяне (400); lcd.clear (); // възпроизвеждане на тон e4 (10, 329.63, 300); lcd.print ("329.63"); забавяне (400); lcd.clear (); // възпроизвеждане на d4# тон (10, 311.13, 300); lcd.print ("311.13"); забавяне (400); lcd.clear (); // възпроизвеждане на тон e4 (10, 329.63, 300); lcd.print ("329.63"); забавяне (400); lcd.clear (); // възпроизвеждане на b3 тон (10, 246.94, 300); lcd.print ("246.94"); забавяне (400); lcd.clear (); // възпроизвеждане на d4 тон (10, 293.66, 300); lcd.print ("293.66"); забавяне (400); lcd.clear (); // възпроизвеждане на c4 тон (10, 261.63, 300); lcd.print ("261.63"); забавяне (400); lcd.clear (); // възпроизвеждане на а3 тон (10, 220, 900); lcd.print ("220.0"); забавяне (1000); lcd.clear (); // възпроизвеждане на d3 тон (10, 146.83, 300); lcd.print ("146.83"); забавяне (400); lcd.clear (); // възпроизвеждане на f3 тон (10, 174.61, 300); // eeprom 20–6 yesno, светкавица 65–0 noyes lcd.print ("174.61"); забавяне (400); lcd.clear (); // възпроизвеждане на а3 тон (10, 220, 300); lcd.print ("220.0"); забавяне (400); lcd.clear (); // възпроизвеждане на b3 тон (10, 246.94, 900); lcd.print ("246.94"); забавяне (1000); lcd.clear (); // възпроизвеждане на f3 тон (10, 174.61, 300); lcd.print ("174.61"); забавяне (400); lcd.clear (); // възпроизвеждане на c4 тон (10, 261.63, 300); lcd.print ("261.63"); забавяне (400); lcd.clear (); // възпроизвеждане на b3 тон (10, 246.94, 300); lcd.print ("246.94"); забавяне (400); lcd.clear (); // възпроизвеждане на а3 тон (10, 220, 900); lcd.print ("220.0"); забавяне (1000); lcd.clear (); // възпроизвеждане на b3 тон (10, 246.94, 300); lcd.print ("246.94"); забавяне (400); lcd.clear (); // възпроизвеждане на c4 тон (10, 261.63, 300); lcd.print ("261.63"); забавяне (400); lcd.clear (); // възпроизвеждане на d4 тон (10, 293.66, 300); lcd.print ("293.66"); забавяне (400); lcd.clear (); // възпроизвеждане на тон e4 (10, 329.63, 900); lcd.print ("329.63"); забавяне (1000); lcd.clear (); // възпроизвеждане на g3 тон (10, 196, 300); lcd.print ("196.0"); забавяне (400); lcd.clear (); // възпроизвеждане на f4 тон (10, 349.23, 300); lcd.print ("349.23"); забавяне (400); lcd.clear (); // възпроизвеждане на тон e4 (10, 329.23, 300); lcd.print ("329.23"); забавяне (400); lcd.clear (); // възпроизвеждане на d4 тон (10, 293.63, 900); lcd.print ("293.63"); забавяне (1000); lcd.clear (); // възпроизвеждане на тон e3 (10, 164.81, 300); lcd.print ("164.81"); забавяне (400); lcd.clear (); // възпроизвеждане на тон e4 (10, 329.63, 300); lcd.print ("329.63"); забавяне (400); lcd.clear (); // възпроизвеждане на d4 тон (10, 293.63, 300); lcd.print ("293.63"); забавяне (400); lcd.clear (); // възпроизвеждане на c4 тон (10, 261.63, 900); lcd.print ("261.63"); забавяне (1000); lcd.clear (); // възпроизвеждане на d3 тон (10, 146.83, 300); lcd.print ("146.83"); забавяне (400); lcd.clear (); // възпроизвеждане на d4 тон (10, 293.63, 300); lcd.print ("293.63"); забавяне (400); lcd.clear (); // възпроизвеждане на c4 тон (10, 261.63, 300); lcd.print ("261.63"); забавяне (400); lcd.clear (); // възпроизвеждане на b3 тон (10, 246.94, 900); lcd.print ("246.94"); забавяне (1000); lcd.clear (); // възпроизвеждане на тон e4 (10, 329.63, 300); lcd.print ("329.63"); забавяне (400); lcd.clear (); // възпроизвеждане на d4# тон (10, 311.13, 300); lcd.print ("311.13"); забавяне (350); lcd.clear (); // възпроизвеждане на тон e4 (10, 329.63, 300); lcd.print ("329.63"); забавяне (350); lcd.clear (); // възпроизвеждане на d4# тон (10, 311.13, 300); lcd.print ("311.13"); забавяне (350); lcd.clear (); // възпроизвеждане на e4 тон (10, 329.63, 300); lcd.print ("329.63"); забавяне (350); lcd.clear (); // възпроизвеждане на b3 тон (10, 246.94, 300); lcd.print ("246.94"); забавяне (400); lcd.clear (); // възпроизвеждане на d4 тон (10, 293.66, 300); lcd.print ("293.66"); забавяне (400); lcd.clear (); // възпроизвеждане на c4 тон (10, 261.63, 300); lcd.print ("261.63"); забавяне (400); lcd.clear (); // възпроизвеждане на а3 тон (10, 220, 900); lcd.print ("220.0"); забавяне (1000); lcd.clear (); // възпроизвеждане на d3 тон (10, 146.83, 300); lcd.print ("146.83"); забавяне (350); lcd.clear (); // възпроизвеждане на f3 тон (10, 174.61, 300); lcd.print ("174.61"); забавяне (400); lcd.clear (); // възпроизвеждане на а3 тон (10, 220, 300); lcd.print ("220.0"); забавяне (400); // пускане на b3 lcd.clear (); тон (10, 246.94, 900); lcd.print ("246.94"); забавяне (1000); lcd.clear (); // възпроизвеждане на тон e3 (10, 164.81, 300); lcd.print ("164.81"); забавяне (400); lcd.clear (); // възпроизвеждане на тон#3 (10, 207.65, 300); lcd.print ("207.65"); забавяне (400); lcd.clear (); // възпроизвеждане на b3 тон (10, 246.94, 300); lcd.print ("246.94"); забавяне (400); lcd.clear (); // възпроизвеждане на c4 тон (10, 261.63, 900); lcd.print ("261.63"); забавяне (1000); забавяне (300); lcd.clear (); // възпроизвеждане на тон e3 (10, 164.81, 300); lcd.print ("164.81"); забавяне (400); lcd.clear (); // възпроизвеждане на тон e4 (10, 329.63, 300); lcd.print ("329.63"); забавяне (400); lcd.clear (); // възпроизвеждане на d4# тон (10, 311.13, 300); lcd.print ("311.13"); забавяне (400); lcd.clear (); // възпроизвеждане на e4 тон (10, 329.63, 300); lcd.print ("329.63"); забавяне (400); lcd.clear (); // възпроизвеждане на d4# тон (10, 311.13, 300); lcd.print ("311.13"); забавяне (400); lcd.clear (); // възпроизвеждане на тон e4 (10, 329.63, 300); lcd.print ("329.63"); забавяне (400); lcd.clear (); // възпроизвеждане на b3 тон (10, 246.94, 300); lcd.print ("246.94"); забавяне (400); lcd.clear (); // възпроизвеждане на d4 тон (10, 293.66, 300); lcd.print ("293.66"); забавяне (400); lcd.clear (); // възпроизвеждане на c4 тон (10, 261.63, 300); lcd.print ("261.63"); забавяне (400); lcd.clear (); // възпроизвеждане на а3 тон (10, 220, 900); lcd.print ("220.0"); забавяне (1000); lcd.clear (); // възпроизвеждане на d3 тон (10, 146.83, 300); lcd.print ("146.83"); забавяне (400); lcd.clear (); // възпроизвеждане на f3 тон (10, 174.61, 300); lcd.print ("174.61"); забавяне (400); lcd.clear (); // възпроизвеждане на а3 тон (10, 220, 300); lcd.print ("220.0"); забавяне (400); lcd.clear (); // възпроизвеждане на b3 тон (10, 246.94, 900); lcd.print ("246.94"); забавяне (1000); lcd.clear (); // възпроизвеждане на f3 тон (10, 174.61, 300); lcd.print ("174.61"); забавяне (400); lcd.clear (); // възпроизвеждане на c4 тон (10, 261.63, 300); lcd.print ("261.63"); забавяне (400); lcd.clear (); // възпроизвеждане на b3 тон (10, 246.94, 300); lcd.print ("246.94"); забавяне (400); lcd.clear (); // възпроизвеждане на а3 тон (10, 220, 900); lcd.print ("220.0"); забавяне (1000); lcd.clear (); }

Стъпка 5: Качване на код: Какво означава всичко това?

Нека дефинираме някои функции на английски, за да можете да разберете кода.

тон (x, y, z); = възпроизвеждане на тон с височина y Hertz, до зумер в пин x, за z милисекунди.

lcd.print ("XYZ"); = отпечатайте съобщение със знаците XYZ на LCD екрана. (напр. показване на височината в херца)

забавяне (х); = пауза за x милисекунди.

const int X = Y = задайте константна променлива X към пин Y и използвайте X или Y, за да зададете задачи на устройството.

lcd.clear (); = изчистете LCD екрана и нулирайте за нов дисплей

pinMode (X, OUTPUT); = задайте извод X за изходен режим

След като разберете всички тези функции, можете лесно да замените променливите с данните, които събирате при превод на песен и след това можете да кодирате собствената си песен!

Стъпка 6: Готово !

Готово !!!
Готово !!!
Готово !!!
Готово !!!

Или имате Arduino, който играе Fur Elise и показва нотните стойности в Hertz, или сте направили Arduino, който свири мелодията на избраната от вас песен и показва текст, който искате да покажете. Благодаря ви, че посетихте този урок и се надявам на вас този проект на Arduino.

Препоръчано: