Съдържание:
- Стъпка 1: Преобразувайте музикалната партитура в цифрови бележки: стойности на забавяне
- Стъпка 2: Преобразувайте музикалната партитура в цифрови бележки: Херцови стойности
- Стъпка 3: Дизайн на верига
- Стъпка 4: Качване на код: Как да
- Стъпка 5: Качване на код: Какво означава всичко това?
- Стъпка 6: Готово !
Видео: Дигитализиране на песен с Arduino: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Исках да създам проект, който да комбинира две от любимите ми теми: наука и музика. Мислех за всички начини, по които мога да комбинирам тези два домена, и реших, че би било интересно да накарам 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.
Препоръчано:
Следване на песен Led-мигащ Hack-O-Lantern!: 6 стъпки
Следвайки песен Led-мигащ Hack-O-Lantern!: Направете фенерче, което свири и мига Многоцветни светодиоди към любимата на всички песен за Хелоуин
Money Heist BELLA CIAO Песен в Arduino Uno: 9 стъпки (със снимки)
Money Heist BELLA CIAO Song в Arduino Uno: В този урок ще ви покажа как можете да играете Money Heist Song Bella Ciao във всеки Arduino с помощта на пиезоелектричен зумер. Този готин проект е посветен на всички фенове на Money Heist по целия свят. И така, нека започнем
Тематична песен на PUBG+анимация с Arduino !: 13 стъпки (със снимки)
PUBG Тематична песен+Анимация с Arduino !: Здравейте и добре дошли в тази забавна инструкция! Надявам се всички да сте добре и да сте здрави. Този малък, но невероятен проект е за възпроизвеждане на тематичната песен на PUBG и дори за създаване на някои анимации на играта с помощта на arduino. Използваните компоненти са много
Как да пуснете песен на вашия Yamaha EZ-220: 5 стъпки
Как да пуснете песен на вашия Yamaha EZ-220: Тези стъпки ще ви помогнат да пуснете песента си с помощта на книгата с песни
Arduino Uno Урок #2 - Звуковата песен: 4 стъпки (със снимки)
Arduino Uno Tutorial #2 - Звуковата песен: Здравейте всички, тъй като видях, че първият ми урок беше добър залог, реших, че ще направя поредица от уроци по Arduino Uno за вас