Örneğin arduino ile bir robot yaptınız ve robotunuzun sizin komutlarınızla hareket etmesini istiyorsunuz. Gel dediğinizde gelsin git dediğinizde gitsin. Bu projede çok kolay bir şekilde bunu yapabileceksiniz. Çok fazla bir malzemeye ihtiyaç duymuyor fakat bir adet kablosuz modül gerekiyor.
Malzemeler:
3 adet led renkleri farklı olsa daha iyi
3 adet direnç gerekiyor 330 ohm yeterlidir.
Bir adet mikrofon
Pcye kablosuz bağlanmak için https://www.sparkfun.com/products/10822
Bağlantılar için de xbee shield gerekli https://www.sparkfun.com/products/10854
Önce uygulamanın bir videosunu izleyelim.
Öncelikle bağlantılar bu şekilde.
Arduino boardunuza yerleştiriyorsunuz elemanları bir adet breadboard veya delikli plak üzerine de ledlerinizi yerleştirebilirsiniz.
Tüm bağlantıları doğru yaptığınıza emin olun. Bağlantılarınız tamamlandıktan sonra pc üzerinden kontrol etmeniz gerekiyor. Bunun için
http://www.bitsophia.com/BitVoicer.aspx
adresinden bitvoicer programını indiriyorsunuz.
Ardından bu program aracılığıyla ses komutlarınızı ekliyorsunuz.
Kodlarımız bu şekilde;
#include
//Instantiates the BitVoicerSerial class
BitVoicerSerial bvSerial = BitVoicerSerial();
//Stores true if the Audio Streaming Calibration tool
//is running
boolean sampleTest = false;
//Stores the data type retrieved by getData()
byte dataType = 0;
//Sets up the pins and default variables
int pinR = 3;
int pinY = 5;
int pinG = 6;
int lightLevel = 0;
void setup()
{
//Sets the analog reference to external (AREF pin)
//WARNING!!! If anything is conected to the AREF pin,
//this function MUST be called first. Otherwise, it will
//damage the board.
bvSerial.setAnalogReference(BV_EXTERNAL);
//Sets up the microcontroller to perform faster analog reads
//on the specified pin
bvSerial.setAudioInput(0);
//Starts serial communication at 115200 bps
Serial.begin(115200);
//Sets up the pinModes
pinMode(pinR, OUTPUT);
pinMode(pinY, OUTPUT);
pinMode(pinG, OUTPUT);
}
void loop()
{
//Captures audio and sends it to BitVoicer if the Audio
//Streaming Calibration Tool is running
if (sampleTest == true)
{
//The value passed to the function is the time
//(in microseconds) that the function has to wait before
//performing the reading. It is used to achieve about
//8000 readings per second.
bvSerial.processAudio(46);
}
//Captures audio and sends it to BitVoicer if the Speech
//Recognition Engine is running
if (bvSerial.engineRunning)
{
//The value passed to the function is the time
//(in microseconds) that the function has to wait before
//performing the reading. It is used to achieve about
//8000 readings per second.
bvSerial.processAudio(46);
}
}
//This function runs every time serial data is available
//in the serial buffer after a loop
void serialEvent()
{
//Reads the serial buffer and stores the received data type
dataType = bvSerial.getData();
//Changes the value of sampleTest if the received data was
//the start/stop sampling command
if (dataType == BV_COMMAND)
sampleTest = bvSerial.cmdData;
//Signals BitVoicer's Speech Recognition Engine to start
//listening to audio streams after the engineRunning status
//was received
if (dataType == BV_STATUS && bvSerial.engineRunning == true)
bvSerial.startStopListening();
//Checks if the data type is the same as the one in the
//Voice Schema
if (dataType == BV_STR)
setLEDs();
}
//Performs the LED changes according to the value in
//bvSerial.strData
void setLEDs()
{
if (bvSerial.strData == "wake")
{
digitalWrite(pinR, LOW);
digitalWrite(pinY, LOW);
digitalWrite(pinG, LOW);
digitalWrite(pinR, HIGH);
digitalWrite(pinY, HIGH);
digitalWrite(pinG, HIGH);
delay(200);
digitalWrite(pinR, LOW);
digitalWrite(pinY, LOW);
digitalWrite(pinG, LOW);
delay(200);
digitalWrite(pinR, HIGH);
digitalWrite(pinY, HIGH);
digitalWrite(pinG, HIGH);
delay(200);
digitalWrite(pinR, LOW);
digitalWrite(pinY, LOW);
digitalWrite(pinG, LOW);
delay(200);
digitalWrite(pinR, HIGH);
digitalWrite(pinY, HIGH);
digitalWrite(pinG, HIGH);
delay(200);
digitalWrite(pinR, LOW);
digitalWrite(pinY, LOW);
digitalWrite(pinG, LOW);
lightLevel = 0;
}
else if (bvSerial.strData == "sleep")
{
digitalWrite(pinR, LOW);
digitalWrite(pinY, LOW);
digitalWrite(pinG, LOW);
digitalWrite(pinR, HIGH);
digitalWrite(pinY, HIGH);
digitalWrite(pinG, HIGH);
delay(200);
digitalWrite(pinR, LOW);
digitalWrite(pinY, LOW);
digitalWrite(pinG, LOW);
delay(200);
digitalWrite(pinR, HIGH);
digitalWrite(pinY, HIGH);
digitalWrite(pinG, HIGH);
delay(200);
digitalWrite(pinR, LOW);
digitalWrite(pinY, LOW);
digitalWrite(pinG, LOW);
lightLevel = 0;
}
else if (bvSerial.strData == "RH")
{
digitalWrite(pinR, HIGH);
lightLevel = 255;
}
else if (bvSerial.strData == "RL")
{
digitalWrite(pinR, LOW);
lightLevel = 0;
}
else if (bvSerial.strData == "YH")
{
digitalWrite(pinY, HIGH);
lightLevel = 255;
}
else if (bvSerial.strData == "YL")
{
digitalWrite(pinY, LOW);
lightLevel = 0;
}
else if (bvSerial.strData == "GH")
{
digitalWrite(pinG, HIGH);
lightLevel = 255;
}
else if (bvSerial.strData == "GL")
{
digitalWrite(pinG, LOW);
lightLevel = 0;
}
else if (bvSerial.strData == "ALLON")
{
digitalWrite(pinR, HIGH);
digitalWrite(pinY, HIGH);
digitalWrite(pinG, HIGH);
lightLevel = 255;
}
else if (bvSerial.strData == "ALLOFF")
{
digitalWrite(pinR, LOW);
digitalWrite(pinY, LOW);
digitalWrite(pinG, LOW);
lightLevel = 0;
}
else if (bvSerial.strData == "brighter")
{
if (lightLevel 0)
{
lightLevel -= 85;
analogWrite(pinR, lightLevel);
analogWrite(pinY, lightLevel);
analogWrite(pinG, lightLevel);
}
}
else
{
bvSerial.startStopListening();
bvSerial.sendToBV("ERROR:" + bvSerial.strData);
bvSerial.startStopListening();
}
}
Hocam emeğine sağlık. Güzel yazı.
teşekkürler hocam