Arduino ile Servo Motor Bağlantısı, Kullanımı ve Kodları
Servo Motor nedir?
Servo motorlar genellikle 180 derece açıyla hareket sağlayan motorlardır. Bir çok projede kullanılırken, servo motoru farklı bir çok sensörle birlikte de kullanmak mümkündür. Servo motorda 3 kablo bulunmaktadır. Kahverengi kablo GND’ye, kırmızı kablo 5V pinine, turuncu kablo ise sinyal almak istediğimiz herhangi bir PWM pinine bağlanır.
![](https://bilisimhocamyusufbalyemez.com/wp-content/uploads/2022/06/Arduino-servo-motor-baglantisi-bilisim-hocam-1024x447.png)
Aşağıdaki örnekte Servo motor için gerekli olan kütüphane dahil edildikten sonra Servo motorumuzu kontrol etmek için bir değişken oluşturduk. Bu değişken servo motorumuza verilen isimdir. Ben bu örnekte motor olarak tercih ettim. Siz istediğiniz değişken ismiyle kontrol edebilirsiniz. Daha sonra başlangıç açısını 0 olarak ayarladım. Bu sayede ufak da olsa motorumuzu başlangıç konumuna getirmek için çalıştırmış olduk.
#include <Servo.h> //Servo kütüphanesini dahil eder.
Servo motor; //Servo'yu kontrol edeceğimiz değişkeni tanımlar.
void setup() {
motor.attach(3); //3. pin pwn pindir. diğer pwn olan pinleri de kullanabilirsiniz.
motor.write(0); //Motorun başlangıç açısını 0 yapar.
}
void loop() {
}
Aşağıdaki örnekte ise servo motorumuz 1 saniye içerisinde 180’lik açıya gelecek ve daha sonra tekrardan 1 saniye içerisinde 0 derecelik açıya dönecektir.
NOT:
Dişlilerin fiziki olarak dönme hızı belli bir sürtünmeye bağlı olduğu için bekleme süresi verilmediği taktir de istenilen açılarda hareket etmeyecektir.
#include <Servo.h>
Servo motor;
void setup() {
motor.attach(3);
motor.write(0);
}
void loop() {
motor.write(180);
delay(1000); //1 saniye geciktirme işlemi yapar. bu sayede 1 saniye boyunca 0'dan 180 derecelik açıya döner.
motor.write(0);
delay(1000);
}
Aşağıdaki örnekte ise döngü kullanılarak her bir derecelik açı dönüşünden sonra 0.1 saniye beklemesini ve 180 derecelik açıya kadar artmasını daha sonrada azalmasını sağlayan bir dönme işlemi yapmaktadır.
#include <Servo.h>
Servo motor;
int aci;
void setup() {
motor.attach(3);
motor.write(0);
}
void loop() {
for(aci=0;aci<=180;aci+=1){ //Açı değerini birer birer arttırır.
motor.write(aci);
delay(100);
}
for(aci=180;aci>=0;aci-=1){ //Açı değerini birer birer azaltır.
motor.write(aci);
delay(100);
}
}