Herkese merhabalar! Bu proje yazısında joystick modülünü bir mouse olarak nasıl kullanabileceğimizi göreceğiz. Bu işlemi gerçekleştirebilmek için USB haberleşme özelliğine sahip bir Arduino modeli kullanmamız gerekiyor. Biz bu projeyi Arduino Leonardo kullanarak yapacağız. Dilerseniz aynı özelliğe sahip başka bir model olan Arduino Micro ile de bu projeyi hayata geçirebilirsiniz.

Peki Leonardo ve Uno modelleri arasındaki fark nedir? Bu proje için neden Arduino Leonardo kullanacağız? Arduino Leonardo ATmega32u4 tabanlı bir karttır, Uno modeli ise ATmega328 mikrodenetleyicisine sahiptir. Tabanlarında kullanılan mikrodenetleyiciye bağlı olarak Arduino Leonardo ve Micro, Uno’dan farklı olarak yapısında USB-seri çeviri görevini yerine getirecek ekstra bir entegre bulundurmuyor. Bu özelliği sayesinde Arduino Leonardo ve Micro’yu bağladığımız bilgisayara klavye ve mouse olarak tanıtabiliyoruz. Bu projede bu özellikten yararlanıyor olacağız. Ayrıca Arduino Leonardo yapısında 20 adet dijital giriş/çıkış pini barındırıyor. Bu pinlerden 12’si analog giriş olarak kullanılabilir, UNO’da ise bu sayı 6’dır. Leonardo’da PWM çıkışı olarak kullanılabilen pin sayısı 7’dir. Yine Uno modelinden farklı olarak USB bağlantısı mikro-b tipi bir USB kablo ile yapılır. 

Gerekli Malzemeler

Bağlantı Şeması

Proje Kodu

Kodumuzu çalıştırabilmek için Arduino’nun Mouse kütüphanesini indirip kodumuza dahil etmemiz gerekiyor. Kütüphaneyi buraya tıklayarak indirebilirsiniz. Kütüphaneyi ekledikten sonra kodumuzu çalıştırmaya hazırız. 

//maker.robotistan.com

#include <Mouse.h>//Mouse kütüphanemizi dahil ediyoruz
int xPin = A0; //Joystick x ekseni, y ekseni ve üzerindeki buton için pin tanımlaması
int yPin = A1;
int buton_pin = 2 ;
int buton_durum;

int x_degeri, y_degeri; //Joystick üzerinden alınan koordinat bilgisi
int xZero, yZero; //Joystick kullanılmadıgında gelen degerler
const int hassasiyet = 300; //Mouse hassasiyeti, bu deger yükseltildiğinde mouse hızı düşecektir


void setup()
{
pinMode(xPin, INPUT);
pinMode(yPin, INPUT);
pinMode(buton_pin, INPUT);
digitalWrite(buton_pin, HIGH);
delay(2000);
xZero = analogRead(xPin); //0 pozisyonundaki değerler, bu degerlerin okunması sırasında joystick kullanılmamalı
yZero = analogRead(yPin);

}
void loop()
{
x_degeri = analogRead(xPin) - xZero; //x eksenindeki konum
y_degeri = analogRead(yPin) - yZero; //y eksenindeki konum

if (x_degeri != 0 || y_degeri != 0)
Mouse.move(x_degeri / hassasiyet, y_degeri / hassasiyet, 0); //x ekseni ve y ekseni üzerinde hareket

if (!digitalRead(buton_pin) && (!buton_durum)) //butona basıldıgında
{
buton_durum = 1;
Mouse.press(MOUSE_LEFT); //sol tık
}
else if (digitalRead(buton_pin) && (buton_durum)) //butona basılmadıgında
{
buton_durum = 0;
Mouse.release(MOUSE_LEFT); //sol tık kaldır
}
}

Kodumuzu da yükleyerek projemizi tamamlamış olduk. Sorularınızı ve fikirlerinizi paylaşmaktan çekinmeyin. Başka bir projede görüşmek dileğiyle, hoşça kalın!

8 Yorumlar

    • Maalesef, Uno’yu doğrudan klavye ve mouse olarak tanımlayamıyoruz, kullandığımız kütüphane de Uno modelini desteklemiyor zaten. Bu projede neden Arduino Leonardo kullanmamız gerektiğinden 2. paragrafta bahsettim, o kısma da göz atabilirsiniz.

CEVAP VER

Please enter your comment!
Please enter your name here