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
amigo ou amiga… em relação ao transistor… é PNP ou NPN … Amplificador de áudio ou módulo transistor
tem o esquema de ligação de qual transistor:
Olá, é um transístor NPN
Olá amigo… Testei e só dá chiado… Não toca o som … Saberia o que é? Nenhum componente foi substituído, todos da lista estão ali funcionando… Arduíno uno estou usando… Usei um auto falante pequeno, um menor e Já separei a saida e coloquei um amplificador funcionando… Mas nada de som … Somente chiado.
Se adicionar tmrpcm.stopPlayback() ou tmrpcm.disable() o assobio pára? O ficheiro no cartão SD está no formato correto e é lido corretamente?