Мазмұны:

Ардуино мен тұрақты ток қозғалтқышымен ән жасау: 6 қадам
Ардуино мен тұрақты ток қозғалтқышымен ән жасау: 6 қадам

Бейне: Ардуино мен тұрақты ток қозғалтқышымен ән жасау: 6 қадам

Бейне: Ардуино мен тұрақты ток қозғалтқышымен ән жасау: 6 қадам
Бейне: How to use 2 channel relay to control AC and DC loads in Arduino 2024, Шілде
Anonim
Arduino мен тұрақты ток қозғалтқышының көмегімен ән шығару
Arduino мен тұрақты ток қозғалтқышының көмегімен ән шығару

Келесі күні Arduino туралы бірнеше мақалаларды айналдыра отырып, мен қысқа әуендерді жасау үшін Arduino басқарылатын қадамдық қозғалтқыштарды қолданатын қызықты жобаны байқадым. Arduino қадамдық моторды музыкалық ноталарға сәйкес келетін белгілі бір жиілікте іске қосу үшін PWM (Pulse Width Modulation) түйреуішін қолданды. Қандай жиіліктер ойнағанын уақыт бойынша қадамдық қозғалтқыштан айқын әуен естіледі.

Алайда, мен оны өзім сынап көргенде, менде сатылы қозғалтқыштың дыбыс шығаратындай жылдам айнала алмайтынын байқадым. Оның орнына мен Arduino -ға бағдарламалау мен қосылу үшін қарапайым DC қозғалтқышты қолдандым. Қозғалтқышты Arduino PWM түйреуішінен оңай шығару үшін қарапайым L293D IC пайдалануға болады, ал Arduino -дағы жергілікті тон () функциясы қажетті жиілікті жасай алады. Бір таңқаларлығы, мен желіде тұрақты ток қозғалтқышын қолданатын мысалдар мен жобаларды таппадым, сондықтан бұл нұсқаулықтар - бұл мәселені шешуге жауап. Бастайық!

P. S. Менің ойымша, сізде Arduino -мен жұмыс тәжірибесі бар және оның бағдарламалау тілі мен аппараттық құралдарымен таныссыз. Сіз массивтердің не екенін, PWM дегеніміз не және оны қалай пайдалану керектігін, кернеу мен токтың қалай жұмыс істейтінін білуіңіз керек, тек бірнеше нәрсені атаңыз. Егер сіз әлі жоқ болсаңыз немесе Arduino -ны енді бастаған болсаңыз, уайымдамаңыз: Arduino ресми веб -сайтының осы бетін көріңіз және дайын болған кезде қайтып оралыңыз.:)

Жабдықтар

  • Ардуино (Мен БҰҰ қолдандым, бірақ қаласаңыз, басқа Arduino қолдануға болады)
  • Стандартты 5В тұрақты ток қозғалтқышы, жақсырақ желдеткіші бар («Схеманы құрастыру» суретін қараңыз)
  • L293D IC
  • Сіз ойнағыңыз келетін әндегі ноталар сияқты көптеген түймелер
  • Нан тақтасы
  • Jumper Wires

1 -қадам: Шолу

Жоба осылай жұмыс істейді: Arduino берілген жиілікте квадрат толқын жасайды, ол L293D шығарады. L293D қозғалтқышты Arduino беретін жиілікте қуаттандыру үшін пайдаланатын сыртқы қуат көзіне қосылады. Тұрақты ток қозғалтқышының білігінің айналуына кедергі келтіре отырып, қозғалтқышты дыбыс немесе нота шығаратын жиілікте өшіру мен қосуды естуге болады. Біз Arduino -ны батырмалар басылған кезде жазбаларды ойнатуға немесе оларды автоматты түрде ойнатуға бағдарламалай аламыз.

2 -қадам: тізбекті жинау

Тізбекті жинау
Тізбекті жинау
Тізбекті жинау
Тізбекті жинау

