CH340 çipli Arduino'da unojoy nasıl kullanılır?

Merhaba, konuya direk gireceğim. Aslında UnoJoy kullanmayacağız. Şuan size vereceğim kodlar ile Arduino ve Python arasında iletişim kurup , Arduino'da kullandığımız butonları klavyenin herhangi bir tuşu gibi tanımlamak içindir (q, w, e, a, j vs.).

Gerekli Olanlar:​


→Herhangi bir Arduino Modeli (Klon veya Orijinal Fark etmez).
→Push-Up Buton
→Arduino IDE Uygulaması
→Python Uygulaması

Nasıl Yapılır?​


Python Uygulaması ile Arduino Uygulamasını Yüklediniz Varsayıyorum. Birde şu verdiğim linklerdeki dosyaları yükleyin:

→Arduino Kodu: Link

→Get-pip.py: Link

→Python Kodu: Link

→Arduino'da D5 pinini butonun bir ucuna, GND pinini butonun diğer bir ucuna bağlıyoruz.

→Verdiğim Arduino Kodunu Arduinoya yüklüyoruz.

→Sonra Get-pip.py dosyasını masaüstüne atıyoruz. Attıktan Sonra masaüstünde boş bir yere "Shift + Mouse Sağ tık" yapıyoruz. Açılan pencereden "PowerShell penceresini buradan açın" yerine basıyoruz.

→Açılan panele şunu yazın (Önce python'u yüklediğinizden emin olun): pip install pynput

→Sonra bir dosya yüklemeye başlayacak. Biraz uzun sürebilir. Yükleme bitince paneli kapatabilirsiniz.

→Şimdi arduino.py dosyasını düzenleyelim. Arduino.py dosyasına sağ tıklayıp birlikte aç deyin, Not Defterini Seçin. Sadece hangi tuşa atama yapmak istediğinizi seçin ve değiştirin. Değiştirmeniz gereken yer: Link

→Eğer E harfini kullanacaksanız değiştirmenize gerek yok. a, b, q vs. harfleri kullanacaksanız 'e' yerine: 'a' , 'b' vs. yazabilirsiniz. Ben E harfini kullanacağım. Çünkü ETS 2 de tır E tuşu ile çalışıyor.

→Son olarak Arduinoyu bilgisayarınıza takın ve arduino.py dosyasını Python ile çalıştırın.
"Bağlı COM portu girin: " yerine Arduinonun bağlı olduğu portu yazıp enter'e basıyoruz. Benim ki COM11'e bağlı, o yüzden COM11 yazıp enter'e basıyorum.

Ve bu kadar. Artık oyunlarda butonunuzu tuş olarak kullanabilirsiniz. Ama arduino.py dosyası oyunda iken arkada açık olmalı. Yoksa Çalışmaz.

Basit Bir Sorun Ve Çözümü:​


Eğer arduino.py dosyasına portu yazdığınızda hata verip kapanıyor ise, Arduino yu söküp tekrar takıp ardından arduino.py dosyasını tekrar çalıştırın. Sorun düzelecektir.

Not: 15 yaşındayım. Yazılımda gelişmek için ne yapabilirim? Önerilerinizi bekliyorum 👍.
 
Çok güzel elinize sağlık. Zamanında çok aramıştım. Elimde klon Arduino UNO var ve H-Shifter yapmak istiyordum. Ayrıca bir sorum olacaktı. Bu kodun aynısını devam ettirirsek daha fazla tuş ataması yapabilir miyiz?
 
Çok güzel elinize sağlık. Zamanında çok aramıştım. Elimde klon Arduino UNO var ve H-Shifter yapmak istiyordum. Ayrıca bir sorum olacaktı. Bu kodun aynısını devam ettirirsek daha fazla tuş ataması yapabilir miyiz?
Merhaba, öncelikle Python kodunu yanlış yazdığımı söylemek isterim. Yeni Linkten İndirirseniz Oyunlarda çalışacaktır: Link . Ve birde Get-pip.py dosyasını masaüstüne atın. Attıktan Sonra masaüstünde boş bir yere "Shift + Mouse Sağ tık" yapın. Açılan pencereden "PowerShell penceresini buradan açın" yerine basın. Sonra şunu yazın: pip install keyboard . Sorunuza gelince, hemen test edip geri dönüş yapacağım.
Çok güzel elinize sağlık. Zamanında çok aramıştım. Elimde klon Arduino UNO var ve H-Shifter yapmak istiyordum. Ayrıca bir sorum olacaktı. Bu kodun aynısını devam ettirirsek daha fazla tuş ataması yapabilir miyiz?
Evet. Daha fazla tuş ataması yapabilirsiniz. Hatta sizin içi kodları hazırladım :) Eğer Ayriyeten tuş eklemek isterseniz python kodundaki data = ser.readline(128).decode('ascii', 'strict') satırındaki 128 ' i arttırmanız gerekiyor. Şöyle diyeyim:

  1. 128x1 = 128 Sadece Bir Tuş Kullanmak için.
  2. 128x2 = 256 İki Tuş Kullanmak için.
  3. 128x3 = 384 Üç Tuş Kullanmak için.
  4. 128x4 = 512 Dört Tuş Kullanmak için.
  5. 128x5 = 640 Beş Tuş Kullanmak için.
  6. 128x6 = 768 Altı Tuş Kullanmak için.
  7. ..........
Bu şekilde artıp gidiyor.

Arduino Kodu:

C++:
#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');
  }
}

Python Kodu:

Python:
import keyboard
import serial

port = input("Bağlı COM portu girin: ")
ser = serial.Serial(port,9600,timeout=0)

while True:
    data = ser.readline(896).decode('ascii', 'strict')
    #Vites 1
    if data == '0':
        keyboard.press('1')
    else:
        keyboard.KEY_UP = '1'
    #Vites 2
    if data == '2':
        keyboard.press('2')
    else:
        keyboard.KEY_UP = '2'
    #Vites 3
    if data == '3':
        keyboard.press('3')
    else:
        keyboard.KEY_UP = '3'
    #Vites 4
    if data == '4':
        keyboard.press('4')
    else:
        keyboard.KEY_UP = '4'
    #Vites 5
    if data == '5':
        keyboard.press('5')
    else:
        keyboard.KEY_UP = '5'
    #Vites 6
    if data == '6':
        keyboard.press('6')
    else:
        keyboard.KEY_UP = '6'
    #Vites 7 (R)
    if data == '7':
        keyboard.press('7')
    else:
        keyboard.KEY_UP = '7'
Çok bir şey anlamadım. Arduino'yu kullanmak için Arduino IDE yeterli olmalı. Pip, Python falan duymadım.
CH340 Çipli Arduinolar için yaptım. Ama orijinal veya klon fark etmez herkes yapabilir. 😁
 
Son düzenleme:
Merhaba, öncelikle Python kodunu yanlış yazdığımı söylemek isterim. Yeni Linkten İndirirseniz Oyunlarda çalışacaktır: Link . Ve birde Get-pip.py dosyasını masaüstüne atın. Attıktan Sonra masaüstünde boş bir yere "Shift + Mouse Sağ tık" yapın. Açılan pencereden "PowerShell penceresini buradan açın" yerine basın. Sonra şunu yazın: pip install keyboard . Sorunuza gelince, hemen test edip geri dönüş yapacağım.

Evet. Daha fazla tuş ataması yapabilirsiniz. Hatta sizin içi kodları hazırladım :) Eğer Ayriyeten tuş eklemek isterseniz python kodundaki data = ser.readline(128).decode('ascii', 'strict') satırındaki 128 ' i arttırmanız gerekiyor. Şöyle diyeyim:

  1. 128x1 = 128 Sadece Bir Tuş Kullanmak için.
  2. 128x2 = 256 İki Tuş Kullanmak için.
  3. 128x3 = 384 Üç Tuş Kullanmak için.
  4. 128x4 = 512 Dört Tuş Kullanmak için.
  5. 128x5 = 640 Beş Tuş Kullanmak için.
  6. 128x6 = 768 Altı Tuş Kullanmak için.
  7. ..........
Bu şekilde artıp gidiyor.

Arduino Kodu:

C++:
#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');
  }
}

Python Kodu:

Python:
import keyboard
import serial

port = input("Bağlı COM portu girin: ")
ser = serial.Serial(port,9600,timeout=0)

while True:
    data = ser.readline(896).decode('ascii', 'strict')
    #Vites 1
    if data == '0':
        keyboard.press('1')
    else:
        keyboard.KEY_UP = '1'
    #Vites 2
    if data == '2':
        keyboard.press('2')
    else:
        keyboard.KEY_UP = '2'
    #Vites 3
    if data == '3':
        keyboard.press('3')
    else:
        keyboard.KEY_UP = '3'
    #Vites 4
    if data == '4':
        keyboard.press('4')
    else:
        keyboard.KEY_UP = '4'
    #Vites 5
    if data == '5':
        keyboard.press('5')
    else:
        keyboard.KEY_UP = '5'
    #Vites 6
    if data == '6':
        keyboard.press('6')
    else:
        keyboard.KEY_UP = '6'
    #Vites 7 (R)
    if data == '7':
        keyboard.press('7')
    else:
        keyboard.KEY_UP = '7'

CH340 Çipli Arduinolar için yaptım. Ama orijinal veya klon fark etmez herkes yapabilir. 😁
Düzenleme olunca yeni gördüm. Çok iyi olmuş. Müsait zamanında uğraşıp H vites yapmayı deneyeceğim.
@ArdaCrazy kodları tekrar inceleyince normal sayı tuşlarında çalışıyor. Ben bunları numlock tarafındaki tuşlara nasıl atayabilirim.
@ArdaCrazy her şey hazır ama python kodu çalışmıyor. Portu girince direkt kapanıyor. Dediğinizi gibi kaç kere çıkarıp taktım ama olmadı. Eksik bir şey mi var?
Kodu IDLE ile çalıştırınca böyle bir hata çıkıyor:
hata.jpg
 
Son düzenleme:

Yeni konular

Geri
Yukarı