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:
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.
}
0 yorum