- Com funciona el sintonitzador de guitarra
- Components necessaris
- Esquemes
- Codi Arduino per a afinador de guitarra
Hola nois, durant les últimes setmanes he estat treballant per tornar a connectar amb el meu amor per la guitarra. Tocar la guitarra de caixa va ser com em relaxo fa uns anys abans que el saxòfon prengués el relleu. Tornant a la guitarra, després de 3 anys rarament tocant un acord, vaig descobrir, entre altres coses, que ja no sabia com havia de sonar cadascuna de les cordes, per dir-ho en paraules del meu amic: "La meva audició ja no estava afinada" i Com a resultat d'això, no vaig poder afinar la guitarra sense l'ajut d'un teclat o d'una aplicació mòbil que més tard vaig descarregar. Les setmanes van transcórrer fins fa pocs dies, quan el creador de mi estava motivat i vaig decidir construir un sintonitzador de guitarra basat en Arduino. Al tutorial d’avui, compartiré com es construeix el vostre propi sintonitzador de guitarra Arduino.
Com funciona el sintonitzador de guitarra
Abans de passar a l'electrònica, és important entendre el principi darrere de la construcció. Hi ha 7 notes musicals principals denotades pels alfabets; A, B, C, D, E, F, G i generalment acaben amb una altra A que sempre és a una octava més alta que la primera A. En la música existeixen diverses versions d’aquestes notes com la primera A i l’última A. Aquestes notes es distingeixen cadascun de la seva variació i els uns dels altres per una de les característiques del so conegut com a to. El to es defineix com la intensitat o la baixesa del so i s’indica mitjançant la freqüència d’aquest so. Com que es coneix la freqüència d’aquestes notes, per determinar si la guitarra està afinada o no, només hem de comparar la freqüència de la nota de la corda concreta amb la freqüència real de la nota que representa la corda.
Les freqüències de les 7 notes musicals són:
A = 27,50 Hz
B = 30,87 Hz
C = 16,35 Hz
D = 18,35 Hz
E = 20,60 Hz
F = 21,83 Hz
G = 24,50 Hz
Cada variació d’aquestes notes sempre té un to igual a FxM on F és la freqüència i M és un enter diferent de zero. Per tant, per a l'última A que, com es va descriure anteriorment, és a una octava superior a la primera A, la freqüència és;
27,50 x 2 = 55Hz.
La guitarra (guitarra principal / caixa) sol tenir 6 cordes indicades per les notes E, A, D, G, B, E a corda oberta. Com és habitual, el darrer E serà a una octava més alta que el primer E. Dissenyarem el nostre afinador de guitarra per ajudar a sintonitzar la guitarra utilitzant les freqüències d’aquestes notes.
Segons la sintonització de guitarra estàndard, la nota i la freqüència corresponent de cada corda es mostren a la taula següent.
|
Cordes |
Freqüència |
Notació |
|
1 (E) |
329,63 Hz |
E4 |
|
2 (B) |
246,94 Hz |
B3 |
|
3 (G) |
196,00 Hz |
G3 |
|
4 (D) |
146,83 Hz |
D3 |
|
5 (A) |
110,00 Hz |
A2 |
|
6 (E) |
82,41 Hz |
E2 |

El flux del projecte és bastant senzill; convertim el senyal de so generat per la guitarra en una freqüència i després el comparem amb el valor de freqüència exacte de la corda que s’està sintonitzant. El guitarrista es notifica mitjançant un LED quan el valor es correlaciona.
La detecció / conversió de freqüència inclou tres etapes principals;
- Amplificant
- Compensació
- Conversió analògica a digital (mostreig)
El senyal de so que es produeix serà massa feble perquè l’ADC d’Arduino el reconegui, de manera que hem d’ amplificar el senyal. Després de l'amplificació, per mantenir el senyal dins del rang reconeixible per l'ADC d'Arduino per evitar el retall del senyal, compensem el voltatge del senyal. Després de la compensació, el senyal es passa a l' Arduino ADC on es mostra i s'obté la freqüència d'aquest so.
Components necessaris
Els components següents són necessaris per construir aquest projecte;
- Arduino Uno x1
- LM386 x1
- Mic de condensador x1
- Connector de micròfon / àudio x1
- Potenciòmetre 10k x1
- O.1uf condensador x2
- Resistència de 100ohms x4
- 10 ohms de resistència x1
- Condensador de 10uf x3
- LED groc de 5 mm x2
- LED verd de 5 mm x1
- Botons premuts normalment oberts x6
- Filferros de pont
- Taula de pa
Esquemes
Connecteu els components tal com es mostra al diagrama del circuit del sintonitzador de guitarra.

