fbpixel
Etiquetas: ,

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

arduino-sd-module-speaker_bb Dale voz a tu proyecto Arduino

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