Arduino Programlama Dilleri – Seri İletişim

with Yorum yapılmamış





Pinlerin seri iletişimi TX / RX, TTL mantık düzeylerini kullanır (karta bağlı olarak 5V veya 3.3V).

Bu pinleri bir RS232 seri portuna doğrudan bağlamayın; +/- 12V’de çalışırlar ve Arduino kartınıza zarar verebilirler.

Seri, Arduino kartı ile bir bilgisayar veya diğer cihazlar arasındaki iletişim için kullanılır.

Tüm Arduino kartlarında en az bir seri bağlantı noktası (UART veya USART olarak da bilinir) vardır:

Seri, Dijital pin 0 (RX) ve 1 (TX) üzerinden ve ayrıca bilgisayar üzerinden USB üzerinden iletişim kurar.

Bu nedenle, bu işlevleri kullanırsanız, dijital giriş veya çıkış için 0 ve 1 numaralı pinleri kullanamazsınız.

 

Bir Arduino kuruluyla iletişim kurmak için Arduino ortamının dahili seri monitörünü kullanabilirsiniz.

Araç çubuğundaki seri monitör düğmesini tıklayın ve begin() çağrısında kullanılan aynı baud hızını seçin.

 

Arduino Mega‘nın üç ek seri portu vardır: Pin 19(RX) ve 18(TX) üzerindeki Serial1, 17(RX) ve 16(TX) pinlerdeki Serial2,

15(RX) ve 14(TX) pinlerdeki Serial3. Bu pinleri kişisel bilgisayarınızla iletişim kurmak için,

Mega’nın USB-to-serial adaptörüne bağlı olmadığından ek bir USB-to-seri adaptöre ihtiyaç duyacaksınız.

Bunları harici bir TTL seri cihazla iletişim kurmak için kullanmak için, TX pinini cihazınızın RX pimine,

RX’i cihazınızın TX pinine ve Mega’nuzun zemini cihazınızın zemine bağlayın.

 

Arduino Due‘nun üç ilave 3.3V TTL seri portu vardır: 19(RX) ve 18(TX) pinlerdeki Serial1;

15(RX) ve 14 (TX) pinlerdeki Serial2. 17(RX) ve 16(TX), Seri3.

Pin 0 ve 1 ayrıca USB hata ayıklama bağlantı noktasına bağlı olan ATmega16U2 USB-to-TTL

Seri yongasının ilgili pinlerine bağlanır.

Ayrıca, SAM3X yongasında SerialUSB olan yerli bir USB seri bağlantı noktası da var.

 

Arduino Leonardo kartı, 0(RX) ve 1(TX) pimlerde TTL(5V) seri ile iletişim kurmak için Serial1‘i kullanıyor.

Seri USB CDC iletişimi için ayrılmıştır. Daha fazla bilgi için, Leonardo başlama sayfası ve donanım sayfasına bakın.

Fonksiyonları:

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.




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 seçilir.

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.

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.

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.

parseFloat() ve parseInt()

parseFloat() ve parseIn() 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.

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.println(val)
Serial.print(val, format)  ,  Serial.println(val, format)

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.




read()

Seri Porttan gelen veriyi ilk byte ile başlayarak sırayla okuma işlemini gerçekleştirir ve okuduğu her değerin

int karşılığını döndürür. Bu int 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ı int tipinde döndürür.

Serial.readBytes(buffer, length)

buffer : char veya byte tipinde bir dizi

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

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.

Serial.readBytesUntil(character,buffer, length)

character : aramak için char tipinde karakter

buffer : char veya byte tipinde bir dizi

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

readString()

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

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.

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.

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.

findUntil()

flush()

availableForWrite()

peek()

serialEvent()




NOT: Buradaki bilgiler arduino.cc sitesinden Türkçeye çevrilmiştir.
Türkçe çevirinin tüm hakları saklıdır.
Bu web sayfası sadece link olarak paylaşılabilir.
Sayfada herhangi bir hata, öneri ve yorumlarınız için iletişim kurmanızı bekleriz.


Bir Cevap Yazın