Guest User

Untitled

a guest
Nov 29th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.89 KB | None | 0 0
  1.  
  2. /*
  3. 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
  4. usa uma entrada de extremidade única de qualquer um dos pinos de entrada analógica. Usa a referência AVCC (5V) atualmente.
  5.  
  6. Requisitos:
  7. Cartão SD classe 4 ou 6
  8. Dispositivo de entrada de áudio (microfone, etc)
  9. Arduino Uno, Nano, Mega, etc.
  10.  
  11. Passos:
  12. 1. Edite pcmConfig.h
  13. a: Em placas Uno ou não mega, #define buffSize 128. Pode ser necessário aumentar.
  14. b: Remova o comentário #define ENABLE_RECORDING e #define BLOCK_COUNT 10000UL
  15.  
  16. 2. O uso é como abaixo. Consulte https://github.com/TMRh20/TMRpcm/wiki/Advanced-Features#wiki-recording-audio para obter
  17. informações adicionais.
  18.  
  19. Notas: A gravação não funcionará no Modo Múltiplo.
  20. O desempenho depende muito da velocidade de gravação em SD e da memória usada.
  21. Melhor desempenho pode ser visto usando a biblioteca SdFat. Veja o exemplo incluído para uso.
  22. A execução do Arduino a partir de uma bateria ou fonte de alimentação filtrada reduzirá o ruído.
  23. */
  24.  
  25. #include <SD.h>
  26. #include <SPI.h>
  27. #include <TMRpcm.h>
  28.  
  29. //#define SD_ChipSelectPin 53 //exemplo usa o hardware SS pin 53 no Mega2560
  30. #define SD_ChipSelectPin 4 //usando o pino digital 4 no arduino nano 328, pode usar outros pinos
  31.  
  32. TMRpcm audio; // crie um objeto para uso neste esboço
  33.  
  34. void setup() {
  35.  
  36. audio.speakerPin = 9; //5,6,11 ou 46 no Mega, 9 no Uno, Nano, etc
  37. pinMode(12,OUTPUT); //Pares de pinos: 9,10 Mega: 5-2,6-7,11-12,46-45
  38.  
  39. Serial.begin(9600);
  40.  
  41. if (!SD.begin(SD_ChipSelectPin)) {
  42. Serial.println("SD Card ERRO!");
  43. return;
  44. }else{
  45. Serial.println("SD OK");
  46. }
  47. // A biblioteca de áudio precisa saber qual pino CS usar para gravar
  48. audio.CSPin = SD_ChipSelectPin;
  49. audio.quality(1); //Conjunto 1 para 2x superamostragem Conjunto 0 para normal
  50. }
  51.  
  52.  
  53. void loop() {
  54.  
  55. if(Serial.available()){ //Enviar comandos por serial para reproduzir
  56.  
  57. switch(Serial.read()){
  58.  
  59. case 'r':
  60. audio.startRecording("test.wav",16000,A0); //Grave na taxa de amostragem de 16khz no pino A0
  61. break;
  62. case 'R':
  63. audio.startRecording("test.wav",16000,A0,1); //Grave, mas com passagem para o alto-falante.
  64. break;
  65. case 't':
  66. audio.startRecording("test.wav",16000,A0,2); // Não grave. Saída direta para o alto-falante
  67. break; // Nota: Se as amostras forem descartadas antes da gravação,
  68. // não será ouvido no modo de passagem
  69. case 's':
  70. audio.stopRecording("test.wav"); // Pare de gravar
  71. break;
  72. case 'p':
  73. audio.play("test.wav"); //Reproduzir a gravação
  74. break;
  75. case 'V':
  76. audio.volume(1); // Aumentar o volume em 1. Não afeta a gravação
  77. break;
  78. case 'v':
  79. audio.volume(0); // Diminui o volume em 1. Não afeta a gravação
  80. break;
  81. case 'S':
  82. audio.stopPlayback(); //Pare toda a reprodução
  83. break;
  84.  
  85.  
  86. // exemplo que fiz pra grava 5 audios na raiz do Cartão de Memoria
  87. case '1':
  88. audio.startRecording("audio1.wav",16000,A0); //Grave na taxa de amostragem de 16khz no pino A0
  89. break;
  90. case '2':
  91. audio.startRecording("audio2.wav",16000,A0); //Grave na taxa de amostragem de 16khz no pino A0
  92. break;
  93. case '3':
  94. audio.startRecording("audio3.wav",16000,A0); //Grave na taxa de amostragem de 16khz no pino A0
  95. break;
  96. case '4':
  97. audio.startRecording("audio4.wav",16000,A0); //Grave na taxa de amostragem de 16khz no pino A0
  98. break;
  99. case '5':
  100. audio.startRecording("audio5.wav",16000,A0); //Grave na taxa de amostragem de 16khz no pino A0
  101. break;
  102.  
  103.  
  104. // exemplo que fiz pra grava 5 audios na raiz do Cartão de Memoria
  105. case '6':
  106. audio.play("audio1.wav"); //Reproduzir a gravação
  107. break;
  108. case '7':
  109. audio.play("audio2.wav"); //Reproduzir a gravação
  110. break;
  111. case '8':
  112. audio.play("audio3.wav"); //Reproduzir a gravação
  113. break;
  114. case '9':
  115. audio.play("audio4.wav"); //Reproduzir a gravação
  116. break;
  117. case '0':
  118. audio.play("audio5.wav"); //Reproduzir a gravação
  119. break;
  120.  
  121. }
  122. }
  123. }
Add Comment
Please, Sign In to add comment