Labirent Oyun Konsolu Projesi Hakkında
Selamlar herkese! Şimdiye kadar sizlerle hep bilgiler paylaştığım yazılarım oldu, birlikte bir proje yapmaya ne dersiniz? Bu ilk birlikte yapma blogu için basit komponentlerle ve Arduino ile yapılacak bir proje bulayım dedim. Bunun için Dünya’nın gerçek anlamda en büyük maker topluluklarından biri olan instructables.com’da yarım saatlik bir araştırma yapmam yeterli oldu ve Labirent Oyun Konsolu projesini seçtim. Eğer Instructables’a daha önce uğramadıysanız mutlaka bir göz atmanızı, hatta günlük bültenine üye olmanızı tavsiye ederim.
İlk projemiz dedik, haydi başlayalım; Labirent Oyun Konsolu! Projeyi yapan Instructables üyesi Ahmet Azouz neden bu projeyi yaptığını şu şekilde açıklıyor: “Elektronik oyunlar oynamaktan sıkıldım ve fiziksel beceri oyunlarını araştırmaya başladım, bu sırada Labirent oyununu buldum ve bunu yapabilirim dedim! Bu oyun ilk kez 1946’da İsviçre’de BRIO tarafından geliştirilmiş.”
Bu projeyi temel Arduino eğitimi almış herkes yapabilir! Haydi projemizi yapmaya başlayalım, ana gövdeyi mukavvadan, elektronik donanımını Arduino’dan, yapıştırmaları da sıcak silikon ile yapacağız.
Kraft Malzemeler:
- Mukavva Karton (maket kartonu da olur)
- 2x Cıvata + Somun
- Sıcak Silikon
- Maket Bıçağı
- Cetvel
- Kalem
Elektronik Malzemeler:
- Arduino
- Küçük Boy Breadboard
- Jumper Kablolar
- 2x Servo Motor
- 1x Joystick Modülü
1. Adım: Oyun Konsolu Gövdesini Yapalım
Kartondan yapacağımız gövde için Projenin yazarı güzel bir doküman hazırlamış. Bu PDF’e (Labirent Oyun) uygun kestiğimiz kartonlarımızı şu şekilde pıştırıyoruz.
1: Yan kanatları yapıştırdıktan sonra servo motorumuzdan birini monte ediyoruz.Bu Y eksenin kontrol edeceğimiz motorumuz olacak. | 2: Mukavvadan bir çerçeve yaparak Bir kenarını Y ekseni motorumuza diğer kenarına delik açarak cıvata ve somunla karşı plakaya bağlayalım. Bu çerçevenin zıt kenarına da X eksenini kontrol edeceğimiz motorumuzu takalım. |
3: Labirentimizi mukavva ile görseldeki gibi tasarlıyoruz. | 4: Bu labirentin bir kenarına şekildeki gibi servo pervanesini yapıştırarak yine karşı kenarından gövdemize cıvata ve somunla takalım. |
5: Labirentimizi de ekledikten sonra konsolumuz (elektronik donanımımız haricinde) şekildeki gibi görülecek. Daha net görmeniz için somunları nerelere takacağınızı işaretledim 😊 |
2. Adım: Labirent Oyun Konsolu Elektronik Donanımı
Malzemelerde de olduğu gibi Arduino’muza 2 tane servo motor ve 1 tane joystick modülü bağlayacağız. Aşağıdaki devre şemasına bağlı kalarak devremizi kurabiliriz.
- Servo motorların;
- kahverengi kablosunu GND’ye
- kırmızı kablosunu 5V’a
- X ekseni Servo motorunun turuncusunu 8. Pin’e
- Y ekseni Servo motorunun turuncusunu 9. Pin’e
- Joystick modülünün;
- VCC çıkışını 5V’a
- GND çıkışını GND’ye
- VRX çıkışını A0’a
- VRY çıkışını A1’e
Bağlayarak devremizi kuracağız.
3. Adım: Program
Arduino IDE’mizi açarak aşağıdaki kodumuzu Arduino’muza yükleyelim. Kodumuzu biraz incelemek gerekirse;
İlk olarak servo kütüphanemizi tanımlayıp servolarımızı tanımlayalım.
HomePos değişkenleri sizin sabitlemenize göre değişebilir, bunu labirentin dümdüz durduğu konumlar olarak değiştirebilirsiniz.
Pos değişkenleri ise misket hareketi için eğdiğimiz açı, bunu da kendi modelinize göre değiştirebilirsiniz.
XAxle ve YAxle değişkenleri joysticke ait. Değişen verileri okuyarak kullanmamızı sağlıyorlar.
Range değişkeni joystickten okuduğumuz veriyi labirentimizin hareketine oranlamak için kullandığımız bir mapping değişkeni. Labirentin eğilme hassasiyeti için bu değeri arttırabiliriz. |
|
readAxis Proje yazarı tarafından geliştirilmiş bir fonksiyon. Joystick değerini okuyarak bunu Range değerimize oranlayarak bize bir hareket çıktısı veriyor.
İlk if’ler joystick değerini okuyarak servonun değerini değiştiren kodlarımız. Hepsinin if olmasının sebebi joysticki kuzeybatı gibi ara yöne çevirdiğimizde de bu hareketi gerçekleştirmesi.
İkinci if’lerse servo motorumuz hareket ettikten sonra mevcut konumu Pos değişkenlerine atayarak konumumuzu kaydediyor. |
Void Setup ve readAxis fonksiyonunu açıklamasını daha uzun olmasın diye eklemedim (: Eğer bir sorunuz olursa aşağıda yorum yaparak sorabilirsiniz.
Son Söz
Temel Arduino Eğitimimi aldım projeler yaparak kendimi geliştirmek istiyorum diyorsanız bu proje tam size göre! Hem mekanik geliştirme hem mekanik-elektronik uyumu için güzel bir alıştırma olacaktır. Bunun yanında siz neler ekleyebilirinizle ilgili birkaç önerim var;
- Bir buzzer ekleyerek harekete göre ses tonunu değiştirebiliriz.
- Oyun sürerken Buzzer ile bir şarkı çalabiliriz.
- Bir ekran ve SD Kart Modülü ekleyerek puanları kaydedebiliriz.
- Ekran ekleyerek süre sayabiliriz.
Üretmeyi ve geliştirmeye seven okuyucularımıza sevgiler, iyi eğlenceler!
Kaynakça:
- Instructables Platformu: https://www.instructables.com
- Projenin Yazarı: https://www.instructables.com/member/ahmedazouz/
- Projenin İngilizce Linki: https://www.instructables.com/id/Arduino-Marble-Maze-Labyrinth/?linkId=67481299
Kodun akış diyagramı var mı?