Kayıt Ol

Giriş

Şifremi Kaybettim

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Giriş

Kayıt Ol

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi adipiscing gravdio, sit amet suscipit risus ultrices eu. Fusce viverra neque at purus laoreet consequa. Vivamus vulputate posuere nisl quis consequat.

Arduino Dersleri – Serial Port ve Fonksiyonları

Merhaba arkadaşlar,
Mobilhanem.com için hazırladığımız Arduino derslerine Serial Port ile devam ediyoruz. Serial Port tüm Arduino kartlarda en az bir adet mevcuttur ve Arduino kartımız ile bilgisayar veya diğer cihazların haberleşmesinde kullanılır. Bizim bu seride ki derslerimizde kullanacağımız Arduino UNO kartında bir adet Serial Port vardır. Birden fazla Serial Port kullanmak isteyen kulllanıcıların Arduino MEGA veya Arduino DUE gibi toplamda 4 adet Serial Port sahip olan kartları tercih etmesi gerekmektedir.

Arduino UNO ve Serial

Kırmızı Ok – TX ve RX pinleri
Beyaz Ok – TX ve RX bilgi ledleri

 

0’dan başlayıp 13’te bitmek üzere toplamda 14 adet dijital pine sahip olan Arduino UNO kartında da diğer kartlarda olduğu gibi dijital 0 (RX) ve dijital 1 (TX) pinleri Serial Port’u için ayrılmıştır. Serial Port ile haberleşmek için bu iki pinin yanı sıra Arduino kartımız ile bilgisayarımız arasındaki USB bağlantısını kullanarak haberleşme sağlayabiliriz.

Arduino kart üzerinde bulunan iki adet uyarıcı ledin yardımı ile çalışma esnasında Serial Port’un o anki çalışma durumunu takip edebiliriz.

Not: Serial Port kullanılırken Arduino kartımız üzerinde bulunan Serial Port için ayrılmış pinleri başka giriş veya çıkış işlemleri için kullanamayız.

 

 

 

Serial Port Ekranı Butonu

Bilgisayarınız ve kartınız arasındaki bağlantıyı sağladıktan sonra  Serial Port Ekranı butonuna tıklayarak açılan Serial Port Ekranına ulaşabilir ve bu ekran aracılığı ile kartınız ile haberleşme ekranına ulaşabilirsiniz.

Arduino Serial Nesnesi

Arduino programlama dilinde seri haberleşme portunu kullanımı için tanımlanmış bir Serial nesnesi bulunmaktadır. Serial nesnesi işimizi kolaylaştırıcı bir çok fonksiyona sahiptir. Bu fonksiyonlar;

fonksiyonlarıdır. Birlikte bu fonksiyonların bir çoğunu inceleyeceğiz.

if ( Serial )

Belirlenen Seri Portun hazır olup olmadığını kontrol etmemize yarar. Serial nesnelerinin mantıksal bir alan alanda kullanılması durumunda eğer belirtilen Seri Port hazır ise True eğer belirtilen Seri Port hazır değilse False değeri dönecektir.

 

available ()

Serial Port’tan okuma yapmak için kullanılabilir byte( karakter )’in  olup olmadığını kontrol etmemize yarar. Gönderilmiş olan veriyi byte byte değerlendirir.

available örnek ekran çıktısı

begin ()

Arduino’dan bilgisayarımıza veya seri haberleşme portunu kullanan diğer cihazlara gönderilecek verinin hızını saniyede bit ( bit / saniye ) cinsinden ayarlar. Bir cihaz ile birlikte kullanıldığında hem Arduino’muzun hemde diğer cihazımızın veri transfer hızları aynı olmalıdır.

Kullanım Şekli:

Serial.begin(speed)
Serial.begin(speed, config)

begin() fonksiyonu bir hız parametresi ve isteğe bağlı ikinci bir parametre olarak parity veya stop biti alabilir. Arduino’muz ile bilgisayarımız arasında bir seri haberleşme gerçekleştirmek istediğimizde hız parametresi olarak 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200, 230400 veya 250000 kullanmamız gerekmektedir.

Bilgisayarımızın varsayılan hızı 9600’dür. Bu hızı değiştirmek için Arduino yazılımında yukarıda nasıl erişileceğinden bahsedilen Serial Port Ekranından aşağıdaki resimdeki gibi değiştirebilirsiniz. Kartınızın ve bilgisayarınızın hızlarının aynı olması gerektiğini unutmayınız.

Not: Yukarıdaki örnekte düzgün çıktılar alabilmemiz için Seri Monitörümüzünde baud hızının 9600 olması gerekir.

end ()

Seria Portun çalışmasını devre dışı bırakır. Daha önce belirttiğimiz gibi TX ve RX pinlerini Serial Portu kullandığımızda giriş çıkış işlemleri için kullanamıyoruz. end() ile Serial Port devre dışı bırakıldıktan sorna TX ve RX pinlerini giriş çıkış işlemleri için tekrar kullanabiliriz. Serial Portu tekrar devreye almak istersek begin() fonksiyonunu kullanabiliriz.

örnek ekran çıktısı

find ()

Find fonksiyonu ile Serial Port üzerinden gönderilen değer içerisinde arama işleme yapılır. Eğer aranan değer gönderilen değer içerisinde varsa True, yoksa False değeri döndürür.

 

örnek ekran çıktısı

parseFloat () ve parseInt ()

parseFloat() ve parseInt() fonksiyonları Seri Porta gönderilen veri dizisi içerisindeki ondalıklı ve tam sayıları almamızı sağlar. Bu işlemi yaparken gelen veri dizisinde değişikliklerde oluşur. Bunu aşağıdaki örneğinizde görebilirsiniz.

Not: Bu örnek özel bir durumu göstermek için hazırlanmıştır. Örnek ekran çıktısına parametre olarak 3.14 mobilhanem 3.14 verilmiştir.

örnek ekran çıktısı

print () ve println ()

Her iki fonksiyonda seri haberleşmede gönderilen parametreleri ASCII‘ye uygun olarak yazdırma işlemi yapar. Diğer programlama dillerinden de alışık olduğumuz şekilde print fonksiyonu yazma işlemini gerçekleştirdikten sonra imleci yazma işleminin bittiği noktada bırakırken, println fonksiyonu yazma işlemi bittikten sonra imleci bir alt satırın başına getirir ve daha sonraki yazmaların bir alt satırdan olmasını sağlar.

Kullanım şekilleri:

Serial.print(val)
Serial.print(val, format)

Serial.println(val)
Serial.println(val, format)

Özellikleri;

  • Parametre olarak aldıkları veriyi seri monitor ekranına yazarlar.
  • C gibi dillerde kullanılan kaçış karakterleri ( \t, \n vs. ) bu fonksiyonlar içinde geçerlidir.
  • Ondalıklı sayılar yazdırıldığın da varsayılan hassasiyet olan virgülden sonraki 2 basamağı yazdırılır.
  • İkinci parametre olarak alınan format değişkeni ile yazdırma hassasiyeti veya yazdırılan sayının hangi taban aritmetiğinde olması istendiği ayarlanabilir.
    • Serial.println(1.23456)  şekildeki kullanımda ekrana onluk tabanda 1.23 yazdırılır.
    • Serial.println(1.23456, 3) şeklindeki bir kullanımda ekrana 1.234 çıktısını yani, virgülden sonra üç basamağı yazdırılır. Daha farklı hassasiyetler için örnekteki 3 rakamını değiştirebiliriz.
    • Serial.println(123, format) kullanımında format değişkeni değer olarak BIN ( ikilik ), OCT ( sekizlik ), DEC ( ondalık), HEX ( on altılık ) değerlerini alır ve bu aldığı değerlere uygun tabanda sayı formatlandırılarak yazdırılır.
      • Not: Bu kullanım şekli ondalıklı sayılar için geçerli değildir.

print () ve println () örnekleri

Örnek ekran çıktısı



Örnek ekran çıktısı.

read ()

Seri Porttan gelen veriyi ilk byte ile başlayarak sırayla okuma işlemini gerçekleştirir ve okuduğu her değerin integer karşılığını döndürür. Bu integer değer tip dönüşümü yapılarak istenilen formda kullanılabilir. Eğer okunacak veri yoksa -1 değerini döndürür.

 

readBytes()

readBytes fonksiyonu Serial Porttan gelen veriyi istenilen byte adedinde okuyarak char veya byte tipinde bir diziye yazma işlemini gerçekleştirir. Bu işlemi gerçekleştirirken geriye kaç byte lık işlem yaptığını integer tipinde döndürür.

Kullanım şekilleri:
Serial.readBytes(buffer, length)

buffer : char veya byte tipinde bir dizi

length : integer tipinde kaç byte lık okuma yapılacağı

Not: Örnek ekran çıktısına parametre olarak mobilhanem verilmiştir.

örnek ekran çıktısı

readBytesUntil ()

Bu fonksiyon readBytes fonksiyonundan farklı olarak bir char parametre daha alır ve bu aldığı char parametre gelen veri dizisi içerisinde varsa okuma işlemini sonlandırır.

Kullanım şekilleri:
Serial.readBytesUntil(character,buffer, length)

character : aramak için char tipinde karakter

buffer : char veya byte tipinde bir dizi

length : integer tipinde kaç byte lık okuma yapılacağı

Not: Örnek ekran çıktısına parametre olarak mobilhanem.com verilmiştir.

örnek ekran çıktısı

readString ()

Bu fonksiyon Serial Porta gelen girdi dizisini satır sonuna kadar okuyarak okunan değeri String formunda geri döndürür.

Not: Örnek ekran çıktısına parametre olarak mobilhanem.com verilmiştir.

örnek ekran çıktısı

readStringUntil ()

Bu fonksiyon readString fonksiyonundan farklı olarak bir char parametre daha alır ve bu aldığı char parametre gelen veri dizisi içerisinde varsa okuma işlemini sonlandırır.

Not: Örnek ekran çıktısına parametre olarak mobilhanem.com verilmiştir.

örnek ekran çıktısı

setTimeout ()

Bu fonksiyon ile Seri Porttan gelecek olan verinin maksimum ne kadar bekleneceği mili saniye cinsinden ayarlanır. readBytes, readBytesUntil, parseFloat veya parseInt gibi fonksiyonların varsayılan bekleme süreleri 1000 ms’dir.

Not: Bu örnek kod çalıştırıldığında parseInt fonksiyonuna sıra geldiğinde 10 sn beklendiği görülecektir.

write ()

Bu fonksiyon print fonksiyonuna benzer bir işlev görür. Tek byte büyüklüğündeki değerleri yazdırmakta, String değerler ve char veya byte tipinde dizileri yazdırmakta kullanılır. Alacağı ikinci bir parametre ile de yazdırılan String veya dizinin kaç elemanının yazdırılacağı ayarlanabilir. Ayrıca write fonksiyonu geri dönüş değeri olarak üzerinde işlem yapılan byte sayısı döndürür.

Not: Bu örnek kod çalıştırıldığında 77 yerine yazdırıldığına ve obilhanem – Arduino Dersleri yerine sadece ilk 9 karakterin yazdırıldığına dikkat ediniz.

örnek ekran çıktısı

 

 

Arduino’da Serial Portu, Serial nesnesini ve Serial nesnesinin bir çok fonksiyonunu inceledik. Konuyla ilgili yorumlarınızı konu altından yapabilir, sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz. Bir sonraki içeriğimizde Mobilhanem.com‘da görüşmek üzere.

Tüm Arduino Dersleri için tıklayınız..

Yazar Hakkında