Здраво момци, током последњих неколико недеља радио сам на поновном повезивању са љубављу према гитари. Свирајући бок гитару, опуштам се неколико година пре него што је саксофон преузео власт. Враћајући се гитари, након 3 године ретког бубњања акорда, између осталог открио сам да више нисам знао како би свака од жица требало да звучи, да се изразим речима мог пријатеља, „Слух ми више није био подешен“ и као резултат овога, нисам успео да подесим гитару без помоћи тастатуре или мобилне апликације коју сам касније преузео. Седмице су пролазиле до пре неколико дана када је произвођач у мени постао мотивисан и одлучио сам да направим Ардуино тунер за гитару. У данашњем упутству, поделићу вам како да направите свој властити Уради сам Ардуино гитарски тјунер.
Како ради гитарски тјунер
Пре него што пређемо на електронику, важно је разумети принцип који стоји иза израде. Постоји 7 главних музичких нота означених абецедом; А, Б, Ц, Д, Е, Ф, Г и обично се завршавају са другом А која је увек за октаву виша од прве А. У музици постоји неколико верзија ових нота попут прве А и последње А. Ове ноте разликују се свака од својих варијација и једна од друге по једној од карактеристика звука познатој као висина тона. Питцх се дефинише као гласности или ловнесс звука и његовог назначено учесталости тог звука. Пошто су фреквенције ових нота познате, да бисмо утврдили да ли је гитара подешена или не, треба само да упоредимо фреквенцију ноте одређене жице са стварном фреквенцијом ноте коју жица представља.
Фреквенције 7 музичких нота су:
А = 27,50Хз
Б = 30,87Хз
Ц = 16,35Хз
Д = 18,35Хз
Е = 20.60Хз
Ф = 21,83Хз
Г = 24,50 Хз
Свака варијација ових нота је увек на висини једнакој ФкМ где је Ф фреквенција, а М цео број који није нула. Тако је за последњу А која је, као што је раније описано, на октави вишу од прве А, фреквенција;
27,50 к 2 = 55Хз.
Гитара (Леад / бок гитара) обично има 6 жица означених нотама Е, А, Д, Г, Б, Е на отвореној жици. Као и обично, последњи Е биће на октави виши од првог Е. Дизајнираћемо наш тјунер за гитару како бисмо помогли у подешавању гитаре користећи фреквенције ових нота.
Према стандардном подешавању гитаре, нота и одговарајућа фреквенција сваке жице приказани су у доњој табели.
Жице |
Фреквенција |
Нотација |
1 (Е) |
329,63 Хз |
Е4 |
2 (Б) |
246,94 Хз |
Б3 |
3 (Г) |
196,00 Хз |
Г3 |
4 (Д) |
146,83 Хз |
Д3 |
5 (А) |
110,00 Хз |
А2 |
6 (Е) |
82,41 Хз |
Е2 |
Проток Пројекат је прилично једноставан; звучни сигнал који генерише гитара претварамо у фреквенцију, а затим упоређујемо са тачном вредношћу фреквенције струне која се подешава. Гитариста се обавештава помоћу ЛЕД диоде када вредност корелира.
Детекција / конверзија фреквенције укључује 3 главне фазе;
- Појачавајући
- Оффсеттинг
- Аналогно дигитална конверзија (узорковање)
Звучни сигнал који се производи биће преслаб да би Ардуино АДЦ могао да га препозна, па морамо да појачамо сигнал. Након појачања, како бисмо задржали сигнал унутар опсега препознатљивог Ардуиновог АДЦ-а како бисмо спречили одсецање сигнала, смањили смо напон сигнала. Након офсет-а, сигнал се затим преноси на Ардуино АДЦ где се узоркује и добија фреквенција тог звука.
Потребне компоненте
За изградњу овог пројекта потребне су следеће компоненте;
- Ардуино Уно к1
- ЛМ386 к1
- Кондензаторски микрофон к1
- Прикључак за микрофон / аудио к1
- 10к потенциометар к1
- О.1уф кондензатор к2
- Отпор 100 ома к4
- Отпор од 10 ома к1
- 10уф кондензатор к3
- 5мм жута ЛЕД к2
- 5 мм зелена ЛЕД к1
- Нормално отворени тастери к6
- Жице краткоспојника
- Бреадбоард
Шеме
Повежите компоненте као што је приказано на доњем дијаграму гитарског тјунера.
Тастери су повезани без повлачења нагоре / надоле, јер ће се користити уграђени Ардуино отпорници. Ово је ради осигурања што једноставнијег кола.
Ардуино код за гитарски тјунер
Алгоритам иза кода за овај пројекат Гуитар Тунер је једноставан. Да би подесио одређену жицу, гитариста бира жицу притиском на одговарајуће дугме и бубња свирањем отвореном жицом. Звук се сакупља у фази појачања и прослеђује Ардуино АДЦ-у. Фреквенција се декодира и упоређује. Када је улазна фреквенција из низа мања од наведене фреквенције, за тај низ се укључује једна од жутих ЛЕД диода која указује на то да низ треба затегнути. Када је измерена фреквенција већа од предвиђене фреквенције за тај низ, укључује се друга ЛЕД лампица. Када је фреквенција унутар предвиђеног опсега за ту жицу, укључује се зелена ЛЕД лампица која води гитаристу.
Комплетни Ардуино код је дат на крају, овде смо укратко објаснили важне делове кода.
Почињемо са стварањем низа за држање прекидача.
инт буттонарраи = {13, 12, 11, 10, 9, 8}; //
Даље, креирамо низ који садржи одговарајућу фреквенцију за сваку од жица.
флоат фрекарраи = {82.41, 110.00, 146.83, 196.00, 246.94, 329.63}; // све у Хз
Након овога, декларишемо пинове на које су ЛЕД диоде повезане и друге променљиве које ће се користити за добијање фреквенције од АДЦ-а.
инт ловерЛед = 7; инт хигхерЛед = 6; инт јустРигхт = 5; #дефине ЛЕНГТХ 512 бајта равДата; инт цоунт;
Следећа је функција воид сетуп () .
Овде започињемо омогућавањем унутрашњег повлачења на Ардуину за сваки од пинова на које су повезани прекидачи. Након тога постављамо пинове на које су ЛЕД диоде повезане као излазе и покрећемо серијски монитор за приказ података.
воид сетуп () { фор (инт и = 0; и <= 5; и ++) { пинМоде (буттонарраи, ИНПУТ_ПУЛЛУП); } пинМоде (ловерЛед, ОУТПУТ); пинМоде (хигхерЛед, ОУТПУТ); пинМоде (јустРигхт, ОУТПУТ); Сериал.бегин (115200); }
Следећа функција је воид лооп , имплементирамо детекцију и поређење фреквенције.
воид лооп () { иф (цоунт <ЛЕНГТХ) { цоунт ++; равДата = аналогРеад (А0) >> 2; } елсе { сум = 0; пд_стате = 0; инт период = 0; фор (и = 0; и <лен; и ++) { // Аутокорелација сум_олд = сум; сума = 0; за (к = 0; к <лен-и; к ++) сума + = (равДата-128) * (равДата-128) / 256; // Сериал.принтлн (збир); // Пеак Детецт Стате Мацхине иф (пд_стате == 2 && (сум-сум_олд) <= 0) { период = и; пд_стате = 3; } иф (пд_стате == 1 && (сум> тхресх) && (сум-сум_олд)> 0) пд_стате = 2; ако (! и) { врш = сума * 0,5; пд_стате = 1; } } // Фреквенција идентификована у Хз иф (тхресх> 100) { фрек_пер = сампле_фрек / период; Сериал.принтлн (фрек_пер); фор (инт с = 0; с <= 5; с ++) { иф (дигиталРеад (буттонарраи) == ХИГХ) { иф (фрек_пер - фрекарраи <0) { дигиталВрите (ловерЛед, ХИГХ); } елсе иф (фрек_пер - фрекарраи> 10) { дигиталВрите (хигхерЛед, ХИГХ); } елсе { дигиталВрите (јустРигхт, ХИГХ); } } } } цоунт = 0; } }
Комплетан код са видео демонстрацију дат је у наставку. Отпремите код на своју Ардуино плочу и удаљите се.