Arduino İle Servo Motor Kontrolü
Servo motorlar gönderilen belirli sinyallere göre sahip olduğu şaftı belirli dereceler ile döndürebilen motorlardır. Örneğin 0 ile 180 derece arasında dönebilen şaftı 1 derece aralıklara kadar indirerek kontrol edebiliriz.
Servo motorların en çok kullanıldığı alan robot kollardır. Bilek, parmak vb. pozisyonlarını kontrol etmek için servo motor kullanılarak gerekli açı verilir.
Standart servo motorlarda 3 adet bağlantı kablosu vardı.
* Kırmızı Kablo (+) 4-6V
* Kahverengi Kablo(-) 0V
Bu yazımızdaki örnekte servo motoru 0-180, 180-0 dereceleri arasında 15’er derece değiştirerek döndüreceğiz.
Arduino ile Servo Motor Kontrolü Devresi
Arduino ile Servo Motor Kontrolü Akış Diagramı
Arduino ile Servo Motor Kontrolü Kodu
Aşağıdaki adımları izleyerek 0 ile 180, 180 ile 0 derece arasında 1’er derece artarak ilerleyen servo kodunu görebilirsiniz.
/* Sweep
by BARRAGAN
This example code is in the public domain.
modified 8 Nov 2013
by Scott Fitzgerald
http://arduino.cc/en/Tutorial/Sweep
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
for(pos = 0; pos <= 180; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for(pos = 180; pos>=0; pos-=1) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}
Arduino ile Servo Motor Kontrolü Kodu
#include <Servo.h>
Servo myservo; // servoyu tanımla
int pos = 0; // servo pozisyon değerini
// tutan değişken
void setup()
{
myservo.attach(9); // servo 9. pine bağlandı.
}
void loop()
{
for(pos = 0; pos <= 180; pos += 15) // 0 ile 180 derece arası 15'er
{ // derece artarak ileriliyor
myservo.write(pos); // servoya gerekli pozisyon için
delay(200); // sinyal gönderildi
}
for(pos = 180; pos>=0; pos-=15) // 180 ile 0 derece arası 15'er
{ // derece azalarak ilerliyor
myservo.write(pos); // servoya gerekli sinyal gönderildi.
delay(200); // servoya giden iki sinyal arası
// belirli bir gecikme verilmesi
// gerekiyor. (min ~18ms)
}
}
size ulaşabileceğim bir adresiniz varmı?
YanıtlaSilbana bu instagram adresinden ulaşabilirseniz sevinirim= ismaildgr_
YanıtlaSil