Схеманы жинау үшін жоғарыдағы Фритзинг диаграммасын орындаңыз.

Кеңес: Қозғалтқыштың нотасы білік айналмаған кезде жақсы естіледі. Мен желдеткішті қозғалтқыштың білігіне қойдым және қозғалтқыш жұмыс істеп тұрған кезде желдеткішті ұстап тұру үшін жабысқақ таспаны қолдандым (суретті қараңыз). Бұл біліктің бұрылуына жол бермеді және айқын, естілетін дыбыс шығарды. Қозғалтқыштан таза дыбыс алу үшін сізге біраз түзету қажет болуы мүмкін.

3 -қадам: Цикл қалай жұмыс істейді

Цикл қалай жұмыс істейді
Цикл қалай жұмыс істейді

L293D - салыстырмалы түрде жоғары вольтты, реле мен қозғалтқыштар сияқты жоғары токты құрылғыларды басқаруға арналған IC. Arduino қозғалтқыштардың көпшілігін тікелей шығысымен басқара алмайды (және қозғалтқыштың ЭҚК -і Arduino -ның сезімтал цифрлық схемасын зақымдауы мүмкін), сондықтан L293D сияқты IC -ді тұрақты ток қозғалтқышын оңай басқару үшін сыртқы қуат көзімен пайдалануға болады. L293D сигналын енгізу Arduino -ға зақым келтірместен тұрақты сигналды тұрақты қозғалтқышқа шығарады.

Жоғарыда L293D мәліметтер кестесінен түйін/функционалдық схемасы берілген. Біз тек 1 қозғалтқышты басқаратындықтан (L293D 2 жүргізе алады), бізге тек IC -тың бір жағы қажет. 8 -түйреуіш - қуат, 4 және 5 -ші түйреуіштер - GND, 1 -түйреуіш - Arduino -дан шығатын PWM, ал 2 -ші және 7 -ші түйреуіштер қозғалтқыштың бағытын бақылайды. 2 түйреуіш жоғары болса және 7 түйреуік төмен болса, қозғалтқыш бір бағытта айналады, ал 2 түйреуіш төмен және 7 түйреуіш жоғары болса, қозғалтқыш басқа бағытта айналады. Біз қозғалтқыштың қай бағытта айналатынына мән бермейтіндіктен, егер олар бір -бірінен өзгеше болса, 2 және 7 түйреуіштердің төмен немесе жоғары болуы маңызды емес. 3 және 6 түйреуіштер қозғалтқышқа қосылады. Қаласаңыз, бәрін басқа жаққа қосуға болады (9-16 түйреуіштер), бірақ қуат пен PWM түйреуіштері орын ауыстыратынын біліңіз.

Ескерту: Егер сізде әр түйме үшін түйреуіштері жоқ Arduino қолданылса, резисторлар желісін қолдана отырып, барлық қосқыштарды бір аналогтық түйреуге қосуға болады, мысалы, осы нұсқаулықта. Бұл қалай жұмыс істейді, бұл жобаның ауқымынан тыс, бірақ егер сіз R-2R DAC-ті қолданған болсаңыз, сіз оны таныс деп білуіңіз керек. Аналогты түйреуішті пайдалану кодтың үлкен бөліктерін қайта жазуды қажет ететінін ескеріңіз, себебі Button кітапханасын аналогтық түйреуіштермен пайдалану мүмкін емес.

4 -қадам: Кодекс қалай жұмыс істейді

Барлық түймелерді басқаруды жеңілдету үшін мен Madleech «Button» деп аталатын кітапхананы қолдандым. Мен бірінші кезекте кітапхананы енгіздім. Әрі қарай, 8-22 жолдарда мен Twinkle, Twinkle, Little Star (әннің үлгісі) ойнауға қажет ноталардың жиілігін, L293D дискісін басқару үшін қолданылатын түйреуішті және түймелерді анықтадым.

Орнату функциясында мен серияны, түймелерді инициализацияладым және L293D драйверінің түйреуішін шығыс режиміне қойдым.

