¡Hola!
estoy realizando un proyecto para mi clase de informática, el cual consiste en hacer un afinador de guitarra con el arduino.
La idea es que con la ayuda de un micrófono se detecte la frecuencia de cada cuerda y que con algunos leds te diga si estás cerca del tono o no.
Ya lo logré hacer que el micrófono reciba la señal eléctrica para prender el led, pero no sé cómo saber la frecuencia que esté detectando el micrófono.
¡ Necesito ayuda! =(
nota:
Frecuencia de las cuerdas de la guitarra (Traste 0)
1ra (E): 329,63 Hz
2da (B): 246,94 Hz
3ra (G): 196,00 Hz
4ta (D): 146,83 Hz 11
5ta (A): 110,00 Hz
6ta (E): 82,41 Hz
Este es el código que llevo:
//Cuando el valor excede el umbral,
//el indicador LED parpadea.
#include <FreqMeasure.h>
const int ledPin = 8; // the number of the LED pin
const int umbralvalue=320; //The threshold to turn the led on
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(57600);
FreqMeasure.begin();
}
double sum=0;
int count=0;
void loop() {
int sensorValue = analogRead(A0); //use A0 to read the electrical signal
if(sensorValue<=umbralvalue){
digitalWrite(ledPin,HIGH); //if the value read from A0 is larger than 400,then light the LED
delay(200);
digitalWrite(ledPin,LOW);
if (FreqMeasure.available()){
// average several reading together
sum = sum + FreqMeasure.read();
count = count + 1;
if (count > 30) {
double sensorValue = F_CPU / (sum / count);
Serial.println(sensorValue);
sum = 0;
count = 0;
}
}
}
}