Go Down

Topic: Reproducir sonidos desde arduino (Read 2213 times) previous topic - next topic

UndercoverNerd

Hola.
No sé muy bien dónde poner este topic.
El caso es que quiero, como dice el título, reproducir uno o dos sonidos desde arduino cuando se active un sensor, con sonidos me refiero a archivos de sonido, no el típico tono.
Mi duda está en cuál es la manera más eficiente y barata para hacerlo. sé que hay un mp3 shield, pero para lo que quiero, sólo uno o dos archivos, igual es demasiado.
El formato realmente me da igual, que sea mp3, wav, o lo que sea, no tiene que tener mucha calidad.
Supongo que para mp3 sólo se podrá con el shield de mp3, pero he leído por la red que sí se puede reproducir .wav sin necesidad de shield, tan solo con un lector de tarjetas donde se aloje.
El caso es que he probado con las indicaciones de este artículo: http://maxoffsky.com/maxoffsky-blog/how-to-play-wav-audio-files-with-arduino-uno-and-microsd-card/
pero no consigo hacer funcionar esa librería. Lo más que llego es a leer y escribir archivos de la SD, pero no reproducir nada.
He leído también que hace falta algo de Digital Analog converter, pero no tengo muy claro de qué es.

Mi pregunta es, concretando:
Se puede reproducir un archivo de sonido sin necesidad de el shield específico de mp3?
A grandes rasgos, qué haría falta? Conocéis alguna librería que lo haga? (aparte de la que he puesto yo, que estoy investigando los fallos)

Sin más, muchas gracias por vuestras respuestas.

Saludos!

UndercoverNerd

He visto que rambién está esta librería: http://hlt.media.mit.edu/?p=1963 que se llama PCM
Pero me da unos errores que me superan al cargar el sketch de prueba:

<code>

/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c: In function '__vector_17':
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:81: error: 'OCR2A' undeclared (first use in this function)
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:81: error: (Each undeclared identifier is reported only once
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:81: error: for each function it appears in.)
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c: In function 'startPlayback':
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:102: error: 'ASSR' undeclared (first use in this function)
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:102: error: 'EXCLK' undeclared (first use in this function)
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:102: error: 'AS2' undeclared (first use in this function)
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:105: error: 'TCCR2A' undeclared (first use in this function)
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:105: error: 'WGM21' undeclared (first use in this function)
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:105: error: 'WGM20' undeclared (first use in this function)
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:106: error: 'TCCR2B' undeclared (first use in this function)
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:106: error: 'WGM22' undeclared (first use in this function)
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:110: error: 'COM2A1' undeclared (first use in this function)
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:110: error: 'COM2A0' undeclared (first use in this function)
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:111: error: 'COM2B1' undeclared (first use in this function)
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:111: error: 'COM2B0' undeclared (first use in this function)
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:117: error: 'OCR2A' undeclared (first use in this function)
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c: In function 'stopPlayback':
/home/pablo/arduino-1.5.2/libraries/PCM_damellis/PCM.c:154: error: 'TCCR2B' undeclared (first use in this function)
</code>

A ver si alguien entiende algo, porque yo estoy muy perdido aquí.

gracias de nuevo!

curro92


UndercoverNerd

Gracias! Está muy bien, no la conocía esa.
PArece que los problemas que me daba eran por la IDE y la placa. En la Leonardo con la ide 1.5 no tira, pero cuando pongo el Arduino Mega en la ide 1.0 sí que funciona.

También hay que cambiar los pines de SPI del sketch, que vienen por defecto los del uno (11, 12, 13) a los de mega (50, 51, 52) pongo esto por si en un futuro alguien lo lee, como me ha pasado a mí.

Un saludo

YO YA HICE EL CIRCUITO PERO NO PUEDE HACER EL CODIGO ME PUEDEN AYUDAR SOY NUEVO EN ARDUINO

Lisergio

Yo uso la librería TMRpcm, reproduce mp3 desde una SD.. Esta limitada a un bitrate muy bajo pero funciona muy bien...
En mi blog tengo un proyecto de un cuentavueltas para RC que lee los tiempos de cada vuelta usando esta librería, proyecto RiCino.. Échale un ojo, puede servirte de ayuda... Un saludo! ( Lisergio.wordpress.com)

Go Up