- Gerekli Bileşenler
- Arduino Leonardo
- Çift Eksenli XY Joystick Modülü
- Devre şeması
- Kod ve Çalışma Açıklaması
Daha önce nasıl çalıştığını anlamak ve sol, sağ, yukarı ve aşağı hareketinde dört LED'i kontrol etmek için Joystick'i Arduino UNO ile arayüzlendirdik. Bu projede, sol, sağ, yukarı ve aşağı hareketler gerektiren herhangi bir bilgisayar oyununu oynamak için Gamepad veya oyun denetleyicisi ile aynı Joystick'i kullanacağız. Daha fazla kontrol seçeneği gerektiren oyunları oynamak için iki veya daha fazla oyun çubuğu kullanılabilir. Burada Joystick'i Oyun denetleyicisi olarak arayüzlemek için Arduino Leonardo'yu kullanacağız. Arduino Leonardo'nun Uno'ya göre avantajı, üzerine USB sürücüleri kurabilmemiz ve bağlandığında bilgisayar tarafından fare, klavye veya joystick olarak algılanabilir.
Gerekli Bileşenler
- Arduino Leonardo
- Çift Eksenli XY Joystick Modülü
- Arduino IDE
- Bağlantı telleri
Arduino Leonardo
Bu proje için Arduino Leonardo kullanıyoruz, ATmega32u4 tabanlı bir mikrodenetleyici kartıdır. 20 dijital giriş / çıkış pini (bunlardan 7'si PWM çıkışı ve 12'si Analog giriş olarak kullanılabilir), 16 MHz kristal osilatör, mikro USB bağlantısı, güç girişi, ICSP başlığı ve sıfırlama düğmesi vardır. Mikrodenetleyiciyi desteklemek için gereken her şeyi içerir; başlamak için bir USB kablosuyla bir bilgisayara bağlayın veya bir AC-DC adaptörü veya pille çalıştırın.
Leonardo, ATmega32u4'ün ikincil bir işlemci ihtiyacını ortadan kaldıran yerleşik USB iletişimine sahip olmasıyla önceki tüm anakartlardan farklıdır. Bu, Leonardo'nun bağlı bir bilgisayara sanal (CDC) seri / COM bağlantı noktasına ek olarak fare ve klavye olarak görünmesini sağlar.
Teknik özellikler
Mikrodenetleyici | ATmega32u4 |
Çalışma gerilimi | 5V |
Giriş Voltajı (Önerilen) | 7-12V |
Giriş Voltajı (limitler) | 6-20V |
Dijital I / O Pinleri | 20 |
PWM Kanalları | 7 |
Analog Giriş Kanalları | 12 |
G / Ç Pini Başına DC Akım | 40 mA |
3.3V Pin için DC Akım | 50 mA |
Flash Bellek | 32 KB (ATmega32u4), bunun 4 KB'ı bootloader tarafından kullanılıyor |
SRAM | 2,5 KB (ATmega32u4) |
EEPROM | 1 KB (ATmega32u4) |
Saat hızı | 16 MHz |
Uzunluk | 68,6 mm |
Genişlik | 53,3 mm |
Ağırlık | 20 g |
PIN Çıkışı Referansı
Çift Eksenli XY Joystick Modülü
Joystickler farklı şekil ve boyutlarda mevcuttur. Aşağıdaki şekilde tipik bir Joystick modülü gösterilmektedir. Bu Joystick modülü tipik olarak Analog Çıkışlar sağlar ve bu modül tarafından sağlanan çıkış voltajları, onu hareket ettirdiğimiz yöne göre değişmeye devam eder. Ve bir mikrodenetleyici kullanarak bu voltaj değişikliklerini yorumlayarak hareketin yönünü elde edebiliriz. Daha önce joy stick ile farklı mikro denetleyiciler arasında arayüz oluşturuyorduk:
- Joystick ile Arduino Arayüzü
- Raspberry Pi ile Joystick'i Arayüz
- Joystick ile PIC Microcontroller arasında arayüz oluşturma
- AVR Mikrodenetleyici ile Joystick Arayüzü
Bu joystick modülünün gördüğünüz gibi iki ekseni vardır. X ekseni ve Y eksenidir. JOY STICK'in her ekseni bir potansiyometreye veya tencereye monte edilmiştir. Bu potların orta noktaları Rx ve Ry olarak çıkarılır. Dolayısıyla, Rx ve Ry bu potların değişken noktalarıdır. Joystick bekleme modundayken, Rx ve Ry voltaj bölücü görevi görür.
Joystick yatay eksen boyunca hareket ettirildiğinde, Rx pinindeki voltaj değişir. Benzer şekilde, dikey eksen boyunca hareket ettirildiğinde, Ry pinindeki voltaj değişir. Yani iki ADC çıkışında dört yön Joystick'imiz var. Çubuk hareket ettirildiğinde, her pimdeki voltaj yöne bağlı olarak yüksek veya düşük olur.
Devre şeması
Bu Arduino Joystick Oyun Denetleyicisi, Arduino ve Joystick arasında aşağıdaki gibi bağlantılar gerektirir:
Kod ve Çalışma Açıklaması
Demo video ile birlikte eksiksiz kod, sonunda verilir; burada birkaç önemli kısmını açıklıyoruz.
İlk olarak, klavye kitaplığını başlatmamız gerekiyor
#Dahil etmek
Aşağıdaki kodun ardından, sırasıyla Analog pin A0 ve A1 için Joystick modülünün X ve Y eksenini başlattık.
const int X_pin ve const int Y_pin sırasıyla
VRX pininin analog değeri okunur ve değer 1023 ise "yukarı" komutu verilir ve değer 0 ise "aşağı" komutu verilir.
Benzer şekilde VRY pininin analog değeri okunur ve değer 1023 ise "right" komutu verilir ve değer 0 ise "left" komutu verilir.
Joystick ayrıca üstte bir basma düğmesine sahiptir, bu nedenle bu düğme (SW) de okunur ve düğmeye basılırsa değer 0 olur, o zaman "enter" komutu verilir.
Sonunda kodu Arduino'ya yazın ve Arduino'yu bilgisayara bağlayın.
Daha sonra kontrol panelinizdeki ' Aygıtlar ve Yazıcılar'ı kontrol edin, aşağıdaki resimde gösterildiği gibi aygıtlar bölümünün altında “ Arduino Leonardo” yu görebileceksiniz. Artık joystick ile oynamaya hazırsınız.
Bu Joystick'i kullanarak herhangi bir oyun kontrolünü kontrol edebiliriz. Joystick'in içinde iki potansiyometre vardır, biri X ekseni hareketi ve diğeri Y ekseni hareketi içindir. Her potansiyometre Arduino'dan 5v alır. Joystick'i hareket ettirdikçe gerilim değeri değişecek ve Analog pinler A0 ve A1'deki analog değer de değişecektir. Böylece joystick bir gamepad görevi görür.
Yani bu, normal bir Joystick'in Arduino Leonardo kullanılarak bir Oyun Kontrolcüsüne dönüştürülmesi ve sola, sağa, yukarı ve aşağı hareket etmek için tüm kontrollere sahip oyunları oynamak için kullanılabilmesidir. Önceden söylendiği gibi, bu temel dört işlevden başka kontroller elde etmek için birden fazla Joystick arabirimlenebilir.