6 Eylül 2026 Pazar

Bu uygulamada servo motor <Servo.h> kütüphanesi kullanılarak kontrol edilmiştir. Devrede kullanılan servo motor SG90 servo motordur.


Programlama Kodları

//AÇIKLAMA
//Bu uygulama kaldığı yeri hatırlayan servo motor uygulamasıdır.
//Uygulamada servo motor 0 dereceden 180 dereceye, ardından 180 dereceden 0 dereceye
//sürekli dönüş sağlar. Dönüş açısı ve dönüş yönü ise her seferinde EEPROM'a kaydedilir.
//Arduino'nun enerjisini kestiğimizde servo motor son konumunda durur. Enerjiyi tekrar
//verdiğimizde ise en sonki dönüş yönü ve açısı EEPROM'da kayıtlı olduğundan, değerleri
//buradan alarak dönüşüne devam eder.
//NOT: Bu Servo motor uygulamasında motorun daha sağlıklı çalışabilmesi için
//Arduino'nun 12V bir güç kaynağı ile beslenmesi önem arz eder.

#include <Servo.h>
#include <EEPROM.h>

Servo servoMotor;

int servoAcisi;
int donusYonu = 0;                          /* 0 ise servo ileri, 1 ise geri yönde dönmektedir. */

void setup()
{
  servoMotor.attach(9);                     /* Servo Arduinonun 9 numaralı pinine takıldı */

  servoAcisi = EEPROM.read(1);              /* Servonun kaldığı yer EEPROMdan alınıyor */
  if (servoAcisi < 1 || servoAcisi > 179)   /* EEPROMda servo açısı yerine başka bir veri varsa */
  {
    servoAcisi = 1;                         /* Motor ilk konumuna donsun */
  }
  donusYonu = EEPROM.read(0);
  if (donusYonu != 1 && donusYonu != 0)     /* EEPROMda dönüş yönü yerine başka bir veri varsa */
  {
    donusYonu = 0;                          /* Motor ileri yönde donsun */
  }
}
void loop()
{
  servoMotor.write(servoAcisi);             /* Servo motoru kontrol ediyoruz */
  EEPROM.write(1, servoAcisi);              /* Son açıyı EEPROMa kaydediyoruz */

  if (donusYonu == 0)                       /* Motor ileri önde donuyorsa */
  {
    servoAcisi = servoAcisi + 5;            /* 5 derece döndürelim */
    if (servoAcisi > 179)                   /* Motor ileri yönde sona ulaştıysa */
    {
      servoAcisi = 179;
      donusYonu = 1;                        /* Geri yönde dönmeye basla */
      EEPROM.write(0, donusYonu);           /* Yon bilgisi EEPROMa kaydedildi */
    }
  }
  else                                      /* Motor geri yönde donuyorsa */
  {
    servoAcisi = servoAcisi - 5;            /* 5 derece geri don */
    if (servoAcisi < 1)                     /* Motor geri yönde sona ulaştıysa */
    {
      servoAcisi = 1;
      donusYonu = 0;                        /* ileri yönde dönmeye basla */
      EEPROM.write(0, donusYonu);           /* Yon bilgisi EEPROMa kaydediliyor */
    }
  }

  delay(100);                                /* Motorun konumunu alması için biraz bekleme */
}


Devre Şeması




0 comments:

Yorum Gönder

Arduino Eğitimi Konu - 7

Toplam Sayfa Görüntüleme Sayısı

Sensörlerin Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com