Els polsadors estan connectats sense resistències de pujada / baixada perquè s’utilitzaran les resistències de tracció integrades d’Arduino. Això és per garantir que el circuit sigui el més senzill possible.

Codi Arduino per a afinador de guitarra
L’algorisme darrere del codi d’aquest projecte Guitar Tuner Project és senzill. Per afinar una corda concreta, el guitarrista selecciona la corda prement el polsador corresponent i toca les cordes obertes. El so es recull a l’etapa d’amplificació i es transmet a l’Arduino ADC. La freqüència es descodifica i es compara. Quan la freqüència d'entrada de la cadena és inferior a la freqüència especificada, per a aquesta cadena s'encén un dels LED grocs que indica que s'hauria de tensar la cadena. Quan la freqüència mesurada és superior a la freqüència estipulada per a aquesta cadena, s’encén un altre LED. Quan la freqüència està dins del rang estipulat per a aquesta corda, s'encén el LED verd per guiar el guitarrista.
Al final es dóna un codi Arduino complet, aquí hem explicat breument les parts importants del codi.
Comencem creant una matriu per mantenir els commutadors.
int buttonarray = {13, 12, 11, 10, 9, 8}; //
A continuació, creem una matriu per contenir la freqüència corresponent per a cadascuna de les cadenes.
freqarray flotant = {82,41, 110,00, 146,83, 196,00, 246,94, 329,63}; // tot en Hz
Amb això, declarem els pins als quals estan connectats els LED i altres variables que s'utilitzaran per obtenir la freqüència de l'ADC.
int lowerLed = 7; int higherLed = 6; int justRight = 5; #define LENGTH 512 byte rawData; int recompte;
A continuació, es mostra la funció void setup () .
Comencem activant el llançament intern de l'Arduino per a cadascun dels pins als quals estan connectats els commutadors. Després, configurem els pins als quals es connecten els LED com a sortides i llancem el monitor sèrie per mostrar les dades.
void setup () { for (int i = 0; i <= 5; i ++) { pinMode (buttonarray, INPUT_PULLUP); } pinMode (lowerLed, OUTPUT); pinMode (higherLed, OUTPUT); pinMode (justRight, OUTPUT); Serial.begin (115200); }
A continuació, és la funció de bucle buit , implementem la detecció de freqüència i la comparació.
bucle buit () { if (count <LONGITUD) { count ++; RawData = analogRead (A0) >> 2; } else { sum = 0; pd_state = 0; int període = 0; for (i = 0; i <len; i ++) { // Autocorrelació sum_old = sum; suma = 0; per a (k = 0; k <len-i; k ++) suma + = (rawData-128) * (rawData-128) / 256; // Serial.println (suma); // Peak Detect State Machine if (pd_state == 2 && (sum-sum_old) <= 0) { period = i; pd_state = 3; } if (pd_state == 1 && (suma> batre) && (sum-sum_old)> 0) pd_state = 2; si (! i) { batre = suma * 0,5; pd_state = 1; } } // Freqüència identificada en Hz si (batre> 100) { freq_per = sample_freq / period; Serial.println (freq_per); for (int s = 0; s <= 5; s ++) { if (digitalRead (buttonarray) == HIGH) { if (freq_per - freqarray <0) { digitalWrite (lowerLed, HIGH); } else if (freq_per - freqarray> 10) { digitalWrite (superiorLed, HIGH); } else { digitalWrite (justRight, HIGH); } } } } recompte = 0; } }
A continuació es mostra el codi complet amb un vídeo de demostració. Pengeu el codi a la vostra placa Arduino i passeu-lo.
