Arduino ve Python ile Klavyeye Tuşa Bastırma

Katılım
18 Haziran 2019
Mesajlar
1.986
Makaleler
1
Çözümler
9
Arkadaşlar selamlar. Başka bir arkadaştan esinlenerek yaptığım projenin kodlarını sizlerle de paylaşmak istedim. Projenin mantığı şu, arduino devresinde dijital pinlere input pullup devresi kuruyoruz. Bu pinler kısa devre olduğunda (butona basmışız gibi düşünün) seri monitöre kodda belirttiğimiz şeyi yazacak. Python kısmında ise "serial" adlı modül ile arduino seri monitörü okuyacak ve istediğimizi yaptıracağız. Bizim isteğimiz klavyede bir tuşa bastırmak.

@Akif9748 sen istemiştin bu kodları. Geç oldu kusura bakma. :)

Python Kodları:
[CODE lang="python" title="Python Kodları"]import serial
import time
import keyboard
import pyautogui

port=input("Bagli portu girin: ") # örneğin "COM13"
ser = serial.Serial(port,9600,timeout=0)

while True:
data = ser.readline(896).decode('ascii', 'strict')
#Vites 1
if data == '1':
pyautogui.press("1")
time.sleep(1)
#Vites 2
if data == '2':
pyautogui.press("2")
time.sleep(1)
#Vites 3
if data == '3':
pyautogui.press("3")
time.sleep(1)
#Vites 4
if data == '4':
pyautogui.press("4")
time.sleep(1)
#Vites 5
if data == '5':
pyautogui.press("5")
time.sleep(1)
#Vites 6
if data == '6':
pyautogui.press("6")
time.sleep(1)
#Vites 7 (R)
if data == '7':
pyautogui.press("7")
time.sleep(1)


[/CODE]

[CODE lang="cpp" title="Arduino Kodları"]#define gearOne 5
#define gearTwo 6
#define gearThree 7
#define gearFour 8
#define gearFive 9
#define gearSix 10
#define gearR 11

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(gearOne, INPUT_PULLUP);
pinMode(gearTwo, INPUT_PULLUP);
pinMode(gearThree, INPUT_PULLUP);
pinMode(gearFour, INPUT_PULLUP);
pinMode(gearFive, INPUT_PULLUP);
pinMode(gearSix, INPUT_PULLUP);
pinMode(gearR, INPUT_PULLUP);
}

void loop() {
// put your main code here, to run repeatedly:
//Vites 1
Serial.println(digitalRead(gearOne)); // 0 değeri verince vites atcak. 1 Değeri verince Boşta olcak.
//Vites 2
if(digitalRead(gearTwo) == 0)
{
Serial.println('2');
}
//Vites 3
if(digitalRead(gearThree) == 0)
{
Serial.println('3');
}
//Vites 4
if(digitalRead(gearFour) == 0)
{
Serial.println('4');
}
//Vites 5
if(digitalRead(gearFive) == 0)
{
Serial.println('5');
}
//Vites 6
if(digitalRead(gearSix) == 0)
{
Serial.println('6');
}
//Vites 7(R)
if(digitalRead(gearR) == 0)
{
Serial.println('7');
}
}[/CODE]

Bu projeyi ETS2'de h-shifter olarak kullanacaktım lakin olmamıştı. Kodlar o yüzden bu şekilde. Kodda gördüğünüz gibi, 5. pinde kıa devre olduğunda seri monitöre 1 yazıyor. Python'da 1 yazsını okuyup, 1 tuşuna basıyor. Umarım doğru anlatabilmişimdir. Anlamadığınız, takıldığınız bir yer olursa elimden geldiğince yardımcı olmaya çalışırım.
 
Arduino'yu USB kütüphanesi ile HID (Human Interface Device) olarak gösterdikten bilgisayara USB klavyeymiş gibi tanıtıktan sonra istenilen stringleri Python vs. ile yazılmış harici bir 3. bir yazılıma gerek kalmadan yapabilirdiniz.

 
Son düzenleme:
Arduino'yu USB kütüphanesi ile HID (Human Interface Device) olarak gösterdikten bilgisayara USB klavyeymiş gibi tanıtıktan sonra istenilen stringleri Python vs. ile yazılmış harici bir 3. bir yazılıma gerek kalmadan yapabilirdiniz.

Böyle bir şeyi ilk defa görüyorum. Çok teşekkür ederim. Araştıracağım. Ama bu 32u4 işlemcilerde oluyor. Benim anlattığım çözüm yolunu tüm arduino modellerinde kullanabilirsiniz.
 
Arduino'yu USB kütüphanesi ile HID (Human Interface Device) olarak gösterdikten bilgisayara USB klavyeymiş gibi tanıtıktan sonra istenilen stringleri Python vs. ile yazılmış harici bir 3. bir yazılıma gerek kalmadan yapabilirdiniz.

CH340 ile olmuyordu sanırsam, rehber onlar için, teşekkürler @Alpaslan64 .
 
Ben bunu arduino leonardo ile yaptım leonardoyu klavye olarak algılayabiliyor örnek
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
 
Ben bunu arduino leonardo ile yaptım leonardoyu klavye olarak algılayabiliyor örnek
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

Bu doğru. Leonardo bunu yapabiliyor. Ama klon UNOlar (CH340 seri dönüştürücü kullananlar) bunu yapamıyor.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni mesajlar

Geri
Yukarı