<< Organo de luces (I) - Introducción Organo de luces (III) - Etapa de potencia >>
Obtención de la señal
Como comentaba en el post anterior, en mi caso voy a a utilizar un micrófono como fuente de señal, esto evita tener que conectar la fuente directamente y proporciona más libertad de movimiento.Yo he utilizado un módulo de Dealextreme (como no), el SKU: 135533, que es un módulo detector de sonido con una salida digital y una analógica. Aquí utilizaremos esta última.
Como el nivel de la señal que entrega es muy pequeño, he utilizado un vetusto u741 (pero funcional) que había por un cajón, para adecuar la señal a la entrada del Arduino.
También es posible utilizar directamente un micrófono electret , pero habrá que amplificarlo adecuadamente (podéis encontrar infinidad de esquemas en internet), o bien utilizar un módulo ya amplificado como este
El esquema de montaje es este (clik en las imágenes para ampliar):
Y el montaje este:
Algunos detalles:
- La resistencia de 1k para alimentar el módulo reduce en gran manera el ruido en la alimentación producido por el Arduino, que se traslada luego a la salida.
- El u714 está en una configuración básica de amplificador, a su salida se obtiene una señal de aproximadamente 1Vpp con un offset de 5V/2 ~ 2.5V.
- Como la entradas analógicas de Arduino necesitan señales de 0 a 5V, el divisor de tensión formado por R1/R2 crean un offset de aprox 0.5V para que la señal tenga un rango del 0 a 1 V aprox.
- Para poder medir con mayor precisión, programaremos la referencia del conversor analógico del Arduino como INTERNAL, que tiene un valor de 1,1V en vez de los 5V de defecto.
El código
El código está comentado para poderlo seguir fácilmente, pero veamos básicamente su funcionamiento.
Esta parte contiene una dosis de matemática que puede ser algo aburrida para algunos, si no te interesa simplemente pasa de ella :-).
Inicialización
Se configura como antes hemos dicho la referencia analógica como INTERNAL, para medir tensiones del orden de 1V. También se configura el prescaler a 32 (el prescaler divide la frecuencia de reloj del micro para realizar las conversiones A/D entre otras cosas), para conseguir un a frecuencia de muestreo de unos 38 KHz, lo cual es más que suficiente para este proyecto. Luego se configuran los pines de salida.
Bucle
Se realiza un muestreo de 128 muestras, se pasa pon una función de ventana (Hann), para minimizar los efectos de las discontinuidades al principio y al final del muestreo y luego se aplica la transformada rápida de Fourier con la llamada a fix_fft.
Después de esto en data tenemos los valores de las 64 bandas (Nmuestras/2) .
Como nos interesan en valor absoluto y no las partes reales e imaginarias por separado, calculamos el módulo, y puesto que el valor es algo pequeño lo dejamos al cuadrado.
A continuación sólo queda agrupar los valores en tres bandas (graves, medios y agudos) y en función de si superan un límite activar las salidas.
El límite varía en función de la cantidad de veces que cada canal se enciende, lo que proporciona una cierta realimentación y evita que con los cambios de volumen un canal se sature o no se encienda.
La agrupación de las bandas y los límites los he obtenido probando, podéis realizar vuestras pruebas para obtener otros resultados.
Si te ha gustado no te pierdas el próximo post para ver como conectarlo a bombillas de verdad :
Si te ha gustado no te pierdas el próximo post para ver como conectarlo a bombillas de verdad :
Si te ha gustado, recuerda compartirlo en tu red social favorita. Gracias
hola mucho gusto muy bueno tu proyecto estoy buscando ayuda con el codigo de el paso por cero lo necesito muy urg lo intentado varias veces y no me funciona porfavor si me puedes ayudar mi correo es davidleonardo91@gmail.com para que expliques como se programa el paso por cero gracias de antemano
ResponderEliminarggracias por el proyecto espero ponerlo en practica
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarMuchas gracias por subir tu proyecto. no me quedo muy claro,¿como variaste la frecuencia de muestreo en el IDE ? ¿hay algún modo exacto de calcular la frecuencia de muestreo?, digo como para detectar componentes en una banda de frecuencias en especifico. muchas gracias denuevo, saludos!
ResponderEliminarhe intentado hacer tu proyecto, pero se necesita el archivo "fix_fft" el enlace no deja descargarse
ResponderEliminarVale. He averiguado que del enlace en ingles funciona.
ResponderEliminar@Santiago Navarro
ResponderEliminarPerdón ya está arreglado el enlace.
Gracias.
@Ignacio Daniel Tomasov Silva
ResponderEliminarEstá comentado en el código.
No se cambia desde el IDE, lo que se hace es modificar el valor del prescaler (que se encarga de dividir la frecuencia del reloj para atacar al timer).
Puedes encontrar mucha información en esta página www.arduinoos.com busca lo referente a FFT.
hola queria consultarte si funciona con un microfono de dos patas ( + y - ) y como lo conecto ?
ResponderEliminar@alexander pastene
ResponderEliminarSupongo que te refieres a un micrófono 'electret'.
Se puede utilizar con un preamplificador , como este: Preamplificador electret
La salida "out" puedes conectarla directamente a la patilla A0 del arduino manteniendo el divisor de tension con las resistencias R1/R2.
Lo que no se es que sensibilidad tendrá ... cuestión de probar.
ciao, ho dei problemi con il progetto, ho caricato il codice sull'arduino, ma non funziona. Aiuto grazie.
ResponderEliminarhola, tengo problemas con el proyecto, que he subido del sull'arduino código, pero no funciona. Ayuda gracias.
ResponderEliminar¿Qué se tiene en cuenta para seleccionar los valores de C1, C2 yR3 ?
ResponderEliminarAwesome dude, I wish my Spanish were better.
ResponderEliminar@johnThank you. There is an English version here
ResponderEliminarhola, tengo problemas con el proyecto, me dice que "ADCSRA was not declared in this scope" ¿Podría dar una mano. Gracias.
ResponderEliminarbitWrite(ADCSRA,ADPS2,1);
bitWrite(ADCSRA,ADPS1,0);
bitWrite(ADCSRA,ADPS0,1);
@Iulio Naida
ResponderEliminar¿Qué arduino estás utilizando: Uno, Due, Leonardo, Mega ...?
¿Qué versión del entorno 1.0.5 o anterior?
Arduino Due! 1.5.6 - r2
ResponderEliminarHola! Primeramente felicitarte por la web! es estupenda y muy interesante... Tengo un problemilla, intento entender el código pero todavia estoy muy pez!! Yo estoy intentando que, a partir de un microfono, poder sacar las frecuencias... y de ellas solamente utilizar 3 (que serian proximas a 20000Hz , por ejemplo 19800, 20300 y 20500 , por ejemplo) de tal manera que cuando aparezcan esas frecuencias, se ejecute un código... es posible hacerlo a traves de tu ejemplo?
ResponderEliminar@Iulio Naida
ResponderEliminarUpss!
El Arduino DUE utiliza un micro distintinto, y no es compatible a nivel de registros con el ATMega.
La buena noticia es que es mucho más rápido y no es necesario cambiar el preescaler, simplemente elimina esas tres lineas.
Este comentario ha sido eliminado por el autor.
ResponderEliminar@inside.game.labs@gmail.com
ResponderEliminarGracias por tu comentario!
En realidad tienes que calcular a que banda tienes que prestar atención, en teoría la frecuencia de muestreo es de aprox 38.4Khz y hay 64 bandas, así que 38400/2/64 = 300Hz, es decir que las bandas van 0-300Hz, 301-600Hz, ..., xx-19.200Hz
Para llegar a las frecuencias que necesitas ... tendrías que bajar aún mas el preescaler (a 16 por ejemplo) para llegar a 38400Hz, a costa de perder precisión ...
Te recomiendo esta página Arduinoos que habla ampliamente del tema.
es necesario el arduino uno?? o se puede hacer sin el, de otra forma?
ResponderEliminar@kevin johann
ResponderEliminarSiempre lo puedes hacer con electrónica analógica ...
Busca light organ" en google y encontrarás muchos esquemas.
voy a tratar de hacerlo de tu forma, con el arduino.. pero tengo algunas dudas ya que soy nuevo en esto:
ResponderEliminar--cual es el voltaje de los condensadores?
--cual es el modelo de arduino uno que me sirve para hacer esto?? porque he visto en internet que hay muchos modelos, el r8, etc...
--una vez que se le puso el código en el arduino uno es necesario mantenerlo enchufado a la computadora para su funcionamiento? ya que preferiría una vez que le ponga los códigos poder usarlo sin que este enchufado.
--por ultimo, en la etapa "3", donde se le sube el Voltaje para lamparas de 220V, las resistencias (220; 360; 330) son en "K" o en "OHMS" porque no dice y no me doy cuenta.
desde ya muchas gracias y disculpa las molestias
@kevin johann
ResponderEliminarOk, te respondo
1) Ten en cuenta que el circuito trabaja con 5v, así que con que sean a partir de 10V te valen.
2) Te sirve cualquier modelo de los que usan un AVR atmega: Arduino uno, Arduino leonardo, Arduino Mega, Arduino Nano, Arduino Micro, Arduino pro mini, Arduino Mini. Los más sencillos para empezar: Arduino Uno o el Leonardo, si los quieres mas pequeños el Micro o el Nano.
3) No, una vez que programas el Arduino no necesita el ordenador, sólo una fuente de alimentación.
4) Los valores de las resistencias están en omhs es decir son de 220, 330 y 360 oms.
Saludos.
hola... muy bueno el proyecto... pero al compilar en el arduino uno (1.5.7) me aparece el siguiente error:
ResponderEliminarfix_fft.cpp:209:28: error: 'Sinewave' was not declared in this scope
wi = -pgm_read_word_near(Sinewave + j);
Me podrías ayudar por favor gracias...
Este comentario ha sido eliminado por el autor.
ResponderEliminar@revolution316Tal vez esto te pueda ayudar :
ResponderEliminarhttp://www.devopsview.com/blog/arduino/arduino-yun-fix_fft/
Me pasa lo mismo. Pero el enlace está roto. Ayuda por favor.
Eliminarhola! muchas gracias para muestra este trabajo por tu blog! creo que mi micrófono esta demasiado sensible...pienso que necesito cambiar el prescalar, pero no se como es posible de hacer esto en el código. me puedes avisar por favor?
ResponderEliminar@Kerem
ResponderEliminarPuedes bajar la ganancia del operacional bajando la resistencia de 270K (puedes poner una variable) .
Otra opción es subir los límites de cada canal:
limXXX = 20 + acumXXX*5;
Puedes probar a subir el 20 como valor inicial
hola, gracias por el post ya tengo toda la electronica montada pero me sale este error de compilacion, antes me salia el de mas arriba pero lo arregle con el post sobre el yun.
ResponderEliminarFix_fft\fix_fft.cpp.o: In function `fix_fft(char*, char*, int, int)':
C:\Users\MIsabelCarde\Documents\Arduino\libraries\Fix_fft/fix_fft.cpp:130: multiple definition of `fix_fft(char*, char*, int, int)'
si pudieras ayudarme estaria muy agradecido mi arduino es un duemilanove.
un saludo.
@Anónimo
ResponderEliminarPor lo que pone en el error parece que la librería (fix_fft.cpp) está más de una vez.
Comprueba que que sólo esté como librería y no en la carpeta del proyecto.
¿Me podrías decir para que sirven ambos condensadores? Llevo un rato pensándolo y no se me ocurre.
ResponderEliminar@Anónimo
ResponderEliminarPara bloquear la componente continua
Hola, qué tal? Espero que todo bien. También quería felicitarte por el proyecto, está muy genial. Gracias.
ResponderEliminarHe intentado probarlo, ver el código y descifrarlo, y aún voy en eso; sin embargo, cuando le di en "verificar", me salió un error, que terminé corrigiéndolo después de una ardua lucha en google, para luego darme cuenta que la solución estaba en los comentarios :v En fin, lo copilé y otra vez y me apareció este mensaje:
"
Global variables use 341 bytes (16%) of dynamic memory, leaving 1.707 bytes for local variables. Maximum is 2.048 bytes.
"
No entiendo mucho qué significa, salvo por la ligera sospecha de que la memoria no es suficiente en mi Arduino UNO atmega328p. y google no me da referencia alguna. Aún así, subido y todo, no me funcionó. No creo que las resistencias influyan tanto en su ohmmeaje, y en vez de un 4,7uf le puse uno de 10uf.
Agradecería una respuesta, ya que de verdad quiero montar mi discoteca ochentera en mi cuarto :D Gracias otra vez.
@Joanvahu
ResponderEliminarHoola, otra vez, te cuento que en prueba y prueba me di cuenta que ese mensaje que aparecía no era nada, así que me preguntaba por qué no funcionaba el circuito, revisé y revisé el circuito y todo estaba bien, sin embargo las luces seguían sin responder. Por tanto, aquello me llevó a preguntarme por qué, y en un desespero grité cerca del módulo dealextreme y vi que los leds respondieron ante aquel suceso, y ¡TODO ESTABA BIEN! Solo que no era tan sensible como debe, funciona con frecuencias altas. La nueva interrogante es, ¿cómo lo haría más sensible? Gracias de antemano.
@Joanvahu
ResponderEliminarHay varias opciones ..
1) Cambiar de módulo de sonido ... la verdad es que este módulo como analógico es realmente malo, pero era el que tenía, ahora he probado con un modulo que incluye un Max9812 (lo puedes encontrar en ebay) y no hace falta ni el operacional.
2) Aumentar la ganancia del u741, para ello aumenta la resistencia R3 por ejemplo a 560K o a 1Momh, pero ojo aumentará el ruido.
3) Prueba a cambiar la linea
data[i] = analogRead(0)/4 - 128; // 0..1024 a -128..127
por
data[i] = analogRead(0)/2 - 256; // 0..1024 a -256..256
4) Comentar las lineas en las que se dividen por 2 los acumulados
bajos = bajos/2; ... medio = medios/ 2 ....
5) jugar con los límites
limBajos = 20 + acumBajos*5; // Puedes bajar el 20 o el 5
Todo es probar ....
@Unknown
ResponderEliminar¿Qué enlace?
ERROR DE COMPILACION:
ResponderEliminarfix_fft.cpp:50: error: 'prog_uint8_Sinewave' does not name a type
const prog_uint8_Sinewave[N_WAVE-N_WAVE/4] PROGMEM = {
^
In file included from sketch\fix_fft.cpp:1:0:
sketch\fix_fft.cpp: In function 'int fix_fft(char*, char*, int, int)':
fix_fft.cpp:199: error: 'Sinewave' was not declared in this scope
wr = pgm_read_word_near(Sinewave + j+N_WAVE/4);
^
fix_fft.cpp:209: error: 'Sinewave' was not declared in this scope
wi = -pgm_read_word_near(Sinewave + j);
^
exit status 1
'prog_uint8_Sinewave' does not name a type
Me puedes ayudar? Muchas gracias
Solucionado error de compilación, la solución fue:
ResponderEliminarconst uint8_t Sinewave[N_WAVE-N_WAVE/4] PROGMEM = {
muchas gracias por tu blog.
@cristian
ResponderEliminar1) Si utilizas una resistencia variable para poder ajustar el nivel de la señal, el código no debería cambiar (cuidado si atacas directamente la entrada del Arduino no sobrepase los 5V).
2) En el post siguiente se describe la etapa de potencia para controlar 3 bombillas de 220V aunque con TRIACS no con relés.
@cristian
ResponderEliminarNo estoy seguro, pero según el error "multiple definition of `fix_fftr(char*, int, int)'" parece que esta encontrando esta función duplicada ..
Comprueba que no tengas duplicado en el proyecto (en la carpeta) algún archivo (fix_fft.h o fix_fft.cpp) por ejemplo al haberlo modificado (si has dejado alguna copia como el original)
buenas, como andas? te pregunto lo siguiente para ver si me puedes ayudar ya que no encuentro ciertas cosas.
ResponderEliminar1) en mi pais no consigo 220 Nf 10v, hay algun otro condensador que me sirva? o otra forma de arreglarlo?
2) es lo mismo o me puede servir el BTA08600C en ves de BT137600? ya que no consigo el que tu usas y me recomendaron ese.
espero tu respuesta, saludos
@kjoh
ResponderEliminar1) El valor del condensador no es crítico, es para elmininar la componente continua, cualquier valor posiblemente a partir de 100nF te puede valer, la tensión también puede ser cualquiera a partir de 10v, incluso puedes utilizar uno electrolítico como el de 4,7uF de la siguiente etapa.
2) El triac que utilizo yo es el BT137, pero en cualquier caso te vale cualquiera que soporte los 220V y la carga que vayas a utilizar, normalmente uno de 400v y los amperios necesarios para tu carga (dependiendo de si vas a utilizar disipadores o no deja margen).
El BTA08600C es de 600V 8A, por lo que perfectamente puedes utilizarlo.
cuando le doy verificar me aparece este error. como le soluciono? yo estoy usando lo mismos codigos que vos. es decir lo descargue, y lo abri con el programa de arduino y al momento de verificarlo para subirlo me sale ese error.
ResponderEliminar//comienza error//
Arduino:1.6.9 (Windows 7), Tarjeta:"Arduino/Genuino Uno"
fix_fft.cpp:50: error: 'prog_int8_t' does not name a type
const prog_int8_t Sinewave[N_WAVE-N_WAVE/4] PROGMEM = {
^
In file included from sketch\fix_fft.cpp:1:0:
sketch\fix_fft.cpp: In function 'int fix_fft(char*, char*, int, int)':
fix_fft.cpp:199: error: 'Sinewave' was not declared in this scope
wr = pgm_read_word_near(Sinewave + j+N_WAVE/4);
^
fix_fft.cpp:209: error: 'Sinewave' was not declared in this scope
wi = -pgm_read_word_near(Sinewave + j);
^
exit status 1
'prog_int8_t' does not name a type
Este reporte podría tener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias.
//fin de error//
no se si sera que esta comentado, te agradezco si podes ayudarme o alguna forma que no tenga q hacer mucho en el programa ese ya que no entiendo mucho el arduino y recien estoy empezando jeje
como se conecta el microfono? ya que tiene 4 patas y creo q esta conectado solo 3, puede ser?
ResponderEliminarel "G" esta conectado a...?
-el "AO" esta conectado a...?
-el "+" esta conectado a...?
-el "DO" esta conectado a...?
desde ya muchas gracias
@kevin
ResponderEliminarG -> Ground (Tierra), al negativo
+ -> +5V
A0 -> Salida analógica , esta es la que tienes que utilizar
D0 -> Salida digital, se activa cuando el sonido supera un nivel, esta no se utiliza
@kjoh
ResponderEliminarSi miras en los comentarios más arriba , verás el mismo error y la solución (comentario de jgarp64).
sabes que ahora tengo otro problema, las luces me prenden solo si le soplo al microfono, probe de ponerle un auricular al microfono y ni eso hace que prendan.. tambien probe de subirle la sensibilidad pero ahi prenden permanentemente (no con la musica), le desconecte el microfono y las luces prenden igual.
ResponderEliminar-estoy usando un microfono parecido al tuyo porque ese no lo tenia, use el sku 120318 que es igual creo.
-lo otro es que el condensador de 220Nf en 10V no lo consegui y puse el dos igual osea uso dos condensadores de 4.7Uf en 10V
tendra que ver algo de esto con que no funcione con la musica?
tengo un problema con el microfono, estoy por ejemplo reproducioendo la musica con el celular, si el celular la parte del parlante esta pegado (tocando) funciona, pero donde deje de tocar el celular el microfono deja de funcionar, por que puede ser eso?
ResponderEliminarHola!! Muy buen trabajo para empezar!
ResponderEliminarHe intentado reproducirlo pero no me funciona, mi problema es que no he utilizado las resistencias y condensadores con los mismos valores ( he intentado que sea parecida la configuración), por lo demás todo es igual. Mi pregunta es si es necesario modificar el código si no utilizo los mismos valores que te he comentado.
Desde ya gracias!!
Buenas! Muchas Gracias por el post!! estoy intentando sustituir el microfono por una señal de audio proveida por un plug (rompí unos audífonos para poder hacerlo) mi pregunta es ¿Necesito hacer algun cambio al codigo o al circuito?
ResponderEliminar@Anónimo
ResponderEliminarEs un problema de sensibilidad, el circuito n es muy sensible y estaba pensado para música a volumen alto.
Ahora hay módulos con micrófonos mucho más sensibles.
Puedes probar a subir el valor de R3 para aumentar la sensibilidad
@raul perez nuñez
ResponderEliminarBo, sólo depende del nivel de la señal que llegue, puede que tengas que ajustar con un potenciometro o ajustar el valor de R3
@Dorian López
ResponderEliminarLos valores no son críticos, no debería ser problema ...
Revisa las conexiones por si hubiera algún fallo
@Arduino Guay
ResponderEliminarMe sucede lo mismo, quiero usar el codigo con arduino 1.6.0 con la tarjeta Intel Galileo Gen2.
ademas también dice que 'INTERNAL' no fue declerada.
Que debo hacer? elimino las lineas tambien?
Arduino: 1.6.0 (Windows 8), Board: "Intel® Galileo Gen2"
AudioLuces.ino: In function 'void setup()':
AudioLuces.ino:57:5: error: 'ADCSRA' was not declared in this scope
AudioLuces.ino:57:5: error: 'ADPS2' was not declared in this scope
AudioLuces.ino:58:5: error: 'ADPS1' was not declared in this scope
AudioLuces.ino:59:5: error: 'ADPS0' was not declared in this scope
AudioLuces.ino:63:21: error: 'INTERNAL' was not declared in this scope
Error compiling.
@Mariana Martínez Lozada
ResponderEliminarTendrás que probar ...
El Galileo Gen también lleva un procesador totalmente distinto a los de los Arduinos originales y los registros no son compatibles.
Es un procesador mucho más rápido y seguramente no harán falta esas líneas, pero el poner la referencia INTERNA hace que la entrada analógica sea más sensible (referencia interna de 1.1V frente a 5V), y necesitarás amplificar más la señal.
Ahora hay módulos de micrófono más sensibles que no necesitan amplificación adicional y se pueden conectar directamente al arduino : https://www.adafruit.com/product/1713
Para los que tengan error de copilación, probablemente sea la versión del IDE de arduino que estan utlizando, hay dos soluciones una es modificar la libreria o utilizar la versión 1.5.3 del IDE de arduino.
ResponderEliminarMuy buen trabajo!!! gracias por compartirlo, crees sea factible rehacerlo para raspberry pi?
ResponderEliminarHOLA! Tengo una duda, entonces cuales son los materiales?
ResponderEliminarpor favor
Hola buenas!!! Tengo una consulta: Estoy intentando sustituir el 747 por un tda7297, ya que me esta metiendo mucho ruido el operacional. ¿Valdría el mismo código? y La parte del filtro de 4,7uF y las dos resistencias de 2,7K y 27K ¿hace falta o perfectamente se puede quitar?
ResponderEliminarMuchas gracias
Hola, me ha gustado mucho tu proyecto, así que he decidido realizarlo, lo tengo todo, pero a la hora de compilar me da un error debido a la ligreria fix_fft. El caso es que cuando compilo me da el siguiente error:
ResponderEliminarexit status 1
Error compilando para la tarjeta Arduino/Genuino Uno.
Este error desaparece cuando comento la línea de la inclusión de la librería y otra que hace referencia a esa librería. Pero claro, ya no es lo mismo. Me podrías decir como arreglar este error? Uso un arduino UNO.
hola tengo una duda al compilar me sale el siguiente error,
ResponderEliminarArduino:1.8.13 (Windows 10), Tarjeta:"Arduino Uno"
C:\Users\katz\Documents\Arduino\libraries\Fix_fft\fix_fft.cpp:50:7: error: 'prog_int8_t' does not name a type; did you mean 'printf_P'?
const prog_int8_t Sinewave[N_WAVE-N_WAVE/4] PROGMEM = {
^~~~~~~~~~~
printf_P
In file included from C:\Users\katz\Documents\Arduino\libraries\Fix_fft\fix_fft.cpp:1:0:
C:\Users\katz\Documents\Arduino\libraries\Fix_fft\fix_fft.cpp: In function 'int fix_fft(char*, char*, int, int)':
C:\Users\katz\Documents\Arduino\libraries\Fix_fft\fix_fft.cpp:199:28: error: 'Sinewave' was not declared in this scope
wr = pgm_read_word_near(Sinewave + j+N_WAVE/4);
^
C:\Users\katz\Documents\Arduino\libraries\Fix_fft\fix_fft.cpp:209:28: error: 'Sinewave' was not declared in this scope
wi = -pgm_read_word_near(Sinewave + j);
^
exit status 1
Error compilando para la tarjeta Arduino Uno.
Este informe podría contener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias.
un compañero "jgarp64" tubo el mismo problema y encontró la solución que fue
Solucionado error de compilación, la solución fue:
const uint8_t Sinewave[N_WAVE-N_WAVE/4] PROGMEM = {
muchas gracias por tu blog.
pero no entiendo bien cual fue la solución, soy principiante en arduino y me gusto mucho tu proyecto, saludos
hola ya pude solucionarlo el problema era modificar la libreria fix_fft.cpp en lugar de
ResponderEliminarconst prog_int8_t Sinewave[N_WAVE-N_WAVE/4] PROGMEM = {
es " const uint8_t Sinewave[N_WAVE-N_WAVE/4] PROGMEM = { "
y compilo correctamente :D , gracias por el proyecto saludos.