fbpixel
Etiquetas: , , ,

Para tornar o seu projeto Arduino mais interativo, pode ser divertido colocar sons que correspondam a certas ações. Neste tutorial, veremos como reproduzir um arquivo de áudio WAV gravado num cartão SD com o Arduino

Pré-requisitos: Ler e escrever num cartão SD, Criar ou modificar um arquivo de áudio para o Arduino

Material

  • Computador
  • Arduino UNO
  • Cabo USB para ligar o Arduino ao computador
  • Shield ou módulo de cartão SD
  • Amplificador de áudio ou módulo transistor
  • Caixa de som

Esquema de ligação

arduino-sd-module-speaker_bb Dê voz ao seu projeto Arduino

O esquema de ligação pode variar em função dos componentes utilizados. Algumas informações podem ajudar na adaptação deste tutorial ao seu projeto. No nosso exemplo, o pino CS (Chip Select) do módulo de cartão SD está ligado ao pino 10 para comunicar com a placa Arduino. Este pino pode variar em função do shield utilizado e do local onde se liga o pino. Para mais informações sobre como ligar o módulo de cartão SD, leia este artigo. Na placa Arduino UNO, apenas o pino 9 é compatível com a biblioteca TMRpcm.h. Verifique a documentação (5, 6, 11 ou 46 para Mega; 9 para Uno, Nano, etc.). Dependendo da caixa de som utilizada, é preferível alimentá-la por uma fonte de tensão externa, para não danificar a placa Arduino.

Código para reproduzir um arquivo de áudio

Coloque o arquivo WAV no cartão SD e insira o cartão no módulo SD Card. Em seguida, carregue o código a seguir na placa Arduino. Para reproduzir o arquivo de áudio, utilizaremos a biblioteca TMRPcm.h, que permite reproduzir arquivos de áudio WAV de forma assíncrona a partir de um cartão SD. Neste exemplo, o arquivo de áudio é reproduzido a cada segundo.

Funções para conhecer:

  • tmrpcm.play(char*) para reproduzir o arquivo
  • tmrpcm.setVolume(int) para definir o volume da caixa de som
  • tmrpcm.stopPlayback() ou tmrpcm.disable() para parar a reprodução
  • tmrpcm.isPlaying() para saber se o arquivo está sendo reproduzido

Para mais informações, consulte a documentação.

//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
}

Obs: Na função activateOutput(), é possível optar por não esperar que o arquivo seja lido para executar outras ações. Para isso, basta comentar a linha com while. Agora já pode reproduzir qualquer som com a sua placa Arduino.

Fonte

Próximos passos

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie