Bu repo pyserial
da yaygın kullanılan metodlar ve örnekler içerir.
(yapılanlar pyserial 3.5 , python 3+ için geçerlidir.)
Port açmak için Serial.serial()
sınıfını kullanıyoruz.
Kodumuzda; port = Serial.serial(port='com6',baudrate=9600,timeout=2)
satırıyla portumuzu açabiliriz.
Ardiuno nuzu bağladığınız port ismini buradan öğrenebilirsiniz. baudrate
parametresi arduino ide sinde setup içinde belirlediğiniz Serial.begin(baudrate)
ile aynı olmalıdır. timeout
parametresi arduinodan gelecek veriyi okurken beklenebilecek sınırı temsil eder. 2 verdiğimizde 2 s veri bekler,döner ve veri gelmezse sonsuz döngüye girmemiş olur. Daha fazla parametre için buraya bakabilirsiniz.
Portun açık olup olmadığını kontrol etmek için isOpen()
metodunu kullanabiliriz.
Bazı metodlarla veriyi okuyabiliyoruz. Ben read()
, readline()
dan bahsedeceğim.
read()
metodu veriyi tane tane okumamızı sağlar. size
parametresi alır default olarak size=1
dir. Size ı değiştirerek kaç byte okumak istediğinizi ayarlayabilirsiniz. Örneği için bu dosyayı arduinonuza yükleyin. Python da ise bu dosyayı çalıştırın.
readline()
metodu veriyi satır satır almamızı sağlar. Uygulaması için bu dosyayı arduino ya yükleyin. Pythonda bu dosyayı çalıştırın.
Veri yazarken yaygın yöntem write()
dır. Metodu kullanırken gönderilecek veriyi byte a çevirmeliyiz. Önemli kısım str ve int değişken tiplerindeki hız farkı. Bu farkı servo kontrolü kısmında görebilirsiniz.
-
name
Port ismini verir. -
open()
port açmayı sağlar. -
close()
port kapamayı sağlar. -
inWaiting()
arabellekte bekleyen byte sayısını döndürür. Verinin gelip gelmediğini de böylece anlayabiliriz bkz. -
reset_input_buffer()
giriş arabelleğini(buffer) temizler. Veri dar boğazını engeller. Pyserial < 3.0 sürümlerdeflushInput()
olarak bulunur. -
reset_output_buffer()
çıkış arabelleğini(buffer) temizler. Veri dar boğazını engeller buffer ı etkin kullanmamızı sağlar. Pyserial < 3.0 sürümlerdeflushOutput()
olarak bulunur.
🗺️ Arduino şeması:
Ino dosyasını yükleyin ve py dosyasını çalıştırın.
Arduino da calcGyroOffsets()
otomatik imu daki jiroskop üzerinden kalibrasyon yapıyor. Bu yüzden py kodu çalıştırdığınızda bir süre sensörü oynatmayın.
🗺️ Arduino şeması:
Yüklemek ve çalıştırmak için ino ve py dosyası
🗺️ Arduino şeması(Hızlı/yavaş ikisinin şeması aynı):
Yüklemek ve çalıştırmak için ino ve python dosyası