Ayuda con este código para un afinador.

Necesito ayuda porque no consigo terminar mi proyecto y lo necesito para el dia 24, el problema esque arme el circuito tal y como lo hace en la descripción, compré los componentes y no consigo que funcione, ya que la afinación no coincide con la generada por sonidos armónicos puros, y además se encienden los tres leds a la vez el que indica que hay que apretar o aflojar la tensión de la cuerda e incluso se enciende a la vez que el led que indica que la cuerda ya está afinada, o indica que la cuerda, nota re está afinada cuando estoy generando una frecuencia que corresponde a la nota do, pienso que tal vez el código puede tener un error, si alguien que sepa de programación le puede echar un vistazo lo agradecería, incluso podría enseñarle a tocar la guitarra si lo desea. Esta es la dirección la cual descargué el proyecto:http://androidelectronic.esy.es/index.php/proyectos/37-afinador
Se encuentra también el codigo y la libreria que usa, esta todo, pero no me funciona correctamente, help me , thanks.

Busca en este foro porque yo mismo he respondido este tema.
No recuerdo si quedó o no resuelto.
Busca afinador guitarra porque asi creo que figuraba

Ok gracias Surbyte, estoy usando arduino R3 y en el esquema viene para arduino R1 o R2, puede tener algo que ver esto?

Me gusta el montaje. Intentaré conseguir el módulo de micro con el MAX4466 y lo probaré.

Carmeloco avíseme si consigue armarlo, me gustaría saber si a usted le funciona porque no consigo que funcione correctamente, mi correo es sesionesflamencas@gmail.com,

FlamencoEstepa, por favor, no me llames de usted, aquí estamos entre colegas, jajajaj

Acabo de pedir el módulo de adafruit, el mismo que pone en la documentación del proyecto.

Modulo Adafruit en ebay.

Cuando me llegue, en unos días, lo monto y lo pruebo

Ok pues ya hablamos cuando lo montes, gracias!

Buenos días, me ha dicho Andrés, el constructor del afinador, que pruebe a sacar por el puerto serie la frecuencia que este recogiendo, y visualizar el valor en el PC. Añade esta linea en el código***:

  if ((FftCount / 4) % 2 != TogState)//Tras 4 FFT realizadas envía el valor de frecuencia
  {
    frecuencia=AvgFreq;
   Serial.println(frecuencia);//***SALIDA MONITOR
...
}

Para así comprobar que emite sonido el microfono, pero dada mi poca experiencia no se como hacerlo, he estado buscando en el foro sobre la comunicación en arduino pero no se como deberá ejecutarlo ya que vienen varios códigos de comunicación

void setup()
{
   // define la velocidad de transferencia a 9600 bps (baudios)
   beginSerial(9600);
}

Y otros códigos por el estilo que no entiendo, no se como adaptar el código que me mando Andrés al codigo que ya tengo del afinador, me salen unas letras muy raras en el monitor serial. Imagino que el microfono si recibe las frecuencias dado que funcionan los leds pero no lo hacen correctamente. Necesito ayuda porque soy nuevo en esto, disculpen mi falta de conocimiento!! Gracias!!

El código original, ya tiene un

Serial.begin(115200); // use the serial port

Pon el puerto serie a esa velocidad.

Por cierto, he intentado compilar el sketch que hay en el zip de la página web que pusiste, usando la librería que también viene, pero me da errores...

Arduino: 1.6.3 (Windows 8.1), Board: "Arduino Uno"

In file included from AFINADOR.ino:13:0:

