Arduino Joystick ile Fare Kontrolü

0
1517
Okunma

Arduino Joystick ile Fare Kontrolü

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

CEVAP VER

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.