Ақырында, негізгі циклде мен түйменің басылғанын тексердім. Егер бар болса, Arduino сәйкес жазбаны ойнатады және жазбаның атауын сериялық мониторға басып шығарады (сіздің тақтада қандай жазбалар бар екенін білу үшін пайдалы). Егер нота босатылса, arduino noTone () көмегімен кез келген дыбысты тоқтатады.

Өкінішке орай, кітапхананың құрылымына байланысты мен бір жазбаның 2 шартын қолданудан гөрі, батырманың басылғанын немесе босатылғанын тексерудің жолын таба алмадым. Бұл кодтың тағы бір кемшілігі - егер сіз бір уақытта екі түймені бассаңыз, содан кейін біреуін босатсаңыз, онда екі жазбаның да жұмысы тоқтатылады, себебі noTone () қандай жазбаның туындағанына қарамастан, кез келген жазбаларды тоқтатады.

5 -қадам: Әнді бағдарламалау

Жазбаларды ойнату үшін түймелерді пайдаланудың орнына, сіз Arduino -ға автоматты түрде әуен ойнауға бағдарламалай аласыз. Бұл моторда Twinkle, Twinkle, Little Star ойнаған бірінші эскиздің өзгертілген нұсқасы. Эскиздің бірінші бөлігі бірдей - нота жиілігін және тонды анықтайды. Біз жаңа бөлімге bpm = «100» кезінде жетеміз. Мен соққыларды минутына (bpm) орнаттым, содан кейін секундына миллисекундтардың санын анықтау үшін математиканы қолданып, bpm тең. Мұны істеу үшін мен өлшемді талдау деп аталатын әдісті қолдандым (алаңдамаңыз - бұл қиын емес). Егер сіз орта мектепте химия курсын оқыған болсаңыз, онда сіз бірліктерді түрлендіру үшін міндетті түрде өлшемді талдауды қолдандыңыз. Floats () дәлдіктің соңына дейін теңдеудегі ештеңе дөңгелектенбеуін қамтамасыз ету үшін бар.

Бізде ms/beat саны болғаннан кейін, мен музыкада кездесетін әр түрлі ноталар ұзақтығының миллисекундтық мәндерін табу үшін оны сәйкесінше бөлдім немесе көбейттім. Содан кейін мен хронологиялық тәртіппен әр нотаның жиынын жасаймын, ал әр жазбаның ұзақтығы бар. Әр нотаның индексі оның ұзақтығының индексіне сәйкес келуі өте маңызды, әйтпесе сіздің әуеніңіз өшеді. Мен мысал ретінде Twinkle, Twinkle, Little Star жазбаларын енгіздім, бірақ сіз кез келген әнді немесе жазбалар тізбегін көре аласыз.

Нағыз сиқыр цикл функциясында болады. Әр ескертулер үшін мен beat_values массивінде көрсетілген уақыт ішінде үнді ойнаймын. Бұл жерде тонды ойнатпауға себеп болатын кешіктіруді пайдаланудың орнына, millis () функциясымен бағдарлама басталған уақытты жазып алдым және оны ағымдағы уақыттан алып тастадым. Уақыт мен beat_values массивінде жазуды көрсеткен уақыттан асып кетсе, мен жазбаны тоқтатамын. For циклінен кейінгі кідіріс ноталар арасындағы алшақтықты қосады, бұл жиілігі бірдей кейінгі жазбалар бір -бірімен араласпауын қамтамасыз етеді.

6 -қадам: Кері байланыс

Бұл бұл жоба үшін. Егер сізде түсініксіз нәрсе болса немесе ұсыныстарыңыз болса, маған хабарласудан тартынбаңыз. Бұл менің бірінші нұсқаулық болғандықтан, мен бұл мазмұнды жақсарту туралы түсініктемелер мен ұсыныстарға өте ризамын. Келесі кездескенше!

Ұсынылған: