mBlock ile Arduino – Joystick ile Oyun Uygulaması

28.02.2020
3.502
mBlock ile Arduino – Joystick ile Oyun Uygulaması

Merhabalar,

Bu uygulamamızda 2 eksenli (X ve Y) joystick modülü ile interaktif bir oyun uygulaması geliştireceğiz.

2 Eksenli (X ve Y) Joystick Modülü Nedir?

Oyun konsollarında ve kumanda devrelerinde sıklıkla gördüğümüz Joystick; yatay (x) ve düşey (y) koordinat düzeninde hareket edebilen 2 adet potansiyometreye sahip bir modüldür. Ayrıca modül üzerinde bir de buton bulunur. Bu buton joystick kolu dikine basılarak kullanılan bir pull-up butondur. Yani buton basılı değilken lojik-1 seviyesindedir. Basılınca lojik-0 değerini alır.

Arduino ile Joystick kontrollü birçok uygulama geliştirilebilir. Özellikle motor kontrollü ve robotik devrelerde sıklıkla kullanılan bir modüldür.

Joystick modülünün pin şeması son derece basittir. Aşağıdaki resimde görüldüğü üzere 5 pinden oluşan modülün GND pini toprak hattına, +5V pini Arduino 5V pinine, VRx pini ve VRy pinleri analog pinlere, SW pini ise buton için dijital pine bağlanır.

mBlock ile Arduino – Joystick ile Oyun Uygulaması için gerekli malzemeler:

  1. Arduino ve USB Kablo
  2. 1 adet Joystick Modülü
  3. 2 adet LED (Kırmızı ve Yeşil)
  4. 2 adet 220 ohm direnç (Kırmızı – kırmızı – kahverengi)
  5. Jumper Kablolar
  6. Devre Tahtası

Uygulamamızda sahnede hareket eden bir Kedi Kuklası olacaktır. Kedi kuklasını joystick modülü hareket ettireceğiz. Ayrıca kuklanın çarpmaması gereken bina engelleri olacaktır. Bina engeline çarptığı zaman bir can kaybedecektir. Kırmızı LED bu anda yanacaktır. Kedi kuklası sahneden yıldızları toplamaya çalışacaktır. Bu esnada da yeşil LED yanacaktır.

Oyun uygulaması interkatif olduğundan sahnede bütün kuklalar dinamik olarak hareket edecektir. Yalnızca ana karakter olan Kedi Kuklasının kontrolünü yapmaya çalışacağız.

Uygulamada 6 adet değişken tanımlaması yaptık. Bunlar aşağıdaki gibidir:

  1. BUTON Değişkeni: Joystick modülünde yer alan butona bastığımızda lojik değeri tutacaktır. Uygulamada buton basılı tutulursa kedi kuklası sahneden gizlenecektir. Değilse görünecektir.
  2. CAN Değişkeni: Oyunda 3 can hakkı olacaktır. Bu canlar sahnede 3 tane KALP kuklası ile gösterilecektir. Her engele çarptıkça bu kalpler sırasıyla sahneden silinecektir.
  3. JX Değişkeni: Joystick modülünün yataydaki potansiyometresinden gelen değeri tutacaktır. Kedi Kuklası bu değere göre yatayda hareket edecektir.
  4. JY Değişkeni: Joystick modülünün düşeydeki potansiyometresinden gelen değeri tutacaktır. Kedi Kuklası bu değere göre düşeyde hareket edecektir.
  5. SAYAÇ Değişkeni: Oyunda CAN ile birlikte süre de olacaktır. 60 saniye olarak tanımlanan bu değişken birer saniye aralıklarla geriye doğru sayım yapacaktır. CAN bittiğinde ya da süre tamamlandığında oyun bitecektir.
  6. STAR Değişkeni: Kedi Kuklasının sahneden topladığı yıldız kuklası sayısını tutacaktır. 60 saniyede en çok yıldızı toplamaya çalışmak oyunun amaçlarındandır.

Sahnede yer alan kuklaları aşağı görebiliriz:

Kedi Kuklası Kodları

Uygulama ile ilgili temel tanımlamalar burada yapılmıştır. STAR değişkeni 0, CAN değişkeni 3 ve SAYAÇ değişkeni 60 değerlerini tutmaktadırlar. Kedi kuklasının yıldız ya da bina kuklasına çarpması durumunda salınan haberler sonucunda kılık değiştirecektir. Asıl önemli kod ise kuklanın hareket kodlarını ifade eden sürekli tekrarla bloğunun içinde yer alan kodlardır. Hem X hem de Y değerlerini 400-600 aralığında çalıştırdık. Uygulamanın ilk çalıştığı anda bu değişkenlerin değerlerini gözlemleyerek istenilen aralıklar belirlenebilir. Joystick modülünün potansiyometreleri Kedi Kuklasını 30’ar birim ileri-geri ya da yukarı-aşağı hareket ettirecektir. Son olarak buton ile ilgili olan kodda ise joystick modülünün butonu basılı ise kedi kuklası gizlenecek, basılı değilse görünür kalmaya devam edecektir.

Bina Kuklası Kodları

Bina kuklasının oyunda birbirinden farklı 10 adet kılığı bulunmaktadır. Hareket zeminde 5’er birim azalarak sahnenin soluna doğru hareket şeklinde olacaktır. Her kılık bina kuklasının sahnedeki kılığı sahneden çıkar çıkmaz görünmekte ve aynı paralelde hareketine devam etmektedir.

Kedi Kuklası binaya temas edince can haberleri salınacak ve bu haberlere göre sahnedeki kalp kuklaları sahneden sırayla silinecek ve can değişkeni birer birer azalacaktır. Ayrıca devre tahtasındaki kırmızı LED bu temas ile yanacaktır.

Bulut Kuklası Kodları

Bina kuklasının hareketine benzer bir hareket sergileyecektir. 4 adet kılığı bulunmaktadır. Sahnenin sağ tarafından düşeyde 0 ile 180 arası rastgele bir konumdan sahneye girecektir.

Yıldız Kuklası Kodları

Yıldız kuklası sahneye sağdan rastgele bir konumdan dönerek ve renkleri değişerek giriş yapacaktır. Kedi kuklasına temas ettiği anda star haberini salacak ve STAR değişkenini 1 arttıracaktır. Temas anında devre tahtasındaki yeşil LED yanacaktır.

Kalp Kuklaları Kodları

Kalp kuklalarının kodları sadece Kedi Kuklasının binalara çarpması durumunda çalışacaktır. Her temas ayrı bir haber salacak ve bu habere göre sahneden gizlenecektir.

Sahne (Dekor) Arkası Kodları

Oyunun merkezi ise burada kodlanmıştır. Arka planda çalan müzik ve oyun sonu işlemleri burada kodlanmıştır. CAN ya da SAYAÇ değişkeni 0 olunca GAME OVER haberi salınarak tüm kuklaları etkilemiştir. Ayrıca geriye doğru sayım işlemi de burada kodlanmıştır. Sahnede 2 adet dekor kullanılmıştır. Bunları aşağıda görebiliriz:

Ana Dekor
Oyun Bitti Dekoru

mBlock ile Arduino – Joystick ile Oyun Uygulaması Devre Şeması

mBlock ile Arduino – Joystick ile Oyun Uygulaması Devresi

mBlock ile Arduino – Joystick ile Oyun Uygulaması Devresi

mBlock ile Arduino – Joystick ile Oyun Uygulama Videosu

mBlock ile Arduino – Joystick ile Oyun Uygulama Kodlarını İndirmek İçin Tıklayınız…

Bir sonraki uygulamada görüşmek üzere…

BİR YORUM YAZIN

ZİYARETÇİ YORUMLARI - 3 YORUM
  1. Anonim dedi ki:

    elinize sağlık

  2. Anonim dedi ki:

    çalişmıyor

    1. admin dedi ki:

      Oyunun tüm aşamalarını adım adım anlattım. Devrenizde, joystick ya da kodlarınızda hata olmalı. Kontrol ediniz.

Bilişim Teknolojileri ve Yazılım Ders Notları, Uygulamalar, Kodlama ve Arduino

© 2018-2024 BlogKod