Joystik kullanılarak servo motor kontrolünün nasıl yapıalcağına ilişkin çalışmanın ayrıntıları aşağıdaki gibidir.
Joystick x ve y düzleminde hareket eder. Yani iler geri sağa sola hareket eder. Bu özellikten dolayı x düzlemindeki hareketten oluşan değerlerle bir servo motor Y düzlemindeki hareketten oluşan değerlerle de ikinci servo motoru hareket ettiririz.
joystick te 5 pin bulunmaktadır. GND,5V, VRx, VRy, SW.
GND – pine, 5v +pine bağlanarak ihtiyacı olan gerilimi veriyoruz. VRx ve VRy pinleri (A)0 ve (A)1 analog pinlerine bağlanarak değerleri alırız. SW ise joystick üzerine bastığımızda butona basmış oluyorsunuz. Buton işlemi yapmak istiyorsanız bu pinide dijital pinlerin birine bağlayabilirsiniz.
Joystickte potansiyometreden farklı olarak , joystik hangi konumda bırakırsanız bırakın orta konuma geri döner. Yani servo motor her zaman başlangıç konumuna geri döner. Potansiyometrede böyle bir durum söz konusu değildi. Buna dikkat edelim projelerimizde.
Bizim kullanacağımız klasik Servo motorlar data pininden verdiğimiz değerle dönme açısını ayarlıyoruz. 3 kablo var ortadaki kablo +5v'a, sarı kabloyu bizim belirlediğimiz dijital pinlerin birine diğer kabloyu da GND (-) bağlıyoruz. Burada motora 180 derecelik açı ile dönüş sağlıyoruz. (90 ile -90 arasında)
Gerekli Malzemeler
1-Arduino Uno(1 adet)
2-BreadBoard
3-Servo Motor(2)
4-Joystick
5-Jumper Kablolar
Devreyi çizdikten sonra sıra mBlock ile kodlamaya geldi. Kodlamada dikkat etmemiz gereken bir nokta var. joystcikten gelen değerler 0-1023 arasında. Ancak ihtiyacımız olan değerler servo motorun dönüş açısı 0-180 derece arasındadır. Bunun için joystcikten gelen değerin servo motorun değerine dönüştürmemiz gerekiyor.Bunun için joystcik 1023 değerindeyken servo motor 180 derecede olacaktır. 1023den 180 değerini elde etmek için 1023/180=5,63 oran var arada. Yani biz joystcikden gelen değeri 5,63 böldüğümüzde servo motorun açı değerini oluşturabiliriz. Virgüllü sayılarla uğraşmamak için de direk 6 sayısına bölmeyi tercih ederiz.
Derece1 ve Derece2 diye iki tane veri değişkeni oluşturup program başladığında değerlerini 0 yaparız. Sürekli tekrarla bloğunda (A) 0 Analog pininden ve (A) 1 Analog pininden okunan değeri direk 6 ya bölerek derece1 ve derece2 değişkenlerine aktarıyoruz. Sonra 12 dijital pine bağlı servo pini açısını da derece1 13 dijital pine bağlı servo pini açısını derece2 yapıyoruz. Yani bir üst satırda yaptığımız işlem sonucunu Derece1 ve Derece2 değişkenlerine aktardıktan sonra artık joystcikden gelen değerler derece1 ve derece2 değişkenin de olduğu için 12 dijital pindeki ve 13 dijital pindeki servo motorların açısı Derece değişkelerindeki o değerde dönecektir.
İki tane servo motor ve iki tane potansiyometre yerine kullanılacak olan joystcik bağlıyoruz. Servo motorların birinin data pini 13 nolu pine birini de 12 nolu pine bağlayacağız . + ve – lerini de diğer servo motorda olduğu gibi breadBoard üzerindeki + ve – lere bağlayacağız. Joystick data pinlerini de (A)0 ve (A)1 analog pinlerine bağlıyoruz.
Kaynak: http://kodlamayap.com/