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!
Yazılım da herhangi bir problem yok değil mi ?
Hayır, bir problemle mi karşılaştınız?
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
Yok malzemeleri almadan sorayim dedim
Tamamdır, kolay gelsin 🙂
hata var gibi
Nerede bir hata ile karşılaştınız?
arduino uno ile yapabilir miyiz 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.
uno nun leonaro dn nefarkı var
Yazının ikinci paragrafında bu konudan bahsettim 🙂
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
Arduinonun şu kod atma yerine bağlayıp usb sini de bilgisayara mı takacağız?
Evet, Arduino’yu kodlamak için kullandığımız usb kablonun takılı olması yeterli
Bu yaptığımız fare yi otg ile android e bağlarasak Orada çalışırmi?
Hiç denemedim fakat mouse destekleyen bir televizyonda kullanmıştım. Android bir telefonda da yüksek ihtimalle çalışır.
denedim çalışıyor.
Arduino Leonardo orjinalmi klonmu
Bu projede klon bir Arduino kullandık, dilediğinizi tercih edebilirsiniz.
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.
Leonardo alman yeterli 🙂 Micro ile yapmayı tercih eden olabilir diye alternatif olarak ekledim.
Ö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.
Ö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/
arduino uno dada oluyomu
Projede kullandığımız özellik Arduino Uno’da yok maalesef.
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.
Kart Arduino Uno olarak gözüküyor bu projeyi Leonardo ile yapabilirsiniz.
Hocam kabloların cinsleri ne olmalıdır ?
Fazladan bir şey eklemeyi düşünmüyorsanız dişi-erkek jumperlar işinizi görecektir.
Ç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
Merhaba, Arduino IDE üzerinde Kartlar kısmında Leonardo kartınız “Arduino Leonardo” şeklinde gözükmüyor mu? Kontrol edebilir misiniz?
Leanorda şeklinde hocam kartı okumuyor pc port kısmında gelmiyor zaten
portta COM3 COM4 COM5 COM6 COM7 COM8 var hangisini seçmemiz gerekiyor hepsini denedik ama olmadı yardımcı olabilir misiniz ?
Bağlantıyı yaptığınızda Aygıt Yöneticisi -> Bağlantı Noktaları kısmında Arduino Leonardo(COM x) şeklinde gözükmesi gerekiyor. Orada görebiliyor musunuz?
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.
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…
Problemin çözülmesine sevindim, başarılar 🙂
Hocam fare bulunamadı yazıyo. Yani kod hata veriyo nasıl düzeltebilirim lütfen yardımcı olur musunuz?
Merhaba, hatanın tamamını buraya atar mısınız?
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
Bu problem genellikle Arduino Leonardo kullananların karşılaştığı bir problem.
Aynı sorun şu şekilde çözülmüş, faydası olabilir:
https://forum.arduino.cc/index.php?topic=639515.0
https://community.arduboy.com/t/cant-upload-sketches-after-arduventure-solved/2301/2
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?
Merhaba, AppInvertor ile kendi uygulamanızı yapmayı denediniz mi? Belki oradaki araçlarla çözebilirsiniz. İlgili yazının linkini bırakıyorum: https://maker.robotistan.com/app-inventor-dersleri-1-tanitim-ilk-uygulama/
Joystick modülü ile de kontrol edebilirsiniz fakat kuracağınız devreye de verici olarak görev yapacak bir Bluetooth modülü eklemeniz gerekir.
Şöyle bi hata alıyorum sebebi nedir acaba yardımcı olabilirseniz sevinirim.
‘Fare’ bulunamadı. Taslağınızda ‘#include ‘ satırı yer alıyor mu?
Kütüphane hatası alıyorsunuz. Leonardo kullanıyor ve kütüphaneyi de eklediyseniz Arduino IDE tekrar kurmayı deneyebilir misiniz?
sorunumu çözdüm cok basitmiş aslında da gözden kacırmısım:)
Başarılar 🙂
Arduino Leonardo yerine klon kullanabilir miyiz
Klon bir Arduino Leonardo kullanabilirsiniz.
arduino leonardoyu kim nerden bulcak şimdi 😀
nokia 5110 joystick shield yapmak istiyorum bu uygulamayı yardımcı olabilir misniz?
Bu kod Arduino Mega 2560’ta da kullanılabilir mi
leonardo yu oyun kumandası olarak nasıl yükleyebiliriz yardımcı olursanız sevinirim
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 🙂
Bu kod Arduino Mega 2560 veya Arduino nano(old bootloder) da kullanılabilir mi leonardoyu alamam param bitti 🙂 🙂 🙂
üzerine tuş eklemek mümkünmüdür yapılıyorsa ne kodu eklememiz gerekir
Keyboard.h kütüphanesinin örnek kodlarına bakarak bu işlemi yapabilirsiniz.
arduino leonardo yerine hangi arduinoları kullanabiliriz
Arduino Leonardo, bu iş için en uygun ve performanslı kart olduğu için kesinlikle bunu öneririz.
due ve pro micro iş görür