#include <Servo.h>
Servo myservo; // create servo object to control a servo
int pos = 90;
String kontrolstr = "";
char kontrol;
void setup()
{
Serial.begin(9600);
myservo.attach(9);// attaches the servo on pin 9 to the servo object
}
void loop()
{
if(Serial.available())
{
kontrol=Serial.read(); // it reads from python voice recognition
kontrolstr.concat(kontrol);
}
if(kontrolstr== "right")
{pos += 30;
kontrol = '0';
kontrolstr = "";
}
else if(kontrolstr== "left")
{pos -= 30;
kontrol= '0';
kontrolstr = "";
}
myservo.write(pos);
delay(100);
}
Linux terminalinde voice_command.py (yazdığım) ile çalışır. Kod böyle olduğunda, bu kodu arduino'ya yükledikten hemen sonra, ses tanıma, "sağ" veya "sol" dan farklı bir kelimeyi anlayana kadar iyi çalışır. Ses komutu arduino'ya "sağ" veya "sol" dan farklı bir dizge gönderdiğinde, program hala hatasız çalışır ancak bu noktadan sonra artık "doğru" veya "sol" komutunu yanıtlamaya başlamaz. Bunu çözmek için bu değişikliği yaptım. Ben koymak bir 'başka':arduino: çalışmıyor başka program
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int pos = 90;
String kontrolstr = "";
char kontrol;
void setup()
{
Serial.begin(9600);
myservo.attach(9);// attaches the servo on pin 9 to the servo object
}
void loop()
{
if(Serial.available())
{
kontrol=Serial.read();
kontrolstr.concat(kontrol);
}
if(kontrolstr== "right")
{pos += 30;
kontrol = '0';
kontrolstr = "";
}
else if(kontrolstr== "left")
{pos -= 30;
kontrol= '0';
kontrolstr = "";
}
else { // I write this to make it work..
kontrol = '0';
kontrolstr = "";
}
myservo.write(pos);
delay(100);
}
Ancak artık çok "doğru" ve "sol" komutunu yanıt vermiyor. Bu sorunu nasıl çözebilirim?
Muhtemelen Serial.available() bloğu, veri geldiği gibi toplanıyor mu? Eğer döngünün bir yinelemesinde "teçhizat" alırsanız, "başka" bloğuna vuracaksınız ve "ht" gelmeden önce dizgiyi sıfırlayacaksınız, değil mi? – Paul
Cevabınız için teşekkürler, ama ne demek istediğini net olarak yakalayamadım. Özellikle 'teçhizat' ve 'ht' parçaları. Bu sorunu çözmek için ne yapmam gerektiğini anlamadım. Onu iyi anlamak için biraz açabilir misin? Bu arada arduino'da yeniyim :) –