Arduino Joystick ile Fare Kontrolü
Arduino Joystick ile Fare Kontrolü, Fare kütüphanesini kullanarak, bir bilgisayarın ekran imlecini Arduino Leonardo, Micro veya Due ile kontrol edebilirsiniz. Bu özel örnek, bir joystick ile fare kontrolünü açmak ve kapatmak için bir basmalı buton kullanır.
Arduino’dan gelen imleç hareketi her zaman akrabadır. Böylece, analog giriş her okunduğunda, imlecin pozisyonu geçerli konumuna göre güncellenir.
0 ila 1023 arasında değişen iki analog giriş, -12 ila 12 aralığına dönüştürülür. Çizim, kumanda kolu dinlenme değerlerinin aralığın ortasında olduğunu, ancak bir eşik dahilinde değiştiğini varsayar.
Buton, fare kontrolünü açıp kapatmanıza izin verir. Bir seçenek olarak, Arduino fareyi kontrol ederken ışıyan pime 5 bir durum LED’i bağlayabilirsiniz. İkinci bir buton, farenin sol kliklemesi olarak hareket etmek için D3’e başka bir 10k ohm pulldown (GND) direnciyle bağlanabilir.
Not: Mouse.move() komutunu kullandığınızda, Arduino bilgisayarınızın imlecini devralır! Bu işlevle bir çizim çalıştırırken bilgisayarınızın denetimini kaybetmemenizi sağlamak için, Mouse.move () öğesini çağırmadan önce bir denetleyici ayarladığınızdan emin olun. Bu taslak, fare kontrol durumunu değiştirmek için bir buton içerir, böylece fare kontrolünü açıp kapatabilirsiniz.
Arduino Joystick ile Fare Kontrolü
Donanım
- Arduino Leonardo, Arduino Micro veya Arduino Due
- 2 eksenli joystick
- anlık basma düğmesi (muhtemelen joystick’e entegre edilmiştir)
- LED
- 220 ohm direnç
- 10k ohm direnç (gerektiğinde açılır)
Devre
Leonardo kartınızı bilgisayarınıza bir mikro USB kablosuyla bağlayın. Düğme, pim 6’ya bağlanır. Aşağıda gösterilen Joystick kalkanı gibi bir parça kullanıyorsanız, bir daldırma direncine ihtiyacınız olmayabilir. Joystick üzerindeki x ekseni, 0’a analog olarak bağlanır, y ekseni 1’de analogdadır.
Kod
/* JoystickMouseControl Bir Arduino Leonardo, Micro veya Due üzerinde bir joystick fare kontrol eder. Fare kontrolünü açmak ve kapatmak için bir basma düğmesi ve ikinci bir basma düğmesi kullanır farenin sol tuşuna basmak için Donanım: - A0 ve A1 pinlerine bağlı 2 eksenli joystick - D2 ve D3 pinlerine bağlı butonlar Fare hareketi her zaman görelidir. Bu taslak iki analog giriş okur Bu 0 ile 1023 (veya her iki ucunda daha az) arasında değişir ve bunları içine çevirir -6 ila 6 arasında değişir. Taslak, joystick dinlenme değerlerinin ortasında olduğunu varsayar aralık, ancak bir eşik dahilinde değişir. UYARI: Mouse.move () komutunu kullandığınızda, Arduino sizin fare! Komutu kullanmadan önce kontrolünüz olduğundan emin olun. Bu kroki fare kontrol durumunu değiştirmek için bir buton içerir, böylece açabilirsiniz ve fare kontrolü kapalı. oluşturuldu 15 Eyl 2011 güncellenmiş 28 Mar 2012 Tom Igoe tarafından Bu örnek kod kamu malıdır. http://www.arduino.cc/en/Tutorial/JoystickMouseControl */ #include "Mouse.h" // anahtar, joystick eksenleri ve LED için pin sayısını ayarlayın: const int switchPin = 2; // fare kontrolünü açmak ve kapatmak için const int mouseButton = 3; // fare pushButton için giriş pimi const int xAxis = A0; // joystick X ekseni const int yAxis = A1; // joystick Y ekseni const int ledPin = 5; // Fare kontrol LED'i // joystick'i okumak için parametreler: int range = 12; // X veya Y hareketinin çıkış aralığı int responseDelay = 5; // ms cinsinden farenin yanıt gecikmesi int threshold = range / 4; // dinlenme eşiği int center = range / 2; // dinlenme pozisyonu değeri boolean mouseIsActive = false; // fareyi kontrol edip etmemek int lastSwitchState = LOW; // önceki anahtar durumu void setup() { pinMode(switchPin, INPUT); // anahtar pimi pinMode(ledPin, OUTPUT); // LED pin // farenin kontrolünü ele alalım: Mouse.begin(); } void loop() { // anahtarı oku: int switchState = digitalRead(switchPin); // değiştiyse ve yüksekse, fare durumunu değiştirin: if (switchState != lastSwitchState) { if (switchState == HIGH) { mouseIsActive = !mouseIsActive; // Fare durumunu göstermek için LED'i açın: digitalWrite(ledPin, mouseIsActive); } } // sonraki karşılaştırma için geçiş durumunu kaydet: lastSwitchState = switchState; // iki ekseni oku ve ölçeklendir: int xReading = readAxis(A0); int yReading = readAxis(A1); // Fare kontrol durumu etkinse, fareyi hareket ettirin: if (mouseIsActive) { Mouse.move(xReading, yReading, 0); } // fare tuşunu oku ve tıkla ya da tıkla: // Fare düğmesine basıldığında: if (digitalRead(mouseButton) == HIGH) { // Fare basılmadıysa, basın: if (!Mouse.isPressed(MOUSE_LEFT)) { Mouse.press(MOUSE_LEFT); } } // eğer fare tuşuna basılmamış: else { // Fareye basıldığında, bırakın: if (Mouse.isPressed(MOUSE_LEFT)) { Mouse.release(MOUSE_LEFT); } } delay(responseDelay); } /* bir eksen okur (x veya y için 0 veya 1) ve analog giriş aralığını bir aralıkta ölçeklendirir 0'dan <aralık> a */ int readAxis(int thisAxis) { // analog girişi oku: int reading = analogRead(thisAxis); // okumayı analog giriş aralığından çıkış aralığına eşler. reading = map(reading, 0, 1023, 0, range); // Çıkış değeri dinlenme pozisyon eşiğinin dışındaysa, onu kullanın: int distance = reading - center; if (abs(distance) < threshold) { distance = 0; } // bu eksen için mesafeyi döndür: return distance; }
Kaynak:arduino.cc