miércoles, 5 de junio de 2013

Proyecto 1

Aquí se utilizaron leds blancos de alto brillo con una resistencia de 330 ohms, se hizo una conexión o circuito en paralelo (puedes hacer las conexiones que desees), una bocina de 8 ohms, esto es básicamente el encendido y apagado de leds mediante el reconocimiento de voz.

Materiales:

  • Arduino
  • EasyVR
  • Leds
  • Cable o alambre para protoboard
  • Protoboard
  • Bocina
  • Resistencia(s) de 330 ohms


Una vez generado los comandos de voz solo hay que generar el código, abrirlo con Arduino y en la parte de donde está la estructura switch, ahí tenemos que escribir nuestro código que queremos realizar, que en este caso será la de encendido y apagado de leds cargarlo y listo. (Hay que recordar que para que pueda cargarse nuestro código a Arduino el jumper tiene que estar en la opción de SW del Shield).

Código:

#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_1  = 1,
};
enum Group1
{
  G1_APAGAR = 0,
  G1_ENCENDER = 1,
};

EasyVRBridge bridge;
int8_t group, idx;
int led = 10;
void setup()
{
  pinMode(led,OUTPUT);
  // 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(0);
  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(0, 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);
    }
  group=GROUP_1;
  }
}
void action()
{
    switch (group)
    {
    case GROUP_1:
      switch (idx)
      {
      case G1_APAGAR:
      digitalWrite(led,LOW);
        // write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      case G1_ENCENDER:
      digitalWrite(led,HIGH);
        // write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      }
      break;
    }
}


6 comentarios:

  1. hola e tratado de realizar esta practica pero tengo muchos errores me podrian ayudar

    ResponderEliminar
  2. hola saludos el codigo aparece incorrecto

    ResponderEliminar
  3. Buen día este lenguaje también se puede realizar en arduino uno

    ResponderEliminar
  4. contesta las dudas hijo de perra.

    ResponderEliminar
  5. Hola me podrias ayudar me sale error en el codigo ,necesito las conexiones.

    ResponderEliminar
  6. Si tiene soporte la pagina? alguien que ya haya podido hacer el reconocimiento por voz?

    ResponderEliminar