Aquí está el YouTube video con los resultados:
Este es el sketch de Arduino que controla los leds y recupera datos enviados desde BitVoicer:
Incluye la biblioteca de BitVoicer el dibujo de Configura los pines y variables por defecto Crea una nueva instancia de la clase BitVoicerSerial void setup() void loop()
#include < BitVoicer.h >
pinR int = 3;
int pinY = 5;
pinG de int = 6;
int blinkDelay = 250;
int sequenceDir = 0;
int lightLevel = 0;
Configura puerto serial 0
BitVoicerSerial bitVoicer = BitVoicerSerial(0);
{
Comunicación en serie se inicia y configura la pinModes
Serial.Begin(9600);
pinMode (pinR, salida);
pinMode (pinY, salida);
pinMode (pinG, salida);
}
{
Recupera los datos desde el búfer serial
bitVoicer.getData();
Se cierra el bucle si se devuelve ningún dato de la cadena de getData
Si (bitVoicer.strData == "")
{
retorno;
}
Cada una de las declaraciones de 'if' siguiente realiza una diferente
trabajo basado en los datos recibidos de BitVoicer
Si (bitVoicer.strData == "wake")
{
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);
digitalWrite (pinG, LOW);
digitalWrite (pinR, HIGH);
digitalWrite (pinY, alto);
digitalWrite (pinG, HIGH);
Delay(200);
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);
digitalWrite (pinG, LOW);
Delay(200);
digitalWrite (pinR, HIGH);
digitalWrite (pinY, alto);
digitalWrite (pinG, HIGH);
Delay(200);
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);
digitalWrite (pinG, LOW);
Delay(200);
digitalWrite (pinR, HIGH);
digitalWrite (pinY, alto);
digitalWrite (pinG, HIGH);
Delay(200);
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);
digitalWrite (pinG, LOW);
bitVoicer.strData = "";
lightLevel = 0;
}
else if (bitVoicer.strData == "sueño")
{
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);
digitalWrite (pinG, LOW);
digitalWrite (pinR, HIGH);
digitalWrite (pinY, alto);
digitalWrite (pinG, HIGH);
Delay(200);
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);
digitalWrite (pinG, LOW);
Delay(200);
digitalWrite (pinR, HIGH);
digitalWrite (pinY, alto);
digitalWrite (pinG, HIGH);
Delay(200);
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);
digitalWrite (pinG, LOW);
bitVoicer.strData = "";
lightLevel = 0;
}
else if (bitVoicer.strData == "RH")
{
digitalWrite (pinR, HIGH);
bitVoicer.strData = "";
lightLevel = 255;
}
else if (bitVoicer.strData == "RL")
{
digitalWrite (pinR, LOW);
bitVoicer.strData = "";
lightLevel = 0;
}
else if (bitVoicer.strData == "YH")
{
digitalWrite (pinY, alto);
bitVoicer.strData = "";
lightLevel = 255;
}
else if (bitVoicer.strData == "YL")
{
digitalWrite (pinY, baja);
bitVoicer.strData = "";
lightLevel = 0;
}
else if (bitVoicer.strData == "GH")
{
digitalWrite (pinG, HIGH);
bitVoicer.strData = "";
lightLevel = 255;
}
else if (bitVoicer.strData == "GL")
{
digitalWrite (pinG, LOW);
bitVoicer.strData = "";
lightLevel = 0;
}
else if (bitVoicer.strData == "blink")
{
digitalWrite (pinR, HIGH);
digitalWrite (pinY, alto);
digitalWrite (pinG, HIGH);
Delay(blinkDelay);
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);
digitalWrite (pinG, LOW);
Delay(blinkDelay);
lightLevel = 255;
}
else if (bitVoicer.strData == "BF")
{
blinkDelay = 100;
bitVoicer.strData = "parpadear";
lightLevel = 255;
}
else if (bitVoicer.strData == "BFF")
{
interruptor (blinkDelay)
{
caso 500:
blinkDelay = 250;
rotura;
caso 250:
blinkDelay = 100;
rotura;
por defecto:
rotura;
}
bitVoicer.strData = "parpadear";
lightLevel = 255;
}
else if (bitVoicer.strData == "BS")
{
blinkDelay = 500;
bitVoicer.strData = "parpadear";
lightLevel = 255;
}
else if (bitVoicer.strData == "BSS")
{
interruptor (blinkDelay)
{
caso 100:
blinkDelay = 250;
rotura;
caso 250:
blinkDelay = 500;
rotura;
por defecto:
rotura;
}
bitVoicer.strData = "parpadear";
lightLevel = 255;
}
else if (bitVoicer.strData == "secuencia")
{
Si (sequenceDir == 0)
{
digitalWrite (pinR, HIGH);
Delay(250);
digitalWrite (pinR, LOW);
digitalWrite (pinY, alto);
Delay(250);
digitalWrite (pinY, baja);
digitalWrite (pinG, HIGH);
Delay(250);
digitalWrite (pinG, LOW);
}
otra cosa
{
digitalWrite (pinG, HIGH);
Delay(250);
digitalWrite (pinG, LOW);
digitalWrite (pinY, alto);
Delay(250);
digitalWrite (pinY, baja);
digitalWrite (pinR, HIGH);
Delay(250);
digitalWrite (pinR, LOW);
}
lightLevel = 255;
}
else if (bitVoicer.strData == "volver")
{
Si (sequenceDir == 0)
{
sequenceDir = 1;
}
otra cosa
{
sequenceDir = 0;
}
bitVoicer.strData = "secuencia";
lightLevel = 255;
}
else if (bitVoicer.strData == "ALLON")
{
digitalWrite (pinR, HIGH);
digitalWrite (pinY, alto);
digitalWrite (pinG, HIGH);
bitVoicer.strData = "";
lightLevel = 255;
}
else if (bitVoicer.strData == "ALLOFF")
{
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);
digitalWrite (pinG, LOW);
bitVoicer.strData = "";
lightLevel = 0;
}
else if (bitVoicer.strData == "más brillante")
{
Si (lightLevel < 255)
{
lightLevel += 85;
analogWrite (pinR, lightLevel);
analogWrite (pinY, lightLevel);
analogWrite (pinG, lightLevel);
}
bitVoicer.strData = "";
}
else if (bitVoicer.strData == "más oscuro")
{
Si (lightLevel > 0)
{
lightLevel-= 85;
analogWrite (pinR, lightLevel);
analogWrite (pinY, lightLevel);
analogWrite (pinG, lightLevel);
}
bitVoicer.strData = "";
}
otra cosa
{
Serial.println ("ERROR:" + bitVoicer.strData);
bitVoicer.strData = "";
}
}
Este esbozo utiliza la librería de Arduino BitVoicer que puede ser descargado de th.
El esquema de voz BitVoicer que reconoce el discurso se muestra en el video está disponible en: http://www.justbuss.xpg.com.br/BitVoicerTest.zip (tienes que tener el BitVoicer instalado para abrirlo).
Espero que ustedes tienen diversión con ella!