Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Este esboço demonstra a gravação de arquivos WAV padrão que podem ser reproduzidos em qualquer dispositivo que suporte WAVs. A gravação
- usa uma entrada de extremidade única de qualquer um dos pinos de entrada analógica. Usa a referência AVCC (5V) atualmente.
- Requisitos:
- Cartão SD classe 4 ou 6
- Dispositivo de entrada de áudio (microfone, etc)
- Arduino Uno, Nano, Mega, etc.
- Passos:
- 1. Edite pcmConfig.h
- a: Em placas Uno ou não mega, #define buffSize 128. Pode ser necessário aumentar.
- b: Remova o comentário #define ENABLE_RECORDING e #define BLOCK_COUNT 10000UL
- 2. O uso é como abaixo. Consulte https://github.com/TMRh20/TMRpcm/wiki/Advanced-Features#wiki-recording-audio para obter
- informações adicionais.
- Notas: A gravação não funcionará no Modo Múltiplo.
- O desempenho depende muito da velocidade de gravação em SD e da memória usada.
- Melhor desempenho pode ser visto usando a biblioteca SdFat. Veja o exemplo incluído para uso.
- A execução do Arduino a partir de uma bateria ou fonte de alimentação filtrada reduzirá o ruído.
- */
- #include <SD.h>
- #include <SPI.h>
- #include <TMRpcm.h>
- //#define SD_ChipSelectPin 53 //exemplo usa o hardware SS pin 53 no Mega2560
- #define SD_ChipSelectPin 4 //usando o pino digital 4 no arduino nano 328, pode usar outros pinos
- TMRpcm audio; // crie um objeto para uso neste esboço
- void setup() {
- audio.speakerPin = 9; //5,6,11 ou 46 no Mega, 9 no Uno, Nano, etc
- pinMode(12,OUTPUT); //Pares de pinos: 9,10 Mega: 5-2,6-7,11-12,46-45
- Serial.begin(9600);
- if (!SD.begin(SD_ChipSelectPin)) {
- Serial.println("SD Card ERRO!");
- return;
- }else{
- Serial.println("SD OK");
- }
- // A biblioteca de áudio precisa saber qual pino CS usar para gravar
- audio.CSPin = SD_ChipSelectPin;
- audio.quality(1); //Conjunto 1 para 2x superamostragem Conjunto 0 para normal
- }
- void loop() {
- if(Serial.available()){ //Enviar comandos por serial para reproduzir
- switch(Serial.read()){
- case 'r':
- audio.startRecording("test.wav",16000,A0); //Grave na taxa de amostragem de 16khz no pino A0
- break;
- case 'R':
- audio.startRecording("test.wav",16000,A0,1); //Grave, mas com passagem para o alto-falante.
- break;
- case 't':
- audio.startRecording("test.wav",16000,A0,2); // Não grave. Saída direta para o alto-falante
- break; // Nota: Se as amostras forem descartadas antes da gravação,
- // não será ouvido no modo de passagem
- case 's':
- audio.stopRecording("test.wav"); // Pare de gravar
- break;
- case 'p':
- audio.play("test.wav"); //Reproduzir a gravação
- break;
- case 'V':
- audio.volume(1); // Aumentar o volume em 1. Não afeta a gravação
- break;
- case 'v':
- audio.volume(0); // Diminui o volume em 1. Não afeta a gravação
- break;
- case 'S':
- audio.stopPlayback(); //Pare toda a reprodução
- break;
- // exemplo que fiz pra grava 5 audios na raiz do Cartão de Memoria
- case '1':
- audio.startRecording("audio1.wav",16000,A0); //Grave na taxa de amostragem de 16khz no pino A0
- break;
- case '2':
- audio.startRecording("audio2.wav",16000,A0); //Grave na taxa de amostragem de 16khz no pino A0
- break;
- case '3':
- audio.startRecording("audio3.wav",16000,A0); //Grave na taxa de amostragem de 16khz no pino A0
- break;
- case '4':
- audio.startRecording("audio4.wav",16000,A0); //Grave na taxa de amostragem de 16khz no pino A0
- break;
- case '5':
- audio.startRecording("audio5.wav",16000,A0); //Grave na taxa de amostragem de 16khz no pino A0
- break;
- // exemplo que fiz pra grava 5 audios na raiz do Cartão de Memoria
- case '6':
- audio.play("audio1.wav"); //Reproduzir a gravação
- break;
- case '7':
- audio.play("audio2.wav"); //Reproduzir a gravação
- break;
- case '8':
- audio.play("audio3.wav"); //Reproduzir a gravação
- break;
- case '9':
- audio.play("audio4.wav"); //Reproduzir a gravação
- break;
- case '0':
- audio.play("audio5.wav"); //Reproduzir a gravação
- break;
- }
- }
- }
Add Comment
Please, Sign In to add comment