Bom diaa!!!!

 

Galera......

 

Estou com um problema, shield, maioria das vezes ele não atende ao meu comando de voz...

 

 

Alguém tem uma idéia????Para que ele atenda com precisão???

 

E também fica aparecendo

 

 

"ERRO 11"

 

"ERRO 7"

 

mas pelo que vi o erro não interfere...

 

 

 

#if defined(ARDUINO) && ARDUINO >= 100

  #include "Arduino.h"

  #include "SoftwareSerial.h"

  SoftwareSerial port(12,13);

#else // Arduino 0022 - use modified NewSoftSerial

  #include "WProgram.h"

  #include "NewSoftSerial.h"

  NewSoftSerial port(12,13);

#endif

 

#include "EasyVR.h"

EasyVR easyvr(port);

 

//Groups and Commands

enum Groups

{

  GROUP_0  = 0,

  GROUP_1  = 1,

  GROUP_2  = 2,

  GROUP_3  = 3,

  GROUP_4  = 4,

  GROUP_5  = 5,

};

 

enum Group0

{

  G0_KITT = 0,

};

 

enum Group1

{

  G1_ATIVAR = 0,

  G1_DESLIGAR = 1,

};

 

enum Group2

{

  G2_TELEVISAO = 0,

  G2_ILUMINACAO = 1,

  G2_TEMPERATURA_AMBIENTE = 2,

  G2_DVD = 3,

  G2_TRAVA = 4,

};

 

enum Group3

{

  G3_TELEVISAO = 0,

  G3_ILUMINACAO = 1,

  G3_TEMPERATURA_AMBIENTE = 2,

  G3_DVD = 3,

};

 

enum Group4

{

  G4_DATA_HORA = 0,

  G4_HORARIO = 1,

};

 

enum Group5

{

  G5_DORMIR = 0,

};

 

 

EasyVRBridge bridge;

 

int8_t group, idx;

 

void setup()

