sábado, junho 03, 2017

SHIELD WAVE 3.0

Este sketch utiliza o Wave Shield V3.0 para reproduzir sons no formato ad4 armazenados em um cartão de memória de 2G. O sketch geral foi disponibilizado pela empresa que produz o shield – a Elechouse (www.elechouse.com). Também no site da empresa tem disponibilizado o manual de utilização e o link para baixar o conversor para arquivos de som no formato ad4. Após a conversão dos arquivos, eles deverão ser gravados no cartão de memória com nomes em hexadecimal (ver sketch).
No sketch aqui apresentado foram feitas modificações na parte dos arquivos, nos delays, que correspondem à duração de cada música, e na apresentação dos títulos na porta serial. Também foi comentada as linhas que alteram o volume, o que deixa o volume de saída como máximo. Caso se queira um volume mais baixo é só efetivar a linha para o volume igual a quatro.  
O sketch ainda não está com todo o potencial do shield explorado e, apesar de se ter o título na porta serial quando em reprodução normal, se apertar a tecla para o som anterior ou posterior o título não aparece devido ao delay do som que estava tocando. No entanto, como se tem muito pouco material elucidativo sobre este shield o que aqui é apresentado pode facilitar o aprimoramento de sketchs sobre o Wave 3.0, além de facilitar o entendimento dos alunos do projeto de robótica da escola Doutor Pedro Velho.

Abaixo a imagem da montagem feita com o Wave 3.0 utilizando um alto-falante (pode ser também um fone de ouvido na entrada correspondente), módulo amplificador com fonte própria (opcional), Wave 3.0 com cartão de memória de 2 giga e uma placa Arduino UNO. Na sequência o sketch com as modificações já declaradas acima, complementando o módulo dos sketchs com som do projeto ROBÓTICA NA ESCOLA.


/*
*************************************************
PROJETO ROBÓTICA NA ESCOLA 2017  
   USANDO O WAVE SHIELD V3.0
      PARA REPRODUZIR SOM
   EE DR PEDRO VELHO –  RN/BR         
*************************************************
*/
// Baseado no sketch divulgado no site da elechouse.com
  
int CLK = 8; //pinos usados pelo shield
int DAT = 9;
void setup() 
{       
Serial.begin(9600);
pinMode(CLK, OUTPUT);  
pinMode(DAT, OUTPUT);  
pinMode(11, OUTPUT); 
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);   
}  
void loop() 
{   
//Controle de músicas pelos botões
digitalWrite(11, LOW); //toca música anterior 
delay(100); 
digitalWrite(11, HIGH);  
digitalWrite(12, LOW); //pausar e tocar música
delay(100); 
digitalWrite(12, HIGH);  
digitalWrite(13, LOW); //tocar próxima música 
delay(100); 
digitalWrite(13, HIGH);  
  
 //arquivos de músicas enviados para a função send do shield
   Serial.println("**************************");
  Serial.println(" LISTA DE MUSICAS ");
  Serial.println("**************************");
  Serial.println(" ");
    Serial.println("1. Mensagem Robotica");
  send(0x0000);
  delay(21000);
  Serial.println("2. Words - Bee Gees");  
  send(0x0001);
  delay(243000);
  Serial.println("3. Passaro de Fogo - Paula Fernandes ");
  send(0x0002);
  delay(231000);
  Serial.println("4. Mensagem Robotica");
  send(0x0003);
  delay(21000);
  Serial.println("5. Fala So de Amor - Edson Gomes"); 
  send(0x0004);
  delay(317000);
  Serial.println("6. Dando Trabalho Pros Anjos - DJ Jamaica");
  send(0x0005);
  delay(352000);
  Serial.println("7. Admiravel Gado Novo - Ze Ramalho");
  send(0x0006);
  delay(315000);
  Serial.println("8. Mensagem Robotica");
  send(0x0007);
  delay(21000);
  Serial.println("9. Pra Ser Sincero - Engenheiros do Hawaii"); 
  send(0x0008);
  delay(223000);
   Serial.println("10. Geracao Coca-cola - Legiao Urbana");
  send(0x0009);
  delay(142000);
  Serial.println("11. Que Pais E Esse - Legiao Urbana");
  send(0x0010);
  delay(500);
}  

//Função para reproduzir os arquivos
void send(int data) 
{   
digitalWrite(CLK, LOW);   
delay(2);   
for (int i=15; i>=0; i--)   
{     
delayMicroseconds(50);     
if((data>>i)&0x0010>0)  // Colocar o último arquivo do cartão (0x0010 neste caso).     
{         
digitalWrite(DAT, HIGH);         
}    
else       
{          
digitalWrite(DAT, LOW);        
}     
delayMicroseconds(50);     
digitalWrite(CLK, HIGH);     
delayMicroseconds(50);          
if(i>0)     
digitalWrite(DAT, LOW);     
else     
digitalWrite(DAT, HIGH);     
delayMicroseconds(50);          
if(i>0)    
digitalWrite(CLK, LOW);     
else     
digitalWrite(CLK, HIGH);   
}      
delay(20);  

Nenhum comentário:

Postar um comentário