Pages: [1]   Go Down
Author Topic: programmare arduino per easy Vr  (Read 990 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:


Code:
#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

« Last Edit: March 01, 2013, 10:37:43 am by leo72 » Logged

0
Offline Offline
Shannon Member
****
Karma: 132
Posts: 10498
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

qual'è la domanda?
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ........

Code:
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
« Last Edit: March 02, 2013, 01:46:28 pm by leo72 » Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22966
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Forse questo link può aiutarti.  smiley-razz
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ehehhe quello lo conoscevo già..............pultroppo non cambia il risultato se sritto da un'altro  smiley-lol  .......grazie comunque  smiley
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22966
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ehehhe quello lo conoscevo già..............pultroppo non cambia il risultato se sritto da un'altro  smiley-lol  .......grazie comunque  smiley
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.
Logged


Pages: [1]   Go Up
Jump to: