- Потребан хардвер:
- Разумевање функције Тоне () Ардуина:
- Питцхес.х заглавље датотеке:
- Пуштање музичких нота на Ардуину:
- Шема и хардвер:
- Објашњење програма Ардуино:
- Рад овог Ардуино склопа за Мелоди Плаиер:
Ардуино је одличан начин да поједноставите и убрзате своје пројекте микроконтролера, захваљујући својој заједници програмера који су учинили да готово све изгледају једноставно. Овде постоји много Ардуино пројеката за које можете да се потрудите и забавите. Неким вашим пројектима ће можда требати звучна радња да бисте о нечему обавестили или само да бисте импресионирали гледаоце. Шта ако бих вам рекао да готово све тематске песме које би могле да се пуштају на клавиру могу да се опонашају на вашем Ардуину уз помоћ једноставног програма и јефтиног Пиезо звучника?
У овом упутству ћемо научити како је једноставно и лако репродуковати мелодију на Пиезо зујалом или звучнику помоћу функције Ардуино тоне (). На крају овог водича моћи ћете да пустите неке познате тонове Пиратес оф Цариббеан, Црази Фрог, Супер Марио и Титаниц. Такође ћете научити како свирати било који комад клавирске музике са Ардуином. Погледајте Видео на крају.
Потребан хардвер:
- Ардуино (било која верзија - овде се користи УНО)
- Пиезо звучник / зујалица или било који други звучник од 8 ома.
- Бреадбоард
- Повезивање жица
- Тастери
- 1к отпорник (опционално)
Разумевање функције Тоне () Ардуина:
Пре него што схватимо како тон () делује, требало би да знамо како Пиезо зујалица ради. О Пиезо кристалима смо можда научили у нашој школи, он је ништа друго до кристал који претвара механичке вибрације у електричну енергију или обрнуто. Овде примењујемо променљиву струју (фреквенцију) за коју кристал вибрира стварајући звук. Дакле, да би Пиезо зујалица произвела неку буку морамо да Пиезо електрични кристал вибрира, висина и тон буке зависе од брзине кристала. Отуда се тоном и тоном може управљати променом фреквенције струје.
Добро, како ћемо онда добити променљиву фреквенцију од Ардуина ? Ту долази функција тоне (). Тон () може генерисати одређену фреквенцију на одређеном пину. Трајање времена се такође може поменути ако је потребно. Синтакса тона () је
Синтаксни тон (пин, фреквенција) тон (пин, фреквенција, трајање) Параметри пин: пин на којем се генерише фреквенција тона: фреквенција тона у херцима - непотписано инт дуратион: трајање тона у милисекундама (опционално) - непотписано дуго
Вредности пин-а могу бити било које ваше дигиталне пин-ове. Овде сам користио пин број 8. Фреквенција која се може генерисати зависи од величине тајмера на вашој Ардуино плочи. За УНО и већину других уобичајених плоча минимална фреквенција која се може произвести је 31Хз, а максимална фреквенција која се може произвести је 65535Хз. Међутим, ми људи можемо чути само фреквенције између 2000Хз и 5000 Хз.
Питцхес.х заглавље датотеке:
Сада знамо како да произведемо неки шум користећи функцију ардуино тоне () . Али, како да знамо какав ће се тон генерирати за сваку фреквенцију?
Ардуино су нам дали табелу нота која изједначава сваку фреквенцију са одређеним типом музичке ноте. Ову табелу с напоменама првобитно је написао Бретт Хагман, на чијем се раду заснивала команда тоне () . Користићемо ову табелу са белешкама за играње наших тема. Ако сте неко ко је упознат са нотним записима, требало би да имате смисла за ову табелу, за друге попут мене ово је само још један блок кода.
#дефине НОТЕ_Б0 31 #дефине НОТЕ_Ц1 33 #дефине НОТЕ_ЦС1 35 #дефине НОТЕ_Д1 37 #дефине НОТЕ_ДС1 39 #дефине НОТЕ_Е1 41 #дефине НОТЕ_Ф1 44 #дефине НОТЕ_ФС1 46 #дефине НОТЕ_Г1 49 #дефине НОТЕ_ГС1 52 #дефине НОТЕ_А1 55 #дефине НОТЕ_АС1 58 #дефине НОТЕ_Б1 62 #дефине НОТЕ_Ц2 65 #дефине НОТЕ_ЦС2 69 #дефине НОТЕ_Д2 73 #дефине НОТЕ_ДС2 78 #дефине НОТЕ_Е2 82 #дефине НОТЕ_Ф2 87 #дефине НОТЕ_ФС2 93 #дефине НОТЕ_Г2 98 #дефине НОТЕ_ГС2 104 #дефине НОТЕ_А2 110 #дефине НОТЕ_АС2 117 #дефине НОТЕ_Б2 123 #дефине НОТЕ_Ц3 131 #дефине НОТЕ_ЦС3 139 #дефине НОТЕ_Д3 147 #дефине НОТЕ_ДС3 156 #дефине НОТЕ_Е3 165 #дефине НОТЕ_Ф3 175 #дефине НОТЕ_ФС3 185 #дефине НОТЕ_Г3 196 #дефине НОТЕ_ГС3 208 #дефине НОТЕ_А3 220 #дефине НОТЕ_АС3 233 #дефине НОТЕ_Б3 247 #дефине НОТЕ_Ц4 262 #дефине НОТЕ_ЦС4 277 #дефине НОТЕ_Д4 294 #дефине НОТЕ_ДС4 311 #дефине НОТЕ_Е4 330 #дефине НОТЕ_Ф4 349#дефине НОТЕ_ФС4 370 #дефине НОТЕ_Г4 392 #дефине НОТЕ_ГС4 415 #дефине НОТЕ_А4 440 #дефине НОТЕ_АС4 466 #дефине НОТЕ_Б4 494 #дефине НОТЕ_Ц5 523 #дефине НОТЕ_ЦС5 554 #дефине НОТЕ_Д5 587 #дефине НОТЕ_ДС5 622 #дефине НОТЕ_Е5 659 #дефине НОТЕ_Ф5 698 #дефине НОТЕ_ФС5 740 #дефине НОТЕ_Г5 784 #дефине НОТЕ_ГС5 831 #дефине НОТЕ_А5 880 #дефине НОТЕ_АС5 932 #дефине НОТЕ_Б5 988 #дефине НОТЕ_Ц6 1047 #дефине НОТЕ_ЦС6 1109 #дефине НОТЕ_Д6 1175 #дефине НОТЕ_ДС6 1245 #дефине НОТЕ_Е6 1319 #дефине НОТЕ_Ф6 1397 #дефине НОТЕ_ФС6 1480 #дефине НОТЕ_Г6 1568 #дефине НОТЕ_ГС6 1661 #дефине НОТЕ_А6 1760 #дефине НОТЕ_АС6 1865 #дефине НОТЕ_Б6 1976 #дефине НОТЕ_Ц7 2093 #дефине НОТЕ_ЦС7 2217 #дефине НОТЕ_Д7 2349 #дефине НОТЕ_ДС7 2489 #дефине НОТЕ_Е7 2637 #дефине НОТЕ_Ф7 2794 #дефине НОТЕ_ФС7 2960 #дефине НОТЕ_Г7 3136 #дефине НОТЕ_ГС7 3322 #дефине НОТЕ_А7 3520 #дефине НОТЕ_АС73729 #дефине НОТЕ_Б7 3951 #дефине НОТЕ_Ц8 4186 #дефине НОТЕ_ЦС8 4435 #дефине НОТЕ_Д8 4699 #дефине НОТЕ_ДС8 4978
Изнад је код дат у заглављу датотеке питцхес.х у овој зип датотеци , само треба да преузмете и укључите ову датотеку у наш Ардуино код као што је дато на крају овог водича или да користите код дат у зип датотеци.
Пуштање музичких нота на Ардуину:
Да бисмо репродуковали пристојну мелодију користећи Ардуино, требали бисмо знати шта чине ове мелодије. Три главна фактора потребна за репродукцију теме су
- Вредност ноте
- Напомена Трајање
- Темпо
Имамо датотеку заглавља питцхес.х за репродукцију било које вредности ноте, сада бисмо требали сазнати одређено трајање ноте да бисмо је репродуковали. Темпо није ништа друго до брзина мелодије. Једном када сазнате вредност и трајање ноте, можете их користити са тоном () као
тон (пинНаме, вредност ноте, трајање ноте);
За тонове који се пуштају у овом упутству дао сам вам напомену Вредност и трајање ноте у заглављу датотеке „тхемес.х“ помоћу које их можете репродуковати у својим пројектима. Али ако имате било какав тон у свом руднику и желите да га пустите у свом пројекту, прочитајте даље. Иначе прескочите ову тему и спустите се на следећу.
Да бисте свирали било који одређени тон, морате да преузмете нотни запис те музике и да конвертујете нотни запис у Ардуино скицу тако што ћете из ње прочитати вредност ноте и трајање ноте. Ако сте студент музике, то би за вас био комад торте, иначе бисте провели неко време и разбили вам главу као ја. Али на крају дана када ваш тон свира на Пиезо зујачу, ваш труд ће се исплатити.
Када добијете вредност и трајање белешке, учитајте их у програм у заглављу датотеке „тхемес.х“ као што је приказано испод
// ############## ** "ОН ЈЕ ПИРАТ" Тематска песма Пиратес оф цариббеан ** ############## // инт Пиратес_ноте = {НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4 НОТЕ_А3, НОТЕ_Ц4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Е4, НОТЕ_Ф4, НОТЕ_Ф4, НОТЕ_Ф4, НОТЕ_Г4, НОТЕ_Е4, НОТЕ_Е4, НОТЕ_Д4, НОТЕ_Ц4, НОТЕ_Ц4, НОТЕ_Д4, НОТЕ_Д4, 0, НОТ_, НОТ_, НОТ_ НОТЕ_Ц4, НОТЕ_Ц4, НОТЕ_Ц4, НОТЕ_Ц4, НОТЕ_Д4, НОТЕ_Ц4, НОТЕ_Д4, 0, 0, НОТЕ_А3, НОТЕ_Ц4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Д4, НОТЕ_Ф4, НОТЕ_Г4, НОТЕ_Г4, НОТЕ_4, НОТ__4, НОТ__4, НОТ__4 0, НОТЕ_Д4, НОТЕ_Е3, НОТЕ_Ф4, НОТЕ_Ф4, НОТЕ_Г4, НОТЕ_А4, НОТЕ_Д4, 0, НОТЕ_Д4, НОТЕ_Ф4,НОТЕ_Е4, НОТЕ_Е4, НОТЕ_Ф4, НОТЕ_Д4}; инт Пиратес_дуратион = {4,8,4,8,4,8,8,8,8,4,8,4,8,4,8,8,8,4,8,4,8, 4, 8,8,8,8,4,4,8,8,4,4,8,8,4,4,8,8, 8,4,8,8,8,4,4,8,8, 4,4,8,8,4,4,8,4, 4,8,8,8,8,4,4,8,8,4,4,8,8,4,4,8,8, 8,4,8,8,8,4,4,4,8,4,8,8,8,4,4,8,8}; // ########### Енд оф Хе је пиратска песма ############# //
Горњи блок кода приказује вредност ноте и трајање ноте теме „Он је гусар“ из филма Пирати са Кариба. Можете додати своју тему слично овако.
Шема и хардвер:
Шема овог пројекта Ардуино Тоне Генератор Пројекта приказана је на доњој слици:
Веза је прилично једноставна. Имамо Пиезо звучник који је повезан на пин 8 и Гроунд оф Ардуино преко 1К отпорника. Овај отпорник од 1 к је отпорник за ограничавање струје, који се користи за одржавање струје у сигурним границама. Такође имамо четири прекидача за одабир потребне мелодије. Један крај прекидача повезан је са масом, а други крај са пиновима 2, 3, 4 и 5 респективно. Прекидачи ће имати повучене отпорнике који су интерно омогућени помоћу софтвера. Будући да је коло прилично једноставно, може се повезати помоћу плоче за хлеб као што је приказано доле:
Објашњење програма Ардуино:
Једном када схватите концепт, програм Ардуино је прилично напредан. Комплетни код је дат на крају упутства. Ако нисте упознати са додавањем заглавних датотека, можете одавде да преузмете код као ЗИП датотеку и директно га отпремите на свој Ардуино.
Горње две су датотеке заглавља које треба додати. „Питцхес.х“ се користи за изједначавање сваке музичке ноте са одређеном фреквенцијом, а „тхемес.х“ садржи вредност ноте и трајање ноте сва четири тона.
#инцлуде "питцхес.х" #инцлуде "тхемес.х"
Креира се функција за репродукцију сваког тона по потреби. Овде ће се репродуковати тон „Он је гусар“ када се функција Плаи_Пиратес () зове. Ова функција се састоји од тонске функције која производи фреквенцију на пин броју 8. НоТоне (8) се позива да заустави музику након што се репродукује. Ако желите да свирате свој тон, промените Пиратес_ноте и Пиратес_дуратион у нове вредности ноте и трајања које сте сачували у вредности „тхемес.х“
воид Плаи_Пиратес () {фор (инт тхисНоте = 0; тхисНоте <(сизеоф (Пиратес_ноте) / сизеоф (инт)); тхисНоте ++) {инт нотеДуратион = 1000 / Пиратес_дуратион; // претвори трајање у тон кашњења (8, Пиратес_ноте, нотеДуратион); инт паусеБетвеенНотес = нотеДуратион * 1.05; // Овде је 1,05 темпо, повећајте да бисте репродуковали спорије одлагање (паусеБетвеенНотес); ноТоне (8); }}
Пин 2, 3, 4 и 5 користе се за одабир одређеног тона који ће се репродуковати. Ови пинови се подразумевано држе високо користећи унутрашње отпорнике на извлачење помоћу горњег реда кода. Када се дугме притисне, спушта се на земљу.
пинМоде (2, ИНПУТ_ПУЛЛУП); пинМоде (3, ИНПУТ_ПУЛЛУП); пинМоде (4, ИНПУТ_ПУЛЛУП); пинМоде (5, ИНПУТ_ПУЛЛУП);
Испод блока кода се користи за пуштање песме када се притисне дугме. Чита дигиталну вредност сваког дугмета и када се смањи (нула) претпоставља да је дугме притиснуто и репродукује одговарајући тон позивањем потребне функције.
иф (дигиталРеад (2) == 0) {Сериал.принтлн ("Одабрано -> 'Он је гусар'"); Плаи_Пиратес (); } иф (дигиталРеад (3) == 0) {Сериал.принтлн ("Селецтед -> 'Црази Фрог'"); Плаи_ЦразиФрог (); } иф (дигиталРеад (4) == 0) {Сериал.принтлн ("Изабрано -> 'Марио УндерВорлд'"); Плаи_МариоУВ (); } иф (дигиталРеад (5) == 0) {Сериал.принтлн ("Одабрано -> 'Он је гусар'"); Плаи_Пиратес (); }
Рад овог Ардуино склопа за Мелоди Плаиер:
Једном када ваш код и хардвер буду спремни, једноставно нарежите програм на свој Ардуино и требали бисте моћи да репродукујете тон једноставним притиском на дугмад. Ако имате било каквих проблема, погледајте свој серијски монитор за отклањање грешака или користите одељак за коментаре да бисте пријавили проблем и радо ћу вам помоћи.
Комплетан рад пројекта приказан је у видео снимку испод. Надам се да вам се свидео пројекат и да ћете га користити у неком од својих пројеката или да створите нови тон за свој пројекат. Ако је одговор да, слободно поделите свој рад у одељку за коментаре.