12 Ocak 2017 Perşembe

Arduino Joystick ile Servo Motor Kontrolü


                Piyasada bulunan joystick shield ile bunu projemiz çok kolay bir şekilde gerçekleştireceğiz.Ama isterseniz potansiyometreler ile siz bu  parçanın bir benzerini oluşturabilirsiniz.Sonuçta bu shieldin içerisinde x ve y eksenleri için için kullanılan iki tane pot var.Bunlar düzgün bir şekilde monte edilerek hazır bir şekilde bizlere sunulmuş.Ben kendim yapmak istiyorum diyorsanız potansiyometre ya da trimpotu kullanarak buna benzer ürünler oluşturabilirsiniz.Piyasada bu shieldin 10 TL gibi bir fiyatta olduğunu düşünürsek uğraşmaya değeceğini düşünmüyorum.Eksen kontrol kısmında ise iki tane servo motor kullanarak birini x dirğerini y ekseninde hareket etmesini sağlayacak şekilde pantiltler kullanabiliriz.Ya da siz sac veya tahtalar ile pantilt yapabilirsiniz.Yapmış olduğumuz proje daha önce servo motor kontrolü kısmında bahsetttiğimiz konuların üzerine inşa edilmiştir.Eğer yeni başlıyor ve meseleyi anlamaya çalışıyorsanız önce o konuya bakmanızı tavsiye ederim. Ayrıca buton kısmını kullanmadım isterseniz buton kısmında arduinonun bir dijital bacağına bağlayarak işlev ekleyebilirsiniz.

Joystick:


Josytick


Pan tilt:
 
Pan tilt



Devre Şeması:
Devre Şeması





Devre Programı:
#include <Servo.h>//Servo kütüphanesini kullanacağımız belirtiyor ve kütüphaneyi çağırıyoruz.
Servo xekseni;  // x ekseni için bir servo objesi oluşturuyoruz.
Servo yekseni; // y ekseni için bir servo objesi oluşturuyoruz.
int xeksenipin = 1;  // joystickin x ekseninin  bağlanacağı bacağı tutan değişkeni belirliyoruz.
int yeksenipin = 0;  //joystickin x ekseninin  bağlanacağı bacağı tutan değişkeni belirliyoruz.

int valx;    // servo motora bilgi gönderecek değişkeni tanımlıyoruz.
int valy; // servo motora bilgi gönderecek değişkeni tanımlıyoruz.
void setup() {
  xekseni.attach(5);  /* x ekseni servosunu 5 nolupine bağladık*/
    xekseni.attach(6);  /* y ekseni servosunu 6 nolupine bağladık*/

}
void loop() {
  valx = analogRead(xeksenipin);           /* potansiyometredeki değeri okuyoruz.(0-1023) arası değer gelecek*/
  valx = map(valx, 0, 1023, 0, 180);     // 0-1023 arası okuduğumuz değeri 0-180arası skala ediyoruz.
  xekseni.write(valx);   /*Skala ettiğimiz değeri servo motora gönderiyoruz.ve pozisyona gitmesini sağlıyoruz.*/

  valy = analogRead(yeksenipin);           /* potansiyometredeki değeri okuyoruz.(0-1023) arası değer gelecek*/
  valy = map(valy, 0, 1023, 0, 180);     // 0-1023 arası okuduğumuz değeri 0-180arası skala ediyoruz.
  yekseni.write(valy);   /*Skala ettiğimiz değeri servo motora gönderiyoruz.ve pozisyona gitmesini sağlıyoruz.*/
 
  delay(15);  // sevonun pozisyona gitmesi için belirli bir süre bekletiyoruz.

}
Disqus Yorumları Yükle

0 yorum