Python ile Ardunio kontrolü

Merhaba, ben Python üzerinden Arduino kontrolü yapmak istiyorum. Arasındaki haberleşmeyi sağladım ama benim istediğim şey Python, sürekli arka planda çalışıp veri alacak (arama motoruna bir şey yazarken bile) eğer ben “a” ya basarsam ışık yanacak “b” ye basarsam sönecek. Bunu nasıl yapabilirim?

Python nerede calisiyor? Bir web browser ile ayni masaustu isletim sisteminde mi?

Arduino ile haberlesmenin tamami cozuldu, ve masaustu isletim sistemine bagli klavyelerde a ve b tuslarina basildiginda haber almak mi istiyorsunuz?

şöyle ben biraz araştırdım,“pyfirmata” kütüphanesi ile yapılabileceğini yazmışlar. Ben de kodu şöyle düzelttim fakat yine de s ye bastığımda ışık yanmıyor.

import pyfirmata
from pynput.keyboard import Key, Listener
import serial
import time
board = pyfirmata.Arduino('com8')
def tus_basildi(tus):
    print('{0} tusuna basildi'.format(tus))
    if tus=="s":
        board.digital[12].write(1)

def tus_salindi(tus):
    print('{0} release'.format(tus))

with Listener(on_press=tus_basildi, on_release=tus_salindi) as listener:
    listener.join()




Peki S’ye basildiginda tus_basildi fonksiyonu calisiyor mu?

Firmata, veya herhangi bir mekanizmanin calismasi icin Arduino tarafinin da yazilip konfigure edilmesi gerek.

1 Beğeni

Arduino’da — Dosya >> Örnekler >> Firmata >> Standart Firmata’yı seçip kodu yükledim daha sonra pythonda bu kodu yazdım. İf komutunun çalışıp çalışmadığını öğrenmek için print yazdırmayı denedim fakat s harfine basıldığındaki değeri s olarak görmüyor ki hiçbir zaman eşitlemiyor. Onun içinde print(type(tus)) yaptığımda <class ‘pynput.keyboard._win32.KeyCode’> yazdırıyor.Bundan sonra ne denediysem olmadı.

Arduino kisminin calisip calismadigini hala anlayamadim.

Sorun tusa basilmasini algilayamamaksa Arduino ile niye ugrasiyoruz?

pynput böyle kullanılmıyor. Dökümanını inceleyin.

böyle uğraşacağına pyserial kullan.
fakat arduino tarafını da C++ ile yazman lazım. yani arduinonun arayüz programını indirip ilgili iletişimi sağlaman lazım. Sonra pyserial ile daha kolay yapabilirsin.