arduino coto de reconhecimento de voz e arduino wave module

olá a todos, eu comecei um projetinho com easy vr, e arduino e tenho um shied wave v2, só o arduino com o easy-vr funciona, mas o o que quero é quando mando o arduino fazer a função o arduino responda através do shield wave, já gravei no cartão sd as frases, só n consegui integrar os 3 juntos

segue o código só do easy vr

#include <Servo.h>

int lampState = LOW;

int lampada =13;
byte com = 0;

void setup()
{

Serial.begin(9600);

pinMode(lampada, OUTPUT);

delay(2000);

// O modulo aceita comandos, em hexadecimal no seguinte formato:
// AA + comando
Serial.write(0xAA);
Serial.write(0x37); //configura o modulo para responder em modo compacto
delay(1000); // no modo compacto as respostas são numeros em hexadecimal
Serial.write(0xAA);
Serial.write(0x21);//importa o grupo 1


}

void loop() // inicio do programa principal
{

while(Serial.available())
{
com = Serial.read(); //recebe o byte referente ao comando

if(com == 0x11) // ao recxeber o comando de voz "liga" o modulo envia o valor em hexadecimal: 11


digitalWrite(lampada, HIGH); // se receber 0x11 acende a lampada


if(com == 0x12) // ao recxeber o comando de voz "desliga" o modulo envia o valor em hexadecimal: 12


digitalWrite(lampada, LOW);// se receber 0x12 apaga a lampada

}
}

 e esse abaixo é o código de exemplo do arduino Wave Module V2

int RST = 3;
int CLK = 9;
int DAT = 8;


void setup() {


pinMode(RST, OUTPUT);
pinMode(CLK, OUTPUT);
pinMode(DAT, OUTPUT);


digitalWrite(RST, HIGH);
digitalWrite(CLK, HIGH);
digitalWrite(DAT, HIGH);

digitalWrite(RST, LOW);
delay(5);
digitalWrite(RST, HIGH);
delay(300);
}

void loop() {

send(0x0000);//play file 0000
delay(10000);//delay 10 seconds

send(0x0001);//play file 0001
delay(10000);//delay 10 seconds

send(0x0002);//play file 0002
delay(10000);//delay 10 seconds

send(0xfff0);//set voice volumn to 0 (turn off)
delay(3000);

send(0xfff4);//set voice volumn to 4
delay(3000);

send(0xfff7);//set voice volumn to 7
delay(3000);

send(0xfffe);// pause
delay(5000);
send(0xfffe);//play



while(1);
}


void send(int data)
{
digitalWrite(CLK, LOW);
delay(2);
for (int i=15; i>=0; i--)
{
delayMicroseconds(50);
if((data>>i)&0x0001 >0)
{
digitalWrite(DAT, HIGH);
//Serial.print(1);
}
else
{
digitalWrite(DAT, LOW);
// Serial.print(0);
}
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);
}

Agradeço desde já quem puder me ajudar!

Exibições: 243

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço