fbpixel
Etiquetas:, , ,
0
(0)

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

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

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?