Arduino ile Servo Motor Kullanımı - Tarama yapma (Arduino Örnekleri)

![]() |
SG 90 Servo Motor |

Servo motorlar çarklardan ve içindeki sürücüden oluşur. Ayrı bir sürücü kullanmak zorunda değilsiniz. Bazı üst düzey servolar ki akıllı servolar olarakta anılırlar geri bildirim birimi de içerir yani o anki iç sıcaklık, tork, çektiği enerji ve pozisyonu gibi bilgileri kullanıcıya iletir, üst düzey projelerde akıllı servo kullanımı yaygındır.
Servolarda dikkat edilmesi gereken bazı noktalar var, en önemlisi servoların hemen hemen hepsinin belli bir açı sınırı vardır ucuz servolarda bu sınır 180 derece dense de tam olarak 180 dönmemektedirler tabi "servo hack" denilen bir olayla servolar sınırsız açı ile dönebilirler ancak bu zamanda istediğiniz pozisyona getiremezsiniz yani normal dc motor gibi davranırlar. Pahalı servolarda servoyu bozmadan tekerlek gibi kullanım özellikleri var bunu da belirteyim. Servolar hakkında bu kadar bilgi şimdilik yeter Artık servo moturu Arduino ile kullanma zamanı.
Devre şeması yanda gözüküyor zaten 3 kablo olduğu ve sürmek için gerekli elemanlar servo motorun içinde olduğu için devre kolay. Siyah veya kahverengi olan kablo GND kablosudur, kırmızı ise 5V kablosudur ve bu renkler genelde servo dışında da bu şekilde kullanılır. Diğer renkli olan kabloda(sarı, turuncu, beyaz olabilir) sinyal kablosudur ve Arduino nun digital pinlerinden birine bağlanır. Örnekte ben Arduino nun 9. pinine bağladım. Detaylı resim aşşağıda.
Devre bağlandıktan sonra sıra kod işine geliyor detaylı açıklamaları kodun içinde yapacağım. Dikkat etmemiz gereken servo kendine ait bir kütüphaneye sahip ve bu kütüphane Arduino yanında gelmektedir tekrar indirmeye gerek yok.
#include <Servo.h> //kütüphanemizi ekliyoruz, Taslak > kütüphaneyi içe aktar > Servo yolu ilede eklenebilir. int servoPin = 9; // Servonun bağlı olduğu pini ekliyoruz Servo servo; // Kütüphane sayesinde Servo adlı bir değişken oluyor ve tıkpı int, float gibi tanımlanıyor biz burada servo olarak adlandırıyoruz. int aci; // açı değerimizi tutacak integer türünde değişken oluşturuyoruz void setup() { servo.attach(servoPin); // .attach komutu ile servoyu ekliyoruz servo.write(0); // bazı servolar ilk başta saçma sapan hareket yapar yada belirsiz bir konumda başlar bunu önlemek için .write komutu ile servo açısını 0 yapıyoruz. delay(1000); //Servonun kendisine gelmesi için bekliyoruz bu süre sizin servonuza göre değiştirilebilir. // bu iki işlemi setup içinde yapıyoruz çünkü devreye elektrik deldiğinde sadece birkere çalışması yeterli eğer loop içinde olsa // her turda servo 0 derece olucak ve 1 sn bekliyecek } void loop() { //Tarama hareketi için iki for döngüsü yazıyoruz burada servonun en fazla 180 derece gittiği varsayıldı farklı değerler için 180 değeri değiştirilebilir for(aci=0;aci<=180;aci++){ // açımız 0 olduğunda 180 dereceye kadar bir bir artacak servo.write(aci); // ve bu değer servoya yazılarak servonun hareketi sağlanacak delay(25); // araya çok az bir bekleme koyuyoruz ki sistem saçmalamasın } for(aci=180;aci>=0;aci--){ // açımız 180 olduğunda 0 dereceye kadar bir bir azalacak servo.write(aci); // bu değer servoya yazılacak delay(25); //tekrar her derece arasında kısa bir süre beklenecek } }
Güzel bir uygulama olmuş
YanıtlaSil