Taligenkänning med BitVoicer och Arduino
Här är YouTube video med resultaten:
Detta är den Arduino skiss som styr lamporna och hämtar data som skickas från BitVoicer:
Innehåller BitVoicer bibliotek till skiss Ställer in stift och standard variabler Skapar en ny instans av klassen BitVoicerSerial void setup() void loop() Avslutas loopen om ingen strängdata returneras från getData Var och en av de nästa uttalandena som "om" utför en annan
#include < BitVoicer.h >
int pinR = 3;
int pinY = 5;
int pinG = 6;
int blinkDelay = 250;
int sequenceDir = 0;
int lightLevel = 0;
Ställer in serieporten till 0
BitVoicerSerial bitVoicer = BitVoicerSerial(0);
{
Börjar seriell kommunikation och sätter upp pinModes
Serial.BEGIN(9600);
pinMode (pinR, produktionen);
pinMode (pinY, utgång);
pinMode (pinG, utgång);
}
{
Hämtar data från seriella buffert
bitVoicer.getData();
om (bitVoicer.strData == "")
{
hemkomst.
}
uppgift baserat på de uppgifter som mottagits från BitVoicer
om (bitVoicer.strData == "vakna")
{
digitalWrite (pinR, låg);
digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
digitalWrite (pinR, hög);
digitalWrite (pinY, hög);
digitalWrite (pinG, hög);
Delay(200);
digitalWrite (pinR, låg);
digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
Delay(200);
digitalWrite (pinR, hög);
digitalWrite (pinY, hög);
digitalWrite (pinG, hög);
Delay(200);
digitalWrite (pinR, låg);
digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
Delay(200);
digitalWrite (pinR, hög);
digitalWrite (pinY, hög);
digitalWrite (pinG, hög);
Delay(200);
digitalWrite (pinR, låg);
digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
bitVoicer.strData = "";
lightLevel = 0;
}
annat if (bitVoicer.strData == "sömn")
{
digitalWrite (pinR, låg);
digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
digitalWrite (pinR, hög);
digitalWrite (pinY, hög);
digitalWrite (pinG, hög);
Delay(200);
digitalWrite (pinR, låg);
digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
Delay(200);
digitalWrite (pinR, hög);
digitalWrite (pinY, hög);
digitalWrite (pinG, hög);
Delay(200);
digitalWrite (pinR, låg);
digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
bitVoicer.strData = "";
lightLevel = 0;
}
annat if (bitVoicer.strData == "RH")
{
digitalWrite (pinR, hög);
bitVoicer.strData = "";
lightLevel = 255;
}
annat if (bitVoicer.strData == "RL")
{
digitalWrite (pinR, låg);
bitVoicer.strData = "";
lightLevel = 0;
}
annat if (bitVoicer.strData == "YH")
{
digitalWrite (pinY, hög);
bitVoicer.strData = "";
lightLevel = 255;
}
annat if (bitVoicer.strData == "YL")
{
digitalWrite (pinY, låg);
bitVoicer.strData = "";
lightLevel = 0;
}
annat if (bitVoicer.strData == "GH")
{
digitalWrite (pinG, hög);
bitVoicer.strData = "";
lightLevel = 255;
}
annat if (bitVoicer.strData == "GL")
{
digitalWrite (pinG, låg);
bitVoicer.strData = "";
lightLevel = 0;
}
annat if (bitVoicer.strData == "blink")
{
digitalWrite (pinR, hög);
digitalWrite (pinY, hög);
digitalWrite (pinG, hög);
Delay(blinkDelay);
digitalWrite (pinR, låg);
digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
Delay(blinkDelay);
lightLevel = 255;
}
annat if (bitVoicer.strData == "BF")
{
blinkDelay = 100;
bitVoicer.strData = "blink";
lightLevel = 255;
}
annat if (bitVoicer.strData == "BFF")
{
växel (blinkDelay)
{
fall 500:
blinkDelay = 250;
bryta;
fall 250:
blinkDelay = 100;
bryta;
standard:
bryta;
}
bitVoicer.strData = "blink";
lightLevel = 255;
}
annat if (bitVoicer.strData == "BS")
{
blinkDelay = 500.
bitVoicer.strData = "blink";
lightLevel = 255;
}
annat if (bitVoicer.strData == "BSS")
{
växel (blinkDelay)
{
fallet 100:
blinkDelay = 250;
bryta;
fall 250:
blinkDelay = 500.
bryta;
standard:
bryta;
}
bitVoicer.strData = "blink";
lightLevel = 255;
}
annat if (bitVoicer.strData == "sekvens")
{
om (sequenceDir == 0)
{
digitalWrite (pinR, hög);
Delay(250);
digitalWrite (pinR, låg);
digitalWrite (pinY, hög);
Delay(250);
digitalWrite (pinY, låg);
digitalWrite (pinG, hög);
Delay(250);
digitalWrite (pinG, låg);
}
annat
{
digitalWrite (pinG, hög);
Delay(250);
digitalWrite (pinG, låg);
digitalWrite (pinY, hög);
Delay(250);
digitalWrite (pinY, låg);
digitalWrite (pinR, hög);
Delay(250);
digitalWrite (pinR, låg);
}
lightLevel = 255;
}
annat if (bitVoicer.strData == "återgå")
{
om (sequenceDir == 0)
{
sequenceDir = 1;
}
annat
{
sequenceDir = 0;
}
bitVoicer.strData = "sekvens".
lightLevel = 255;
}
annat if (bitVoicer.strData == "ALLON")
{
digitalWrite (pinR, hög);
digitalWrite (pinY, hög);
digitalWrite (pinG, hög);
bitVoicer.strData = "";
lightLevel = 255;
}
annat if (bitVoicer.strData == "ALLOFF")
{
digitalWrite (pinR, låg);
digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
bitVoicer.strData = "";
lightLevel = 0;
}
annat if (bitVoicer.strData == "ljusare")
{
om (lightLevel < 255)
{
lightLevel += 85.
analogWrite (pinR, lightLevel);
analogWrite (pinY, lightLevel);
analogWrite (pinG, lightLevel);
}
bitVoicer.strData = "";
}
annat if (bitVoicer.strData == "mörkare")
{
om (lightLevel > 0)
{
lightLevel-= 85.
analogWrite (pinR, lightLevel);
analogWrite (pinY, lightLevel);
analogWrite (pinG, lightLevel);
}
bitVoicer.strData = "";
}
annat
{
Serial.println ("fel:" + bitVoicer.strData);
bitVoicer.strData = "";
}
}
Denna skiss använder BitVoicer Arduino biblioteket som kan laddas ner från th.
BitVoicer röst schemat som erkänner det tal som visas i videon finns på: http://www.justbuss.xpg.com.br/BitVoicerTest.zip (du måste ha BitVoicer för att kunna öppna den).
Jag hoppas ni har roligt med det!