Мазмұны:
- 1 -қадам: Музыкалық баллды цифрлық жазбаларға айналдырыңыз: кешіктіру мәндері
- 2 -қадам: Музыкалық баллды цифрлық жазбаларға айналдыру: Герц мәндері
- 3 -қадам: Схеманың дизайны
- 4-қадам: кодты жүктеу: қалай
- 5 -қадам: кодты жүктеу: мұның бәрі нені білдіреді?
- 6 -қадам: Аяқталды !
Бейне: Arduino көмегімен әнді цифрландыру: 6 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Мен екі сүйікті пәнімді біріктірген жоба құрғым келді: ғылым мен музыка. Мен осы екі доменді біріктірудің барлық әдістерін ойладым және Герцте нотаның қадамын көрсете отырып, Ардуиноның «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 -дағы бұл жобаны үміттенемін.
Ұсынылған:
DSLR көмегімен слайдтар мен фильмнің негативтерін қалай цифрландыру керек: 12 қадам (суреттермен)
DSLR көмегімен слайдтар мен фильмнің негативтерін қалай цифрландыру керек: DSLR немесе макро опциясы бар кез келген камерамен слайдтар мен негативтерді цифрландыруға арналған әмбебап және тұрақты қондырғы. Бұл нұсқаулық - 35 мм негативті қалай цифрландыру керек (жаңартылған шілде 2011 ж.), Оны кеңейту үшін бірнеше жақсартулармен
Hi-fi жүйесін цифрландыру: 6 қадам (суреттермен)
Hi-fi жүйесін цифрландыру: Бұл нұсқаулықта мен аналогты hi-fi жүйесін қалай цифрландырғанымды және веб-радионы қалай іске асырғанымды, NAS-да сақталған музыкалық жинаққа кіруді және т. Raspberry Pi, Hifiberry HAT және жанасу
Yamaha EZ-220-де әнді қалай ойнауға болады: 5 қадам
Yamaha EZ-220 құрылғысында әнді қалай ойнату керек: Бұл қадамдар ән кітабын қолдана отырып, сіздің әніңізді орындауға көмектеседі
Sonic Pi -де музыкалық музыканы қолдана отырып, әнді қалай кодтауға болады: 5 қадам
Әнді Sonic Pi -де парақтық музыканы қолдана отырып қалай кодтау керек: Бұл нұсқаулықта Sonic Pi -дегі парақты музыканы қолдана отырып кодтау кезінде қолданылатын негізгі қадамдар мен код бөліктері көрсетілген! Дайын өнімге дәм қосуға тырысатын миллиондаған басқа код бөліктері бар, сондықтан сіз ойнағаныңызға көз жеткізіңіз
Әнді қадамдық мотормен ойнаңыз !!: 11 қадам (суреттермен)
Әндерді қадамдық мотормен ойнаңыз !!: Бұл жоба қадамдық қозғалтқышпен екі түрлі әрекеттесуге мүмкіндік беретін қарапайым динамикалық интерфейсті жобалауға арналған. қарапайым GUI, ол