back to top

Arduino ve Joystick Modülü ile Mouse Yapımı

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. 

//75.101.132.229

#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!

Son Çıkan Yazılar

62 YORUMLAR

    • Tek birşey buton box yapmak istiyorum fakat hiç bir şekilde kimse yardım edemiyor yada kimse bilmiyor elimde arduino var ve bu ardunyo yu drevır yukşedım kodu yazdım fakat ets 2 de joystick olarak yada kartı göremiyorum bunu yapa bilen yada bilen varmı acaba

    • 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.

  1. Bir sorum olacak:şimdi bizim mouse yı bilgisayara bağlamak için usb ye ihtiyacımız var bunu nasıl sağlayacağız? Hangi pimlere takılacak

  2. kolay gelsin abi. bu projenin yapımınnda ki malzemelerden ilki olan ardino leanardo yu twek alsak olmuyormu microyuda almazsak proje olmazmı öğrenciyiz hem ardino leanardo hem micro çok pahalı geliyor.

  3. Öncellikle yapmış olduğunuz projelerden dolayı sizi tebrik ediyorum. Sorum bu uygulamayı android telefona nasıl uygulayabiliriz. HC05 Bluetooth-Serial Modül Kartında başka hangi araçlara ihtiyacımız var ve telefona bağlamak için hangi uygulamayı veya programı kullanmalıyız.

  4. Öncelikle kolay gelsin ben bu projeyi android telefonda çalıştırmak istiyorum aklımda iki yol var 1. bluetooth modülü ile çalıştırmak 2. otg kablo ile çalıştırmak. Sizde bu projeyi android telefonlarda bluetooth modülü ile nasıl yapabiliriz.

    • Merhabalar, bluetooth ve Arduino arasındaki bağlantıyı yaptıktan sonra telefonunuza bir Arduino Bluetooth Controller indirmeniz gerekiyor. İndirdiğiniz uygulama üzerindeki komutları bizim joystick için yaptığımız işlemdeki gibi mouse hareketlerine atamanız gerekiyor. Hazır uygulama yerine App Invertor yardımıyla bu projeye özel bir uygulama da geliştirebilirsiniz.
      Bluetooth kullanımı için ->> maker.robotistan.com/arduino-dersleri-17-hc-05-bluetooth-modulu-kullanimi/
      App Invertor kullanımı ->> maker.robotistan.com/app-inventor-dersleri-1-tanitim-ilk-uygulama/

  5. Arduino:1.8.9 (Windows 10), Kart:”Arduino/Genuino Uno”

    mouse:40:86: error: Mouse.release: No such file or directory

    compilation terminated.

    exit status 1
    Mouse.release: No such file or directory

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

  6. Çalışmanız programın 5558 bayt (19 %) saklama alanını kullandı. Maksimum 28672 bayt.
    Global değişkenler belleğin 209 byte kadarını (8%) kullanıyor. Yerel değişkenler için 2351 byte yer kalıyor. En fazla 2560 byte kullanılabilir.
    Seçilen portta bir Kart bulunamadı. Doğru portu seçtiğinizden emin olunuz. Eğer port doğru ise, yükleme işlemini başlattıktan sonra kartın reset düğmesine basmayı deneyiniz.
    Hata olarak bunu gösteriyor. Reset düğmesine de basıyoruz ama olmuyor

  7. Herhangi bir portu seçtiğimde bu hatayı veriyor hocam kartı görmüyor gibi sanki
    processing.app.debug.RunnerException
    at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:152)
    at cc.arduino.UploaderUtils.upload(UploaderUtils.java:77)
    at processing.app.SketchController.upload(SketchController.java:732)
    at processing.app.SketchController.exportApplet(SketchController.java:703)
    at processing.app.Editor$UploadHandler.run(Editor.java:2075)
    at java.lang.Thread.run(Thread.java:748)
    Caused by: processing.app.SerialException: Seri port “COM4″da sorun var.
    at processing.app.Serial.touchForCDCReset(Serial.java:107)
    at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:136)
    … 5 more
    Caused by: jssc.SerialPortException: Port name – COM4; Method name – openPort(); Exception type – Port busy.
    at jssc.SerialPort.openPort(SerialPort.java:164)
    at processing.app.Serial.touchForCDCReset(Serial.java:101)
    … 6 more
    Taslak yüklenirken bir hata oluştu
    Exception in thread “Thread-23” java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
    at java.util.ArrayList$Itr.next(ArrayList.java:859)
    at cc.arduino.contributions.libraries.LibrariesIndexer.rescanLibraries(LibrariesIndexer.java:160)
    at cc.arduino.contributions.libraries.LibrariesIndexer.setLibrariesFolders(LibrariesIndexer.java:120)
    at processing.app.BaseNoGui.onBoardOrPortChange(BaseNoGui.java:677)
    at processing.app.Base.onBoardOrPortChange(Base.java:1333)
    at processing.app.Editor$UploadHandler.run(Editor.java:2111)
    at java.lang.Thread.run(Thread.java:748)

    • Kullanmadığınız portları kaldırıp sonrasında kartı bağlayarak deneyebilirsiniz. Derleyiciyi silip tekrar kurmak da belki çözüm olabilir.

  8. Sorunu çözdüm hocam. Gönderdiğiniz usb kablosu veri alış verişi yapmıyordu. Başka bir usb kablosu taktım şuan sorunsuz çalışıyor. İyi çalışmalar…

  9. avrdude: ser_recv(): read error: Device not configured
    avrdude: butterfly_recv(): programmer is not responding
    avrdude: ser_drain(): read error: Device not configured
    avrdude: ser_send(): write error: Device not configured
    avrdude: ser_recv(): read error: Device not configured
    avrdude: butterfly_recv(): programmer is not responding
    avrdude: ser_send(): write error: Device not configured
    avrdude: ser_recv(): read error: Device not configured
    avrdude: butterfly_recv(): programmer is not responding
    avrdude: ser_recv(): read error: Device not configured
    avrdude: butterfly_recv(): programmer is not responding
    avrdude: ser_send(): write error: Device not configured
    avrdude: ser_recv(): read error: Device not configured
    avrdude: butterfly_recv(): programmer is not responding
    Found programmer: Id = “”; type =
    Software Version = .; Hardware Version = .
    avrdude: ser_send(): write error: Device not configured
    avrdude: ser_recv(): read error: Device not configured
    avrdude: butterfly_recv(): programmer is not responding
    avrdude: ser_send(): write error: Device not configured
    avrdude: ser_recv(): read error: Device not configured
    avrdude: butterfly_recv(): programmer is not responding
    avrdude: error: buffered memory access not supported. Maybe it isn’t
    a butterfly/AVR109 but a AVR910 device?
    avrdude: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.

    avrdude: ser_send(): write error: Device not configured
    avrdude: ser_recv(): read error: Device not configured
    avrdude: butterfly_recv(): programmer is not responding
    avrdude: error: programmer did not respond to command: leave prog mode
    avrdude: ser_send(): write error: Device not configured
    avrdude: ser_recv(): read error: Device not configured
    avrdude: butterfly_recv(): programmer is not responding
    avrdude: error: programmer did not respond to command: exit bootloader
    avrdude: ser_close(): can’t reset attributes for device: Device not configured
    Seçilen seri port “avrdude: ser_close(): can’t reset attributes for device: Device not configured
    ” bağlı olan kartınızda mevcut değil

  10. Bizim Bluetooth bağlantılı bir Robotunuz var. İnternetdeki Bluetooth programları hep ileri, geri, sağ, sol olarak yönlendiriyor
    Haliyle dönme işlemleri vs zor oluyor. Bu joystick ile robotu bi şekilde yönlendirebilir miyim acaba?
    Veya nasıl bir çözüm bulabilirim?

  11. Şöyle bi hata alıyorum sebebi nedir acaba yardımcı olabilirseniz sevinirim.

    ‘Fare’ bulunamadı. Taslağınızda ‘#include ‘ satırı yer alıyor mu?

    • Selamlar.

      Bunun için “https://www.youtube.com/watch?v=k5p-q5oaPiI&t=637s” adresinde bulunan örnek videoyu gönderebilirim. Bu videonun içerisinde ve ilerleyen kısımlarında gerekli bağlantıları görebilirsiniz.

      İyi çalışmalar dilerim 🙂

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz