Dit project is vergelijkbaar met het in mijn eerste post (), maar nu ik gebruik audio streaming audio versturen naar BitVoicer.
Het schema van de fritzing dat ik heb toegevoegd aan dit instructable toont hoe ik bedraad mijn Arduino board.
Ik ben ook het toevoegen van een paar foto's en een YouTube-video van het project uitgevoerd.
Helaas, de schets die ik schreef voor mijn eerste post wordt niet langer ondersteund door de nieuwe versie van BitVoicer. Hier is de nieuwe sketch:
#include < BitVoicer11.h >
De klasse BitVoicerSerial instantieert Winkels true als de Audio Streaming kalibratie tool VOID Setup void loop Deze functie loopt elke keer seriële data beschikbaar is Voert de LED wijzigingen volgens de waarde in
BitVoicerSerial bvSerial = BitVoicerSerial();
wordt uitgevoerd
Boole sampleTest = false;
Het gegevenstype opgehaald door getData() wordt opgeslagen
dataType byte = 0;
Stelt de pinnen en de standaard variabelen
int pinR = 3;
int pinY = 5;
int pinG = 6;
int lightLevel = 0;
{
Hiermee stelt u de analoge verwijzing naar externe (AREF pin)
WAARSCHUWING! Als er iets is verbonden met de AREF pin,
deze functie moet eerst worden aangeroepen. Anders, zal het
schade aan de Raad van bestuur.
bvSerial.setAnalogReference(BV_EXTERNAL);
De microcontroller ingesteld om uit te voeren sneller analoge leest
op de opgegeven pin
bvSerial.setAudioInput(0);
De seriële communicatie begint 115200 bps
Serial.begin(115200);
Stelt de pinModes
pinMode (pinR, OUTPUT);
pinMode (pinY, OUTPUT);
pinMode (pinG, uitvoer);
}
{
Vangt audio en stuurt dit naar de BitVoicer als de Audio
Streaming Kalibratie Tool wordt uitgevoerd
Als (sampleTest == true)
{
De waarde die is doorgegeven aan de functie is de tijd
(in microseconden) die de functie heeft moet worden gewacht voordat
het uitvoeren van de lezing. Het wordt gebruikt om te bereiken over
8000 lezingen per seconde.
bvSerial.processAudio(46);
}
Vangt audio en stuurt dit naar de BitVoicer als de toespraak
Erkenning motor loopt
Als (bvSerial.engineRunning)
{
De waarde die is doorgegeven aan de functie is de tijd
(in microseconden) die de functie heeft moet worden gewacht voordat
het uitvoeren van de lezing. Het wordt gebruikt om te bereiken over
8000 lezingen per seconde.
bvSerial.processAudio(46);
}
}
in de seriële buffer na een lus
VOID serialEvent()
{
De seriële buffer leest en slaat het ontvangen gegevenstype
dataType = bvSerial.getData();
Hiermee wijzigt u de waarde van sampleTest als de ontvangen gegevens waren
de opdracht van de bemonstering start/stop
Als (dataType == BV_COMMAND)
sampleTest = bvSerial.cmdData;
Signalen van BitVoicer de Engine voor spraakherkenning te starten
luisteren naar audio streams na de status engineRunning
werd ontvangen
Als (dataType == BV_STATUS & & bvSerial.engineRunning == true)
bvSerial.startStopListening();
Controleert als het gegevenstype is hetzelfde als degene in de
Schema van de stem
Als (dataType == BV_STR)
setLEDs();
}
bvSerial.strData
VOID setLEDs()
{
Als (bvSerial.strData == "wake")
{
digitalWrite (pinR, laag);
digitalWrite (pinY, laag);
digitalWrite (pinG, laag);
digitalWrite (pinR, hoge);
digitalWrite (pinY, hoge);
digitalWrite (pinG, hoge);
delay(200);
digitalWrite (pinR, laag);
digitalWrite (pinY, laag);
digitalWrite (pinG, laag);
delay(200);
digitalWrite (pinR, hoge);
digitalWrite (pinY, hoge);
digitalWrite (pinG, hoge);
delay(200);
digitalWrite (pinR, laag);
digitalWrite (pinY, laag);
digitalWrite (pinG, laag);
delay(200);
digitalWrite (pinR, hoge);
digitalWrite (pinY, hoge);
digitalWrite (pinG, hoge);
delay(200);
digitalWrite (pinR, laag);
digitalWrite (pinY, laag);
digitalWrite (pinG, laag);
lightLevel = 0;
}
else if (bvSerial.strData == "slaap")
{
digitalWrite (pinR, laag);
digitalWrite (pinY, laag);
digitalWrite (pinG, laag);
digitalWrite (pinR, hoge);
digitalWrite (pinY, hoge);
digitalWrite (pinG, hoge);
delay(200);
digitalWrite (pinR, laag);
digitalWrite (pinY, laag);
digitalWrite (pinG, laag);
delay(200);
digitalWrite (pinR, hoge);
digitalWrite (pinY, hoge);
digitalWrite (pinG, hoge);
delay(200);
digitalWrite (pinR, laag);
digitalWrite (pinY, laag);
digitalWrite (pinG, laag);
lightLevel = 0;
}
else if (bvSerial.strData == "RH")
{
digitalWrite (pinR, hoge);
lightLevel = 255;
}
else if (bvSerial.strData == "RL")
{
digitalWrite (pinR, laag);
lightLevel = 0;
}
else if (bvSerial.strData == "YH")
{
digitalWrite (pinY, hoge);
lightLevel = 255;
}
else if (bvSerial.strData == "YL")
{
digitalWrite (pinY, laag);
lightLevel = 0;
}
else if (bvSerial.strData == "GH")
{
digitalWrite (pinG, hoge);
lightLevel = 255;
}
else if (bvSerial.strData == "GL")
{
digitalWrite (pinG, laag);
lightLevel = 0;
}
else if (bvSerial.strData == "ALLON")
{
digitalWrite (pinR, hoge);
digitalWrite (pinY, hoge);
digitalWrite (pinG, hoge);
lightLevel = 255;
}
else if (bvSerial.strData == "ALLOFF")
{
digitalWrite (pinR, laag);
digitalWrite (pinY, laag);
digitalWrite (pinG, laag);
lightLevel = 0;
}
else if (bvSerial.strData == "helderder")
{
Als (lightLevel < 255)
{
lightLevel += 85;
analogWrite (pinR, lightLevel);
analogWrite (pinY, lightLevel);
analogWrite (pinG, lightLevel);
}
}
else if (bvSerial.strData == "donkerder")
{
Als (lightLevel > 0)
{
lightLevel-= 85;
analogWrite (pinR, lightLevel);
analogWrite (pinY, lightLevel);
analogWrite (pinG, lightLevel);
}
}
anders
{
bvSerial.startStopListening();
bvSerial.sendToBV ("fout:" + bvSerial.strData);
bvSerial.startStopListening();
}
}
Het Schema dat ik wordt gebruikt in de stem van de BitVoicer kan worden gedownload van: http://www.justbuss.xpg.com.br/BitVoicerTest2.zip (u moet hebben BitVoicer geïnstalled openen).
Nu wil ik om te controleren enkele dingen (verlichting en celling fan) thuis. Suggesties zijn zeer welkom.