Para que su proyecto Arduino sea más interactivo, puede ser divertido hacer sonidos basados en ciertas acciones. En este tutorial, veremos cómo reproducir un archivo de audio WAV guardado en una tarjeta SD con Arduino
Requisito previo:leer y escribir en una tarjeta SD , crear o modificar un archivo de audio para Arduino
Equipo
- Computadora
- Arduino UNO x1
- Cable USB para conectar el Arduino a la computadora x1
- Blindaje o módulo para tarjeta SD x1
- Amplificador de audio o módulo de transistor x1
- Altavoz x1
Esquemas
El diagrama de cableado puede variar según lo que esté utilizando. Aquí hay algunas notas para ayudarlo a adaptar este tutorial a su proyecto: En nuestro ejemplo, el pin CS (Selección de chip) del módulo de la tarjeta SD está conectado al pin 10 para comunicarse con la placa Arduino. Este pin puede variar según el escudo utilizado y según dónde conecte el pin. Para obtener más información sobre cómo conectar el módulo de la tarjeta SD, leaeste artículo.
En la placa Arduino UNO, solo el pin 9 es compatible con la biblioteca TMRpcm.h. Consulte la documentación (5,6,11 o 46 para Mega, 9 para Uno, Nano, etc.).
Depending on the speaker used, it is preferable to choose an external voltage source to power the speaker in order to do not damage the Arduino board.
Código para reproducir un archivo de audio
Download y coloque el archivo WAV en la tarjeta SD y luego insértelo en el módulo de la tarjeta SD. Luego puede cargar el siguiente código en la placa Arduino. Para reproducir el archivo de audio, utilizaremos la biblioteca TMRPcm.h que permite reproducir archivos de audio WAV de forma asíncrona desde una tarjeta SD. En este ejemplo, el archivo de audio se reproduce cada segundo.
Funciones a saber:
- tmrpcm.play(char*) para reproducir el archivo
- tmrpcm.setVolume(int) para ajustar el volumen del altavoz
- tmrpcm.stopPlayback() ou tmrpcm.disable() para detener la reproducción
- tmrpcm.isPlaying() para averiguar si el archivo se está reproduciendo
Para más información, consulte la documentación.
//Libraries #include <SD.h> #include <TMRpcm.h> //Constants #define SD_ChipSelectPin 10//4 const int speakerPin = 9; char* file = "bonjour.wav"; //Variables unsigned long previousTime = 0; unsigned long interval = 1000; //Objects TMRpcm tmrpcm; /******************************************************************* MAIN *******************************************************************/ void setup() { /* function setup */ Serial.begin(9600); //Init sd shield if (!SD.begin(SD_ChipSelectPin)) { Serial.println("SD fail"); return; } //Init speaker tmrpcm.speakerPin = speakerPin; tmrpcm.setVolume(3); } void loop() { /* function loop */ if (millis() - previousTime > interval) { activateOutput(); previousTime = millis(); } } /******************************************************************* FUNCTIONS *******************************************************************/ void activateOutput() { /* function activateOutput */ Serial.println("Play sound"); tmrpcm.play(file); while (tmrpcm.isPlaying()) {} //wait until file is played //delay(1000);tmrpcm.stopPlayback(); // or wait 1sec and stop music }
NB: en la función enableOutput (), tiene la opción de no esperar a que se lea el archivo antes de realizar otras acciones. Para eso solo tienes que comentar la línea con while. Ahora puede reproducir cualquier sonido con su placa Arduino.
Fuente
Próximos pasos
Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código