Мазмұны:

Arduino көмегімен әнді цифрландыру: 6 қадам
Arduino көмегімен әнді цифрландыру: 6 қадам

Бейне: Arduino көмегімен әнді цифрландыру: 6 қадам

Бейне: Arduino көмегімен әнді цифрландыру: 6 қадам
Бейне: Ардуино Уно жиынтығының көмегімен "Бағдаршам Жасау " 2024, Қараша
Anonim
Arduino көмегімен әнді цифрландыру
Arduino көмегімен әнді цифрландыру

Мен екі сүйікті пәнімді біріктірген жоба құрғым келді: ғылым мен музыка. Мен осы екі доменді біріктірудің барлық әдістерін ойладым және Герцте нотаның қадамын көрсете отырып, Ардуиноның «Fur Elise» пьесасын жасау қызықты болар деп ойладым. Енді, құрылысты бастайық!

Сізге бір Arduino Uno немесе Mega, көптеген өтпелі кабельдер, пьезо дыбысы, нан тақтасы, 16*2 өлшемді СКД экраны және барлық тазартқыш түйреуіштері бар 10к потенциометр қажет болады (оларды потметрлер деп те естуге болады)). Құрылысты бастамас бұрын осы жабдықтардың барлығын жинап алған дұрыс.

1 -қадам: Музыкалық баллды цифрлық жазбаларға айналдырыңыз: кешіктіру мәндері

Музыкалық баллды цифрлық жазбаларға айналдырыңыз: кешіктіру мәндері
Музыкалық баллды цифрлық жазбаларға айналдырыңыз: кешіктіру мәндері

Есепті цифрлық баламасына цифрлық түрде көшірудің екі қадамы бар. Біріншіден, бізге жазбаның миллисекундтарда болатын уақытын жазу керек. Мен бұл тапсырма үшін Интернеттен табылған диаграмманы қолдандым. Нотаның жарты нотасы, тоқсандық нотасы, сегізінші нотасы және т.б болатындығына байланысты мен нота ұзындығын миллисекундқа аудардым. Сіз бұл сандарды менің кодымда delay () ретінде көре аласыз; жақша ішіндегі функция мен сан осы қадамда біз анықтаған миллисекундтағы кідіріс мәні болады.

2 -қадам: Музыкалық баллды цифрлық жазбаларға айналдыру: Герц мәндері

Музыкалық баллды сандық жазбаларға айналдырыңыз: Герц мәндері
Музыкалық баллды сандық жазбаларға айналдырыңыз: Герц мәндері

Бұл қадамды бастамас бұрын кейбір техникалық терминдерді анықтауға рұқсат етіңіз. Жазбаның «мәнін» «қадам», «мән» және «ескерту» сөздерімен алмастыруға болады. Енді сіз әннің әрбір нотасын партитурадан оқуыңыз керек. Содан кейін сіз әр жазбаны Герцке аударуыңыз керек, оны Интернеттен оңай табуға болады. Есте сақтау керек бір нәрсе - C ортасы кестеде C4 ретінде көрсетілген, ал жоғары октава C5 және т.б. Бұл жазбалар Герцке көшірілгеннен кейін, сіз мәндерді функция тонына орналастырасыз (x, y, z); мұнда X - пин саны немесе const int, айнымалыларды анықтау әдісі, мен кейінірек түсіндіремін. Y - сіз транскрипциялаған Герц мәні, ал Z - миллисекундтағы нотаның ұзақтығы, жүздікке дәл дөңгелектенеді. Кешіктіру (); мәндер жазбаның ұзақтығы болады. Енді музыканы ойнай алатын схеманы құрайық.

3 -қадам: Схеманың дизайны

Схема дизайны
Схема дизайны

Енді біз барлық жазбаларды компьютер түсінетін цифрлық мәндерге аудардық, схеманы құрудың уақыты келді. Нан тақтасын алып, СКД экранын бірінші түйреуішпен (GND) 14 -ші қатарға қоюдан бастаңыз. Дыбысты дыбысты өзіңіз қалаған жерге қойыңыз және оның жанына потенциометрді қойыңыз. Мақсат - бәрін ретке келтіру, сымдардың бітелуін азайту. Arduino -ны нан тақтасының жанына қойыңыз, 5 вольтті түйреуішті нан тақтасының оң рельсіне, ал жерге қосатын істікті теріс рельске қосыңыз. Енді біз Arduino мен компоненттер арасындағы секіргіштерді қосуға дайынбыз.

Енді, СКД -дегі түйреуіштер туралы және оларды сымға қосу туралы сөйлесейік.

GND жерді білдіреді, бұл тұрақты токтағы теріс сым. Нан тақтасының теріс жолына GND сымын салыңыз.

VCC жалпы коллектордағы кернеуді білдіреді және дәл осы жерде сіз 5 вольтты қуат көзін қосасыз (оң қуат рельсі).