C:\Users\JoseAngel\Documents\Arduino\libraries\FHT/FHT.h:72:10: error: 'prog_int16_t' does not name a type

 PROGMEM  prog_int16_t _cas_constants[]  = {

          ^

In file included from AFINADOR.ino:13:0:

C:\Users\JoseAngel\Documents\Arduino\libraries\FHT/FHT.h:87:12: error: 'prog_uint8_t' does not name a type

   PROGMEM  prog_uint8_t _reorder_table[]  = {

            ^

In file included from AFINADOR.ino:13:0:

C:\Users\JoseAngel\Documents\Arduino\libraries\FHT/FHT.h:113:12: error: 'prog_uint8_t' does not name a type

   PROGMEM  prog_uint8_t _lin_table[]  = {

            ^

In file included from AFINADOR.ino:13:0:

C:\Users\JoseAngel\Documents\Arduino\libraries\FHT/FHT.h:131:12: error: 'prog_int16_t' does not name a type

   PROGMEM  prog_int16_t _window_func[]  = {

            ^

Error compiling.

  This report would have more information with
  "Show verbose output during compilation"
  enabled in File > Preferences.

Solucionado el tema de la librería. He descargado la última versión, que precisamente, dice que soluciona el error que me da a mi.

http://wiki.openmusiclabs.com/wiki/ArduinoFHT?action=AttachFile&do=get&target=ArduinoFHT2.zip

Eso me pasó ami también, es porque lo tienes que compilar con arduino 1.0.1. y lo cargará perfectamente, usa la FHT que es la libreria que hay que descargar también. En cuanto a lo del monitor serial.He probado con ese puerto y cambia el mensaje del monitor serial pero no se que mas hacer, ahora no detecta ninguna frecuencia en el afinador dado que los leds no cambian como lo hacia antes.

Ok la frecuencia de muestreo recogida por el monitor es de 1024.59 que debo hacer?

A mi me aparece esto por el puerto serie:

*********AFINADOR DE GUITARRA********
ADC clock MHz: 0.125
Sample interval usec: 976.00
Frecuencia de muestreo (Hz): 1024.59

Con el código, sin hacer la modificación que comentabas.

Se me ocurre que, el breakout de micrófono, lleva una resistencia variable por detrás, para ajustar el nivel de salida. Prueba con un ajuste medio, y ve cambiando hacia un lado y hacia el otro. A ver si tienes el nivel de salida del micro muy bajo.

Exacto, esa es la pantalla que me sale a mi también. Andrés me dijo esto pero no se como llevarlo a cabo. Me dijo que desconectara estas lineas

if ((FftCount / 4) % 2 != TogState)//Tras 4 FFT realizadas envia el valor de frecuencia
  {
    frecuencia=AvgFreq;//Copia el valor en la variable final de comparación en la afinación
  /*Serial.print("Numero de FHT's computadas: ");
    Serial.println(FftCount);
    Serial.print("Frecuencia promedio: ");
    Serial.println(AvgFreq);
    Serial.print("Average sampling interval (us): ");
    Serial.println(SampFreqAvg);*/
    TogState = (FftCount / 4) % 2;
    NumFreq = 0;//Reinicio contador frecuencias
  }
}

Para ver la información que esta obteniendo en los muestreos.

La variable AvqFreq es el valor de la frecuencia detectada en ese instante. Para cada nota debería cambiar.

Si he ajustado la rueda de la ganancia en todas posiciones y no funciona correctamente, a mi me da la impresión que le entra demasiada señal incluso con la resistencia variable de ganancia(gain) puesta al mínimo, es como si le entrara demasiada señal o se saturase. Porque suele detectar por ejemplo la nota Re cuando en realidad suena la nota Do desde mi móvil.

Espera a que me lleguen los componentes y te digo algo, no creo que tarden mucho ya en llegar.

Ahora te iba yo apreguntar, ok ya me dices.. gracias!

Hoy me ha llegado el módulo del micrófono de adafruit. Lo pruebo, y veo que el módulo capta sonido, mirádolo con un osciloscopio.

Monto el circuito del afinador, y resulta que me me equivocado con un cable, he puesto la alimentación del módulo al revés y lo he fundido.

Tengo un cabreo que que no veas...

He pedido otro módulo. Cuando me llegue y pruebe te aviso.

Ahora te iba a preguntar yo, ok pues ya me dices cuando lo montes a ver que tal reacciona, un saludo !!

Ahora iba a preguntarte yo, ok pues espero tu respuesta, un saludo!!

Hoy me ha llegado el display de 8 segmentos, y han hecho el envío de DOS módulos de micrófono de adafruit. Espero no romper ninguno más, pero por si a caso, he pedido dos. Tengo todo montado excepto el módulo de micrófono. En cuanto llegue la semana que viene, lo pruebo.