Ö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.

FGKG9NYHBHGLFZ3.LARGE

Öncelikle bağlantılar bu şekilde.

Arduino boardunuza yerleştiriyorsunuz elemanları bir adet breadboard veya delikli plak üzerine de ledlerinizi yerleştirebilirsiniz.

BitVoicerTest3_1_800x600

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 classBitVoicerSerial bvSerial = BitVoicerSerial();//Stores true if the Audio Streaming Calibration tool//is runningboolean sampleTest = false;//Stores the data type retrieved by getData()byte dataType = 0;//Sets up the pins and default variablesint 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 pinbvSerial.setAudioInput(0);//Starts serial communication at 115200 bpsSerial.begin(115200);//Sets up the pinModespinMode(pinR, OUTPUT);pinMode(pinY, OUTPUT);pinMode(pinG, OUTPUT);}void loop(){//Captures audio and sends it to BitVoicer if the Audio//Streaming Calibration Tool is runningif (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 runningif (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 loopvoid serialEvent(){//Reads the serial buffer and stores the received data typedataType = bvSerial.getData();//Changes the value of sampleTest if the received data was//the start/stop sampling commandif (dataType == BV_COMMAND)sampleTest = bvSerial.cmdData;//Signals BitVoicer's Speech Recognition Engine to start//listening to audio streams after the engineRunning status//was receivedif (dataType == BV_STATUS && bvSerial.engineRunning == true)bvSerial.startStopListening();//Checks if the data type is the same as the one in the//Voice Schemaif (dataType == BV_STR)setLEDs();}//Performs the LED changes according to the value in//bvSerial.strDatavoid 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 < 255) { lightLevel += 85; analogWrite(pinR, lightLevel); analogWrite(pinY, lightLevel); analogWrite(pinG, lightLevel); } } else if (bvSerial.strData == "darker") { 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