{

  // bridge mode?

  if (bridge.check())

  {

    cli();

    bridge.loop(0, 1, 12, 13);

  }

  // run normally

  Serial.begin(9600);

  port.begin(9600);

 

  if (!easyvr.detect())

  {

    Serial.println("EasyVR not detected!");

    for (; ;

  }

 

  easyvr.setPinOutput(EasyVR::IO1, LOW);

  Serial.println("EasyVR detected!");

  easyvr.setTimeout(5);

  easyvr.setLanguage(EasyVR::ENGLISH);

 

  group = EasyVR::TRIGGER; //<-- start group (customize)

 

  pinMode(11, OUTPUT);

   easyvr.setLevel(EasyVR::EASY);

   easyvr.setKnob(EasyVR::LOOSER);

}

 

void action();

 

void loop()

{

  easyvr.setPinOutput(EasyVR::IO1, HIGH); // LED on (listening)

 

  Serial.print("Say a command in Group ");

  Serial.println(group);

  easyvr.recognizeCommand(group);

 

  do

  {

    // can do some processing while waiting for a spoken command

  }

  while (!easyvr.hasFinished());

 

  easyvr.setPinOutput(EasyVR::IO1, LOW); // LED off

 

  idx = easyvr.getWord();

  if (idx >= 0)

  {

    // built-in trigger (ROBOT)

    // group = GROUP_X; <-- jump to another group X

    return;

  }

  idx = easyvr.getCommand();

  if (idx >= 0)

  {

    // print debug message

    uint8_t train = 0;

    char name[32];

    Serial.print("Command: ");

    Serial.print(idx);

    if (easyvr.dumpCommand(group, idx, name, train))

    {

      Serial.print(" = ");

      Serial.println(name);

    }

    else

      Serial.println();

    easyvr.playSound(0, EasyVR::VOL_DOUBLE);

    // perform some action

    action();

  }

  else // errors or timeout

  {

    if (easyvr.isTimeout())

      Serial.println("Timed out, try again...");

    int16_t err = easyvr.getError();

    if (err >= 0)

    {

      Serial.print("Error ");

      Serial.println(err, HEX);

    }

  }

}

 

void action()

{

    switch (group)

    {

    case GROUP_0:

      switch (idx)

      {

      case G0_KITT:

        // write your action code here

        group = GROUP_1;

        easyvr.playSound(5, EasyVR::VOL_DOUBLE);

        break;

      }

      break;

    case GROUP_1:

      switch (idx)

      {

      case G1_ATIVAR:

        // write your action code here

        group = GROUP_2;

        break;

      case G1_DESLIGAR:

        // write your action code here

         group = GROUP_3;

        break;

      }

      break;

    case GROUP_2:

      switch (idx)

      {

      case G2_TELEVISAO:

        // write your action code here

         group = GROUP_0;

        break;

      case G2_ILUMINACAO:

        // write your action code here

         group = GROUP_0;

        break;

      case G2_TEMPERATURA_AMBIENTE:

        // write your action code here

         group = GROUP_0;

         break;

      case G2_DVD:

        // write your action code here

         group = GROUP_0;

        break;

      case G2_TRAVA:

        digitalWrite(11,HIGH);

        delay(100);

        digitalWrite(11,LOW);

        // write your action code here

         group = GROUP_0;

         break;

      }

      break;

    case GROUP_3:

      switch (idx)

      {

      case G3_TELEVISAO:

        // write your action code here

         group = GROUP_0;

        break;

      case G3_ILUMINACAO:

        // write your action code here

         group = GROUP_0;

        break;

      case G3_TEMPERATURA_AMBIENTE:

        // write your action code here

         group = GROUP_0;

        break;

      case G3_DVD:

        // write your action code here

         group = GROUP_0;

        break;

      }

      break;

    case GROUP_4:

      switch (idx)

      {

      case G4_DATA_HORA:

        // write your action code here

         group = GROUP_0;

        break;

      case G4_HORARIO:

        // write your action code here

         group = GROUP_0;

         break;

      }

      break;

    case GROUP_5:

      switch (idx)

      {

      case G5_DORMIR:

        // write your action code here

         group = GROUP_0;

        break;

      }

      break;

    }

}

 

Exibições: 483

Responder esta

Respostas a este tópico

experimenta mudar aqui : easyvr.setLanguage(EasyVR::ENGLISH); e colocar SPANISH 

e depende da distancia q vc gravou a voz com a distancia do comando no momento, e os ruídos..na hora de gravar os comandos grava numa distancia razoável como se já estivesse comandando..

faz um teste.

uma pergunta, vc só declarou o pino 11 pra todos esses comandos? ou só pra mostrar aqui no exemplo?

Vou tentar dessa forma.

Pino 11 só para teste "led", já tenho as interface de saida, preciso configurar os demais pinos.

Sabe me dizer quanto aos ajustes abaixo se pode melhorar o reconhecimento?? E quanto aos erros??

Desde ja agradeço!

CMD_KNOB

'k' (6Bh) Set SI knob to specified level

[1]

Confidence threshold level (0-4): 

0 = loosest:more valid results

2 = typical value (default)

4 = tightest:fewer valid results

Note: knob is ignored for trigger words

Expected replies: STS_SUCCESS

 

CMD_LEVEL

'v' (76h) Set SD level

[1]

Strictness control setting (1-5):

1 = easy

2 = default

5 = hard

A higher setting will result in more recognition errors.

Expected replies: STS_SUCCESS

CMD_RECOG_SI

'i' (69h) Activate SI recognition from specified word set   

[1] Word set index (0-3)

Expected replies: STS_SIMILAR, STS_TIMEOUT, STS_ERROR

 

STS_ERROR 

'e' (65h) Signal recognition error 

[1-2] Two 4-bit values that form 8-bit error code (error = [1] * 16 + [2], see appendix)

In reply to: CMD_RECOG_SI, CMD_RECOG_SD, CMD_TRAIN_SD, CMD_PLAY_SX

 

 

não sei não..

eu tenho o meu código funcionando mais coloquei tudo em apenas um grupo..

Entendi...

Pode me passar seu código por favor???

Qual a distancia aproximada do microfone que ele reconhece?

 

 

fiz testes de +- 5 metros.não sei qual o máximo,por isso vc tem q gravar sua voz numa distancia razoável,e se não reconhecer fale + alto, e vai testando...

posso enviar por email.

Entendi, show de bola em....

Vou treinar ele com uma distancia maior.

 

e-mail: efraim_mariano@hotmail.com

 

Obrigado!!!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço