Yazılar Eğitimler

Mblock ile Joystick ve Led Uygulaması

Önceki yazılarımızda Joystick ve Led’in nasıl çalıştığını anlatmaştık ve uygulamıştık. Bu yazımızda ise Joystick ve Led’i ortak kullanarak bir uygulama yapacağız.

•Arduino ve BreadBoard kullanarak Joystick ve Led’den oluşan devre kuracağız.
•Kullanacağımız blokları tanıyacağız.
•Joysticke bağlı olarak ledlerin yanmasını kontrol edecek algoritmayı oluşturacağız
•Joystickin eksen değerlerine bağlı olarak Ledlerin yanma durumunu gözlemleyeceğiz.

Gerekli Malzemeler:
•1 Adet Arduino Uno
•1 Adet BreadBoard
•1 Adet Joystick
•4 Adet Led
•4 Adet 220Ω Direnç
•4 Adet D-E Jumper kablo
•10 Adet E-E Jumper kablo

Gerekli Araçlar:
•MBlock
•3DRoboLab Türkçe Bloklar.(Görüntülemek için buraya tıklayınız.)

Gerekli Malzemeleri ve Araçları hazırladıktan sonra kullanacağımız Joystickİ tanyalı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.

 

Devremizi oluşturalım

Joystick bağlantısı:

  • Gnd pinini arduinonun Gnd pinine,
  • Vcc (5V) pinini arduinonun 5V pinine,
  • VRx pinini arduinonun A0 numaralı pinine,
  • VRy pinini arduinonun A1 pinine bağlıyoruz.

Ledlerin bağlantısı

  • Ledleri şekilde göründüğü gibi devre tahtasına bağlıyoruz
  • Uzun bacakları dijital çıkışlara bağlıyoruz
  • Kısa bacaklarıda araya direnç ekleyerek GND(toprak) hattına 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.

X ekseni A0 pininde bağlı olduğu için X değişkenini A0’a tanımlıyoruz.

Y ekseni A1 pininde bağlı olduğu için Y değişkenini A1’e tanımlıyoruz.

Seri porta değerleri yazması için serial veri yaz bloğunu kullanıyoruz.

  • Eğer X<510 ise yani Joystick sola hareket ediyorsa 10 numaralı pine bağlı olan led (board üzerinde soldaki) yanar.
  • Eğer X>520 ise yani Joystick sağa hareket ediyorsa 8 numaralı pine bağlı olan led (board üzerinde sağdaki) yanar.
  • Eğer Y>530 ise yani Joystick yukarı hareket ediyorsa 9 numaralı pine bağlı olan led (board üzerinde yukarıdaki) yanar.
  • Eğer Y<510 ise yani Joystick aşağı hareket ediyorsa 11 numaralı pine bağlı olan led (board üzerinde aşağıdaki)yanar.

Başka bir program karta yüklenene kadar döngü sürekli olarak tekrar eder.

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ğe bağlı olarak ledlerin yanıp sönme durumunu 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);
    pinMode(10,OUTPUT);
    pinMode(8,OUTPUT);
    pinMode(9,OUTPUT);
    pinMode(11,OUTPUT);
}

void loop(){
    X = analogRead(A0+0);
    Serial.println(String("X:")+X);
    Y = analogRead(A0+1);
    Serial.println(String("Y:")+Y);
    _delay(0.2);
    if((X) < (510)){
        digitalWrite(10,1);
    }else{
        digitalWrite(10,0);
    }
    if((X) > (520)){
        digitalWrite(8,1);
    }else{
        digitalWrite(8,0);
    }
    if((Y) > (530)){
        digitalWrite(9,1);
    }else{
        digitalWrite(9,0);
    }
    if((Y) < (510)){
        digitalWrite(11,1);
    }else{
        digitalWrite(11,0);
    }
    _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ükle butonuna 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.

Kodları yükleyip joysticki hareket ettirdiğinizde sizde ledlerin yanıp söndüğünü göreceksiniz.

 

İyi Eğlenceler…

Mert Dursun
administrator
No comments yet! You be the first to comment.

Bir cevap yazın