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;
}
}
hola e tratado de realizar esta practica pero tengo muchos errores me podrian ayudar
ResponderEliminarhola saludos el codigo aparece incorrecto
ResponderEliminarBuen día este lenguaje también se puede realizar en arduino uno
ResponderEliminarcontesta las dudas hijo de perra.
ResponderEliminarHola me podrias ayudar me sale error en el codigo ,necesito las conexiones.
ResponderEliminarSi tiene soporte la pagina? alguien que ya haya podido hacer el reconocimiento por voz?
ResponderEliminar