🚪 Arduino Beşinci Proje: Otomatik Kapı Simülasyonu (Servo Kontrol)

📝 Projenin Amacı ve Servo Motor Mantığı

Otomasyon projelerinin vazgeçilmezi olan servo motorlar, LED'ler gibi sadece Açık/Kapalı (HIGH/LOW) sinyali yerine, hassas açı kontrolü sağlayan motorlardır. Bu projede, servo motoru kullanarak bir kapının kapalı (0 derece) ve açık (90 veya 180 derece) pozisyonlarını simüle edeceğiz.

Servo Motor Nedir?

Servo motorlar, bir konumdan diğerine hassas bir şekilde dönebilen motorlardır. Bir DC motorun aksine, onlara belli bir açı değeri (0 ile 180 derece arasında) gönderebilirsiniz ve motor o konuma gider ve orada kalır. Kontrolü için Arduino'nun özel Servo.h kütüphanesini kullanacağız.

Kapı Senaryosu

Kapı başlangıçta kapalıdır. Komut ile açılır, belli bir süre açık kalır ve ardından otomatik olarak kapanır. Bu döngü sürekli tekrar edecektir.
1. Kapalı Pozisyon: 0 derece 2. Açılma Hareketi: 0'dan 90 dereceye hareket 3. Açık Pozisyon: 90 derece 4. Kapanma Hareketi: 90'dan 0 dereceye hareket

I. Gerekli Malzemeler ve Detaylı Devre Kurulumu

Bu projede, LED'lerden farklı olarak hareket kontrolüne geçtiğimiz için bir servo motor kullanacağız.

  1. Arduino Uno: (Mikrodenetleyici)
  2. 1 Adet SG90 veya MG995 Servo Motor: (Hareket aktüatörü)
  3. Jumper Kabloları

Servo Motor Bağlantı Detayları

Servo motorların 3 adet kablosu bulunur: Güç (Kırmızı), Toprak (Kahverengi/Siyah) ve Sinyal (Turuncu/Sarı). Servo motorlar doğru akım beslemesi ve dijital sinyal ile kontrol edilir.

Bağlantı Kontrol Listesi

  • Güç (Kırmızı Kablo): $\rightarrow$ Arduino 5V Pini (Güç Beslemesi)
  • Toprak (Kahverengi/Siyah Kablo): $\rightarrow$ Arduino GND Pini (Topraklama)
  • Sinyal (Turuncu/Sarı Kablo): $\rightarrow$ Arduino Dijital Pin 9 (PWM Sinyal Çıkışı)

Önemli Not: Güç Kaynağı

Birden fazla servo motor veya daha büyük motorlar kullanıyorsanız, Arduino'nun 5V pininin akımı yetersiz kalabilir. Bu durumda harici bir güç kaynağı (ortak GND ile) kullanmanız gerekir.


II. Kodlama ve Servo Kütüphanesi Kullanımı

Servo motor kontrolü, digitalWrite() yerine Servo.h kütüphanesindeki özel komutlarla yapılır. Bu kütüphaneyi programa dahil etmek için ilk satırı kullanmalıyız.

1. Arduino Program Kodu (Küçük Harf ve Sadeleştirilmiş)

// otomatik kapı simülasyonu (servo motor ile) // servo motor kütüphanesini programa dahil et #include <servo.h> // servo nesnesi oluştur (koda servo adıyla hitap edeceğiz) servo myservo; // servo motorun bağlı olduğu sinyal pinini tanımla const int servopin = 9; // pozisyon değişkenleri (derece) const int kapaliaci = 0; // kapalı pozisyon const int acikaci = 90; // açık pozisyon const int beklemesuresi = 3000; // 3 saniye bekleme void setup() { // servo motoru tanımlanan pine bağla (bu pin artık servo sinyali üretir) myservo.attach(servopin); // başlangıç pozisyonu: kapalı (0 derece) myservo.write(kapaliaci); delay(500); // motorun yerine gitmesi için kısa bir bekleme } void loop() { // adim 1: kapiyi aç // servo motoru kapalı açıdan açık açıya hareket ettir (0'dan 90'a) myservo.write(acikaci); // adim 2: kapi açik kalsin delay(beklemesuresi); // 3 saniye açık bekle // adim 3: kapiyi kapat // servo motoru açık açıdan kapalı açıya hareket ettir (90'dan 0'a) myservo.write(kapaliaci); // adim 4: kapi kapali kalsin delay(beklemesuresi); // 3 saniye kapalı bekle // loop döngüsü otomatik olarak tekrar başlar (kapi tekrar açılır) }

2. Detaylı Komut Açıklamaları

  • \#include <servo.h>: Bu satır, Arduino'ya motor kontrolü için gerekli olan Servo kütüphanesini kullanacağını bildirir. Bu kütüphane Arduino IDE'de standart olarak bulunur.
  • servo myservo;: Bu, Servo motoru kontrol etmek için kod içinde kullanacağımız bir nesne (instance) oluşturur ve ona "myservo" adını verir.
  • myservo.attach(servopin);: setup() kısmında bu komut, "myservo" nesnesini fiziksel olarak Arduino'nun 9 numaralı pinine bağlar. Bu, pinMode() komutunun servo motorlar için karşılığıdır.
  • myservo.write(aci);: Bu temel komut, servo motorun milini belirtilen açı değerine (0-180 arası) anında hareket ettirir. Bu projenin kalbidir.
  • delay(beklemesuresi);: Tıpkı trafik lambası projesinde olduğu gibi, bu komut da kapının açılıp kapandıktan sonra belirli bir süre beklemesini sağlar.

Daha Fazla Proje

Bir sonraki adımda, daha fazla proje için ...

Devam Edin