programmare arduino per easy Vr

Ciao a tutti, mi sono affacciato in questo mondo da poco, ma sono molto attratto da questa piccola schedina, e dalle potenzialità che ha, premetto che di programmazione ne sò ben poco per cui ho deciso di postare la mia richiesta di aiuto.
ho fatto alcune prove per iniziare a capirci qualcosa e per fortuna mi sono riuscite, ma ora arriva il difficile, vorrei realizzare un sistema di riconoscimento vocale per una stanza una cosa semplice, un comando= una risposta= una azione ..... ripetuta piu volte.....
Ho gia preparato i files audio che mi servono li ho montati sulla easy vr e ho montato su arduino il codice mi ha generato il commander riporto il codice quì sotto:

#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
  #include "SoftwareSerial.h"
  SoftwareSerial port(12,13);
#else // Arduino 0022 - uso modificato NewSoftSerial
  #include "WProgram.h"
  #include "NewSoftSerial.h"
  NewSoftSerial port(12,13);
#endif

#include "EasyVR.h"
EasyVR easyvr(port);

//Gruppi e comandi
enum Groups
{
  GROUP_0  = 0,
  GROUP_1  = 1,
  GROUP_2  = 2,
  GROUP_3  = 3,
};

enum Group0 
{
  G0_LIA = 0,
};

enum Group1 
{
  G1_MUSICA = 1,
};

enum Group2 
{
  G2_GRAZIE = 2,
};

enum Group3 
{
  G3_PRESENTATI = 3,
};


EasyVRBridge bridge;

int8_t group, idx;

void setup()
{
  // modalità bridge?
  if (bridge.check())
  {
    cli();
    bridge.loop(0, 1, 12, 13);
  }
  // funzionare normalmente
  Serial.begin(9600);
  port.begin(9600);

  if (!easyvr.detect())
  {
    Serial.println("EasyVR non trovata!");
    for (;;);
  }

  easyvr.setPinOutput(EasyVR::IO1, LOW);
  Serial.println("EasyVR <Trovata!");
  easyvr.setTimeout(5);
  easyvr.setLanguage(1);

  group = EasyVR::TRIGGER; //<-- inizio gruppo (Personalizza)
}

void action();

void loop()
{
  easyvr.setPinOutput(EasyVR::IO1, HIGH); // LED acceso (ascolto)

  Serial.print("Dire un comando nel gruppo ");
  Serial.println(group);
  easyvr.recognizeCommand(group);

  do
  {
    // può fare un po 'di elaborazione in attesa di un comando vocale
  }
  while (!easyvr.hasFinished());
  
  easyvr.setPinOutput(EasyVR::IO1, LOW); // LED off

  idx = easyvr.getWord();
  if (idx >= 0)
  {
    // costruita nel grilletto (ROBOT)
    // group = GROUP_X; <-- passare a un altro gruppo X
    return;
  }
  idx = easyvr.getCommand();
  if (idx >= 0)
  {
    // stampa messaggio di debug
    uint8_t train = 0;
    char name[32];
    Serial.print("Comando: ");
    Serial.print(idx);
    if (easyvr.dumpCommand(group, idx, name, train))
    {
      Serial.print(" = ");
      Serial.println(name);
    }
    else
      Serial.println();
    easyvr.playSound(1, EasyVR::VOL_FULL);
    // eseguire una determinata azione
    action();
  }
  else // errori o timeout
  {
    if (easyvr.isTimeout())
      Serial.println("Tempo scaduto, prova di nuovo ...");
    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_LIA:
        // scrivere il codice di azione qui
        // group = GROUP_X; <-- o passare a un altro gruppo di X per i comandi compositi
        break;
      }
      break;
    case GROUP_1:
      switch (idx)
      {
      case G1_MUSICA:
        
      
      
        // wscrivere il codice di azione qui
        // group = GROUP_X; <-- o passare a un altro gruppo di X per i comandi compositi
        break;
      }
      break;
    case GROUP_2:
      switch (idx)
      {
      case G2_GRAZIE:
        // scrivere il codice di azione qui
        // group = GROUP_X; <-- o passare a un altro gruppo di X per i comandi compositi
        break;
      }
      break;
    case GROUP_3:
      switch (idx)
      {
      case G3_PRESENTATI:
        // scrivere il codice di azione qui
        // group = GROUP_X; <-- o passare a un altro gruppo di X per i comandi compositi
        break;
      }
      break;
    }
}

A gia dimenticavo ho un arduino uno, easyVR
lo so che per voi può sembrare una bischerata ma ora non so proprio da che parte rifarmi.........
Grazie in anticipo a tutti

edit by mod:
leggere il regolamento prima di postare

qual'è la domanda?

Ciao, praticamente vorrei sapere quale è la parte di codice fa fa eseguire le operazioni che ho scritto "domanda risposta eseguzione " se non sbaglio questa e la parte che viene eseguita con il comando iniziale ........

 Serial.println();
    easyvr.playSound(1, EasyVR::VOL_FULL);
    // eseguire una determinata azione
    action();

praticamente devo azionare 10 relè, chiamo la scheda e mi risponde con quella parte li poi faccio una domanda , arduino risponde con la frase n° 10 per dire ,e chiude il relè 1...... spero di essere stato abbastanza chiaro..... Grazie

Forse questo link può aiutarti. :stuck_out_tongue:

ehehhe quello lo conoscevo già..............pultroppo non cambia il risultato se sritto da un'altro XD .......grazie comunque :slight_smile:

LordNaycol:
ehehhe quello lo conoscevo già..............pultroppo non cambia il risultato se sritto da un'altro XD .......grazie comunque :slight_smile:

Io non uso la Easy VR ma ho capito, guardando gli sketch di esempio, che la lib restituisce una stringa contenente il comando ricevuto (sbaglio?). Per cui basta avviare delle funzioni in base a ciò che viene detto.