- Gerekli Malzeme
- Devre şeması
- Joystick Modülü
- Kod ve Açıklama
- Arduino ile Joystick kullanarak LED'leri kontrol etme
Joystick kelimesini dinlerken aklımıza gelen ilk şey oyun kumandasıdır. Evet, tamamen aynıdır ve oyun amaçlı kullanılabilir. Oyun dışında, DIY elektroniğinde birçok başka uygulamaya sahiptir. Bu joystick, sırasıyla X ve Y düzlemi için iki potansiyometrenin kombinasyonundan başka bir şey değildir. Gerilimi potansiyometre üzerinden okur ve Arduino'ya analog değer verir ve joystick milini hareket ettirdikçe analog değer değişir (bu sadece potansiyometre göstergesidir).
Bu Devrede, Joystick'in hareketine göre sadece dört LED'i kontrol ederek Joystick'i Arduino ile arayüzlendiriyoruz. Joystick mili hareketinin yönünü temsil edecek şekilde 4 adet led yerleştirdik. Bu kumanda kolunda ayrıca çeşitli başka amaçlar için kullanılabilen veya boşta bırakılabilen bir basma düğmesi vardır. Joystick düğmesine basıldığında, tekli LED AÇIK hale geleceği için, joystick anahtarına da tek bir LED eklenir.
Gerekli Malzeme
- Arduino UNO
- Joystick Modülü
- LED'ler-5
- Direnç: 100ohm-3
- Bağlantı telleri
- Breadboard
Devre şeması
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 Joystick'i AVR ve Raspberry Pi ile arayüzledik.
Bu joystick modülünün gördüğünüz gibi iki ekseni vardır. X ekseni ve Y eksenidir. JOYSTICK'in her ekseni bir potansiyometreye veya pota monte edilmiştir. Bu saksıları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 bir 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 biz dört var iki ADC çıkışları üzerinde Joystick yön. Çubuk hareket ettirildiğinde, her pimdeki voltaj yöne bağlı olarak yüksek veya düşük olur.
Burada, bu Joystick modülünü, sonunda videoda gösterildiği gibi dahili bir ADC (Analogdan Dijitale Dönüştürücü) mekanizması ile birlikte gelen Arduino UNO ile birleştiriyoruz. Arduino'nun ADC'sini kullanma hakkında daha fazla bilgiyi burada bulabilirsiniz.
Kod ve Açıklama
Tam Arduino Kodu sonunda belirtilmiştir.
Aşağıdaki kodda sırasıyla analog pin A0 ve A1 için Joystick modülünün X ve Y eksenini tanımladık.
#define joyX A0 #define joyY A1
Şimdi, aşağıdaki kodda, Joystick modülünün Switch (basma düğmesi) için Arduino'nun PIN 2'sini başlatıyoruz ve buton durumu ve buton durumu1 değeri başlangıçta 0 olacaktır.
int düğmesi = 2; int buttonState = 0; int buttonState1 = 0;
Aşağıdaki kodda, baud hızını 9600'e ayarlıyoruz ve Pin 7'yi bir çıkış pini ve bir giriş Pini olarak düğme pini olarak tanımlıyoruz. Başlangıçta, düğme pimi, Switch düğmesine basılıncaya kadar yüksek kalacaktır.
geçersiz kurulum () {pinMode (7, OUTPUT); pinMode (düğme, GİRİŞ); digitalWrite (düğme, YÜKSEK); Serial.begin (9600); }
Burada bu kodda analog pin A0 ve A1'den değerleri okuyup seri olarak yazdırıyoruz.
int xValue = analogRead (joyX); int yValue = analogRead (joyY); Serial.print (xValue); Seri.baskı ("\ t"); Serial.println (yValue);
Joystick milinin hareketine göre LED'i açma ve kapama koşulları aşağıdaki kodda tanımlanmıştır. Burada sadece Arduino'nun A0 ve A1 pinlerinde analog voltaj değerleri alıyoruz. Joystick'i hareket ettirdikçe bu analog değerler değişecek ve joystick'in hareketine göre LED yanacaktır.
Bu durum, Joystick milinin -Y ekseni yönünde hareketi içindir.
eğer (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } else {digitalWrite (10, LOW);}
Bu durum, Joystick milinin -X ekseni yönünde hareketi içindir.
eğer (xValue <= 10 && yValue> = 500) {digitalWrite (11, HIGH); } else {digitalWrite (11, LOW);}
Bu durum, Joystick milinin + X ekseni yönünde hareketi içindir.
eğer (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } else {digitalWrite (9, LOW);}
Bu durum, Joystick milinin + Y ekseni yönünde hareketi içindir .
eğer (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } else {digitalWrite (8, DÜŞÜK);}
Joystick milini çapraz olarak hareket ettirdiğimizde, X ve Y'nin analog değeri sırasıyla 1023 ve 1023 olduğunda bir konum gelir, hem Pin 9 hem de Pin 8 LED'i yanar. Çünkü LED'in durumunu karşılar. Bu nedenle, bu uyuşmazlığı gidermek için (X, Y) değeri (1023, 1023) ise her iki LED'in de KAPALI durumda kalması şartını verdik.
eğer (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, DÜŞÜK); }
Aşağıdaki durum, Basmalı Düğmeye bağlı LED'i çalıştırmak için kullanılır. Joystick anahtarına bastığımızda LED yanacak ve düğme bırakılana kadar kilitlenecektir. Joystick modülündeki Push buton anahtarını kullanmak isteğe bağlıdır.
if (buttonState == LOW) {Serial.println ("Switch = Yüksek"); digitalWrite (7, YÜKSEK); } else {digitalWrite (7, DÜŞÜK);}
Arduino ile Joystick kullanarak LED'leri kontrol etme
Kodu Arduino'ya yükledikten ve bileşenleri devre şemasına göre bağladıktan sonra artık LED'leri Joystick ile kontrol edebiliyoruz. Joystick mili hareketine göre her yönde dört LED'i AÇIK konuma getirebiliriz. Joystick'in içinde iki potansiyometre var, biri X ekseni hareketi, diğeri Y ekseni hareketi için. Her potansiyometre Arduino'dan 5v alıyor. 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.
Yani, Arduino'dan X ve Y ekseni için analog değeri okuyoruz ve Joystick'in eksen hareketine göre LED'leri AÇIK konuma getiriyoruz. Aşağıdaki videoda gösterildiği gibi devredeki tekli LED'i kontrol etmek için Joystick modülündeki bir basmalı düğme kullanılır.