( λ Halit Alptekin )

Another computer scientist

Arduino İle Basit Pc Kontrolü

Bu aralar farkettiğiniz gibi kendimi baya bi Arduino'ya kaptırdım.Surekli kendimi Arduino,Elektronik ve Processing dilinde geliştirmeye çalışıyorum.Bunu bir gorev olarak değil de hobi olarak yapıyorum.Gerçekten Arduino insanın ufkunu açıyor.Yapılmış harika projeleri gordukçe insanın yapası geliyor.Geçenlerde Arduino ile olmasada gene ona benzer bir geliştirme kitinde butonlar ile sayfada inip çıkıyordu.Çok hoşuma gitti ve bende bunu Python+Arduino kullanarak yaparım dedim.Mantığını kafamda da Arduino ile seri porttan hangi butona basıldığı bilgisini Python ile alıp xdotool kullanıp sayfada inmek veya çıkmak diye kurdum.

Ufak bir çalışmanın ardından çalıştırmayı başardım.İlerleyen zamanlarda çok daha gelişmişleri yapılabilir.Örneğin benim oyun kolu yapıp PES oynama fikrim var.Onun için bozuk bir oyun kolu arıyorum.Eğer bulamasam da kendim birşeyler yapacağım.

Arduino

Öncelikle bu projeyi yapmak için devremizi kuruyoruz.Butonlarımızı pull-down veya pull-up şeklinde digital 12 ve 13.pine bağlıyoruz.Bu devre kısmımız oluyor.Daha sonrada işin Arduino tarafına geçiyoruz.Burada ise 12 ve 13.pinimizi giriş kabul ediyoruz.Ve seri iletişimi başlatıyoruz.Butonlardan gelen bilgiye gore de seri porttan 1 veya 2 değerini gonderiyoruz.Bu bize hangi butona basıldığını oğrenmemizi sağlıyacak.

Bu kısımdan sonra Python tarafına geçiyoruz.Ben burada gayet basit ve amator bir şekilde aşağıdaki kodu kullandım.Bu kod ile seri porttan veriye gore xdotool uzerinden komut çalıştırıyoruz.

#!/usr/bin/env python
import os
import serial

SERIAL_PORT     = '/dev/ttyACM1'
SERI_BAUDRATE   = 9600
SERI_BYTESIZE   = 8
SERI_PARITY     = 'N'
SERI_STOPBITS   = 1
SERI_TIMEOUT    = 0.2
SERI_BUFFER_SIZE= 1024

def seriBaglan():
    bag             = serial.Serial()
    bag.port        = SERIAL_PORT
    bag.baudrate    = SERI_BAUDRATE
    bag.bytesize    = SERI_BYTESIZE
    bag.parity      = SERI_PARITY
    bag.stopbits    = SERI_STOPBITS
    bag.timeout     = SERI_TIMEOUT
    bag.open()
    return bag
bag = seriBaglan()
while 1:

    gelen  = bag.readline()
    for gl in gelen:
        gl = int(gl)
    print gelen

    g1 = gelen.find("1")        
    g2 = gelen.find("2")

    if g1 == 0:
        os.system("xdotool click 4")
    if g2 == 0: 
        os.system("xdotool click 5")

Yukarıdaki fark ettiğiniz gibi seri portunuzu değiştirmeniz gerekiyor.Daha sonra python uygulamasını açık bırakıp gezmek istediğiniz sayfaya geçiyorsunuz.Ve aşağıdaki goruntu ortaya çıkıyor.

Ben sadece aklınızda bir fikir oluşması için boyle yaptım.Siz processing kullanarak daha kaliteli projeler yapabilirsiniz.Veya benim burada kullandığım xdotool programının diğer fonksiyonlarını kullanarak klavyenize de erişebilirsiniz.Bundan sonrası sizin hayal gucunuze kalıyor.

Bu arada ekstra yeni bir yazı yazmak yerine buradan paylaşayım dedim.Eğer Arduino ile uğraşıyorsanız buradaki kutuphanelere iyice bakmanızı oneririm.Özellikle 7 segment display için yazılmış olanı aktif olarak kullanıyorum ve gerçekten çok başarılı.

Comments