Arduino Serial Haberleşme

Arduino kartları bilgisayar ve diğer cihazlar ile haberleşebilen bir programlama kartıdır. Uno, Mega vb diğer kartlarda farklı sayılarda serial portlar vardır. Bu haberleşmeyi bilgisayar ile USB kablosundan yapabildiği gibi kart üzerindeki TX ve RX pinleri ile de yapılabilir ama bunun için ekstra bir TTL converter a ihtiyacımız olacaktır. Aynı şekilde diğer çevresel elemanlarla haberleşme de TX ve RX pinleri ile yapılabilir.

Bu haberleşme üzerine Arduino da yazılan kodların kullanımını ve Arduino IDE üzerindeki Serial Monitör de çıktılarını inceleyelim.

Serial.begin(baud_rate) : Serial haberleşmenin başlatılması için "setup" kısmına yazılır. Baud Rate ise haberleşme hızıdır. Baud Rate ;  300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, yada 115200 değerlerini alabilir.
Kullanım şekli şöyledir.

void setup()
{
    Serial.begin(9600); // 9600 bps hızı ile haberleşme başlatıldı.
}


Serial.available() :  Serial bağlantının kullanılabilir olup olmadığını kontrol eder. if gibi koşul komutları ile kullanılır.void loop()
{
   if (Serial.available() > 0) 
   {
      ........ // Serialden kullanıma uygunsa yapılacak işlemler.

   }
}


Serial.print() / Serial.println() : Serial ASCII yazılarının göndermeye yarar. String ve Char değişkenlerini gönderir.

Serial.print(value, format) şeklinde kullanımı ile gönderilecek değerlerin formatlarını değiştirerek gönderir. Örnekler üzerinde görelim şimdi.


Serial.print(64, BIN) Binary çıkış verir "1000000" şeklinde
Serial.print(64, OCT) Octal çıkış verir  "100" şeklinde
Serial.print(64, DEC) Decimal çıkış verir "64" şeklinde
Serial.print(64, HEX) Hexedecimal çıkış verir  "40" şeklinde
Serial.println() ise veriyi gönderdikten sonra bir alt satıra geçer.

Serial.Write() : Serial üzerinden byte verileri gönderir. değişkenleri byte lar halinde gönderir.

Serial.read() : Serialden gelen verileri okumak için kullanılır.



 Bununla ilgili bir örnek yapalım


int gelenveri;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
   for(;Serial.available()>0;)
   {
     gelenveri = Serial.read();
     char m = char(gelenveri); // Serialden Gelen Karekterlerin ASCII kodlarından karektere çeviriyor.
     
     Serial.println(m);
     Serial.println(gelenveri,HEX);
     Serial.println(gelenveri,DEC);
     Serial.println(gelenveri,OCT);
     Serial.println(gelenveri,BIN);
     
     delay(1000);
   }
}

Serial monitorden girilen veriyi serial ekranda farklı formatlarda yazıdırıyor.