Yazılar Eğitimler mBlock Eğitimi

MBlock ile Joystick Kontrolü

Joytick kullanımı ve uygulama

Joystick, oyun çubuğu, Kontrol Kolu, Yönetim Kolu veya İdare Çubuğu.

Esasen kontrol çubuğu anlamında, video oyunlarında kontrol sistemini oluşturan, oyunu oynatan ve modeline göre giriş, çıkış ve algılama fonksiyonu olan kontrol aracıdır.

İlk çıkan Joystickler çok kaba gözükürken şimdi ise oyunun türüne göre şekilleri değişiyor.

Joystick, oyun konsollarında ve bilgisayarlarda kullanılan bir arabirim çevre elemanıdır.

Ne yapacağız?

  • Arduino uno üzerine joystick’ten oluşan bir devre kuracağız
  • Kullanacağımız blokları tanıyacağız.
  • Joystick’in çalışması için gerekli algoritmayı kuracağız.
  • Eksen değerlerindeki değişiklikleri gözlemleyeceğiz.

Gerekli Malzemeler:

  • 1 Adet Arduino Uno
  • 1 Adet Joystick
  • 4 Adet iki ucu erkek kablo

Gerekli Araçlar:

  • Mblock
  • 3DRoboLab Türkçe bloklar.

MBlock uygulamasına 3DRoboLab Türkçe bloklar uzantısı ekleme.

Programı çalıştırıp üst kısımdaki araç çubuğundan uzantılar ikonuna tıklıyoruz.

Daha sonra açılan pencereden Uzantıları Yönet ikonuna tıklıyoruz.

Açılan Pencerenin Arama bölümüne 3DRoboLab yazıyoruz.

Daha sonra 3DRoboLab adlı uzantıyı indirip, Uzantı ekle ikonuna tıklıyoruz ve 3DRoboLab Türkçe Bloklar MBlock kütüphanenize eklenmiş oluyor.

basit uygulamalar için hazırlamış olduğumuz kodların çalışmasında herhangi ek bir işlem yapmanıza gerek yoktur.

MBlock Programı üzerinden Arduino kartına bağlanma.

Programı çalıştırıp üst kısımdaki araç çubuğundan Kartlar ikonuna tıklıyoruz.

Daha sonra açılan pencereden kullandığımız kartı seçiyoruz.

Kartı seçtikten sonra gene araç çubuğu üzerinde bulunan Bağlan ikonuna tıklıyoruz.

Karşımıza çıkan pencerede seri port’un üzerine geliyoruz ve yan tarafta bağlı COM’lar çıkıyor. Arduino kartı hangi COM’da bağlıysa o COM’u seçiyoruz ve program üzerinden karta bağlanmış oluyoruz.

Kullanacağımız Joystick’i tanıyalım.

  • Joystick modülünün bağlantı için 5 pini bulunmaktadır.
  • Bu pinlerden VRx yatay eksenindeki  sinyalleri okumayı sağlar. (ismi farklı modellerde VERT olarak değişiklik gösterebilir.)
  • VRy dikey eksendeki sinyalleri okumayı sağlar.(ismi farklı modellerde HORZ olarak değişiklik gösterebilir.)
  • SW pini ise joystick tıklama buton pin değerini okumayı sağlar.(ismi farklı modellerde SEL olarak değişiklik gösterebilir.)
  • Joystick modülü yatay ve dikey eksende 0 ile 1023 arasında analog değerler üretir.

Joystick modülümüzü Arduino’ya bağlayalım

  • Gnd pinini arduinonun Gnd pinine,
  • Vcc (5V) pinini arduinonun 5V pinine,
  • VRx pinini arduinonun A1 numaralı pinine,
  • VRy pinini arduinonun A2 pinine,

Bağlıyoruz.

Şimdi programı oluşturabiliriz.

Serial BaudRate bloğu bir iletişim bağlantısında verinin ne kadar hızlı aktarıldığını tanımlar. MBlock uygulamasının veri aktarma hızı 115200 olduğu için bu seçimi gerçekleştirdik.

Serial Veri Yaz bloğu da, Bilgisayarın USB portuna bağlı olan arduino kartından, seri porta butonun durumunu göndermesini sağlar. Böylece bilgisayara arduino kartından okuduğumuz sensör verilerini gönderebiliriz.

Yazdığımız kodlar Arduinonun anlayacağı dile çevrilir. Ardından Arduino kartına yazılır.

Bu programı Arduinoya yükleyip Joysticki hareket ettirdiğimizde eksenlerin konumundaki değişikliği gözlemleyebilirsiniz.

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>

 /* 3D Robotics Laboratory: www.3drobolab.com */
double angle_rad = PI/180.0;
double angle_deg = 180.0/PI;
double X;
double Y;

void setup(){
    Serial.begin(115200);
    pinMode(A0+0,INPUT);
    pinMode(A0+1,INPUT);
}

void loop(){
    X = analogRead(A0+0);
    Serial.println(String("X:")+X);
    Y = analogRead(A0+1);
    Serial.println(String("Y:")+Y);
    _loop();
}

void _delay(float seconds){
    long endTime = millis() + seconds * 1000;
    while(millis() < endTime)_loop();
}

void _loop(){
}

 

Hazırladığımız kod bloklarının Arduinonun anlayacağı dile (C/C++) çevriliyor. Kodları yüklemek için Arduino’ya yüklebutonuna tıklamanız yeterlidir.

Kodlar derlendikten sonra Arduino’ya 30-50 sn. arasında yüklenmiş olacaktır.

Joystickin yatay ve dikey eksendeki ürettiği analog değer en az 0, en fazla 1023 dür.

Bundan dolayı joysticki hareket ettirmediğinizde yani x ve y konumu ortada olduğunda aldığımız değerler yaklaşık olarak 510-530 arasındadır.

Joysticki x ve y yörüngesinde hareket ettirdiğimizde değerlerin değiştiğini Seri Port Ekranından gözlemleyebilirsiniz.

İyi Eğlenceler…

 

 

Mert Dursun
subscriber

Comments

Comments are closed.