VO контрастты білдіреді, оны потенциометрдің ортаңғы түйреуішіне жалғаңыз. Потенциометрдің сол жақ түйреуішін оң қуат рельсіне, ал оң жақ шнурды жердегі электр рельсіне жалғаңыз.

RS - бұл Register Select дегенді білдіреді және оны Arduino дисплейге деректерді қайда сақтау керектігін айтады. Бұл түйреуішті Arduino -дегі 12 -ші істікке қосыңыз.

RW - оқу/жазу түйреуішін білдіреді, оны Arduino экранда сіз көрсетуге бағдарламалаған нәрсені көрсететінін тексереді. Бұл түйреуішті тақтадағы теріс рельске қосыңыз.

E - Қосу дегенді білдіреді, ол СКД -ге қандай пиксельдерді қосу (қосу) немесе өшіру (өшіру) керектігін айтады. Бұл түйреуішті Arduino pin 11 -ге қосыңыз.

D4, D5, D6 және D7 - дисплей түйрегіштері, олар көрсетілетін таңбалар мен әріптерді басқарады. Оларды тиісінше 5, 4, 3 және 2 түйреуіштеріне қосыңыз.

A сымы, кейде жарықдиодты деп белгіленеді - бұл артқы жарыққа арналған жарықдиодты анод. Мұны сыммен немесе 220 Ом резистормен оң қуат рельсіне қосыңыз. Резисторды ұзақ пайдалану үшін жақсы, өйткені ол СКД -ны үнемдейді, бірақ егер құрылғы күндіз -түні қолданылмайтын болса, сізге резистор қажет емес.

К пині, кейде (шатастыратын) жарық диодты жарықдиодты жарықдиодты жерге тұйықтауыш болып табылады. Мұны жер үсті рельсіне қосыңыз.

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);

жарамсыз орнату () {

// СКД бағандар мен жолдар санын орнатыңыз: lcd.begin (16, 2); // СКД -ге хабарды басып шығару. lcd.print («Hertz Pitch:!»); кешіктіру (1000); void loop () {// e4 кідірісін ойнату (600); // 0,6 секундтық үнмен тоқтау (10, 329,63, 300); // e -сигналды 10 -штырғышта ойнаңыз,.3 секунд lcd.print (« 329.63 «); //» 329.63 «СКД хабарламасын көрсету

кешіктіру (350); //.35 секундқа кешіктіру

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 (); // a3 тонын ойнаңыз (10, 220, 900); lcd.print («220.0»); кешіктіру (1000); lcd.clear (); // line60 // helpsave // 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 (); // a3 тонды ойнау (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 (); // e ton ойнату (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 (); // a3 тонын ойнаңыз (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, flash 65-00 noyes lcd.print («174.61»); кешіктіру (400); lcd.clear (); // a3 тонды ойнаңыз (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 (); // a3 тонын ойнаңыз (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 (); // a3 тонын ойнаңыз (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 (); // a3 тонды ойнау (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 (); // g#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 (); // a3 тонын ойнаңыз (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 (); // a3 тонды ойнаңыз (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 (); // a3 тонын ойнаңыз (10, 220, 900); lcd.print («220.0»); кешіктіру (1000); lcd.clear (); }

5 -қадам: кодты жүктеу: мұның бәрі нені білдіреді?

Кодты түсіну үшін кейбір функцияларды ағылшын тілінде анықтайық.

үн (x, y, z); = у Герц позициясы бар үнді, x пинсіндегі дыбыстық сигналға z миллисекундқа ойнаңыз.

lcd.print («XYZ»); = СКД экранына XYZ таңбалары бар хабарды басып шығару. (мысалы, Герц қадамын көрсету)

кешіктіру (x); = x миллисекундқа кідірту.

const int X = Y = Y айнымалысы үшін тұрақты X айнымалысын орнатыңыз және құрылғыға тапсырмалар тағайындау үшін X немесе Y пайдаланыңыз.

lcd.clear (); = СКД экранын тазалап, жаңа дисплейге ысыру

pinMode (X, OUTPUT); = шығыс режимі үшін X істігін орнатыңыз

Барлық осы функцияларды түсінгеннен кейін, сіз әнді аудару кезінде жиналған деректермен айнымалыларды оңай алмастыра аласыз, содан кейін сіз өзіңіздің әніңізді кодтай аласыз!

6 -қадам: Аяқталды !

Аяқталды !!!
Аяқталды !!!
Аяқталды !!!
Аяқталды !!!

Сізде Fur Elise ойнайтын және Герцте нота мәндерін көрсететін Arduino бар, немесе сіз таңдаған әннің әуенін ойнататын және көрсеткіңіз келетін мәтінді көрсететін Arduino жасадыңыз. Бұл оқулыққа барғаныңыз үшін рахмет, мен сізге Arduino -дағы бұл жобаны үміттенемін.

Ұсынылған: