Aiuto programmazione EasyVr Shield

Salve ragazzi ho ancora bisogno di voi, non c'è niente dafare il codice ide di arduino sembre quasi arabo per me dopo un pò non ci capisco più niente eppure per esigenza credo sia la migliore superfice di controllo programmabile che io riesca a capire anche se poco.
Spiego il mio problema:
-Ho bisogno di un codiche che legga il comando vocale Trigger memorizzato sulla sheda EasyVr(il comando poi lo decido io facciamo finta che si chiami arduino) e che rispondi leggendo un file audio sempre memorizzato all'interno della scheda;
-dopo pronunciando un secondo comando presente nel gruppo 1(quello sotto il trigger) esegua una nuova lettura i un file audio ed esegua anche un digitalWrite su per esempio il pin 4;
-dopo aqncora pronunciando un secondo comando sempre presente nel grupo1 esegua una nuova lettura i un file audio ed esegua anche un nuovo digitalWrite sul pin 4;
In poche parole io dico un nome lui risponde pronto, poi dico luce lui risponde comando eseguito ed accende un led, poi dico spegni e lui dice comando eseguito e spegne il led.
Il codice qui sotto fa solo la prima parte ma non accende nulla e non risponde hai comandi del gruppo 1.


#include <NewSoftSerial.h>
NewSoftSerial port(12,13);

#include <EasyVR.h>
EasyVR easyvr(port);

//Groups and Commands
enum Groups
{
GROUP_0 = 0,
GROUP_1 = 1,
};

enum Group0
{
G0_YAVI = 0,
};

enum Group1
{
G1_ACCENDI = 0,
G1_SPEGNI = 1,
};

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(1);

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

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(1, EasyVR::VOL_FULL);
// 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_YAVI:
// write your action code here
// group = GROUP_X; <-- or jump to another group X for composite commands
break;
}
break;
case GROUP_1:
switch (idx)
{
case G1_ACCENDI:
digitalWrite(4, HIGH);
// write your action code here
// group = GROUP_X; <-- or jump to another group X for composite commands
break;
case G1_SPEGNI:
digitalWrite(4, LOW);
// write your action code here
// group = GROUP_X; <-- or jump to another group X for composite commands
break;
}
break;
}
}


Grazie in anticipo.