19 Mayıs 2017 Cuma

Arduino'da Seri İletişim

Merhaba Webkolog takipçileri,

Arduino projelerimizde sadece donanımla değil, aynı zamanda bilgisayarımızla da iletişim kurmamız gerekebilir. Sensörden gelen verileri anlık olarak görmek, hata ayıklama (debug) yapmak veya bilgisayardan Arduino'ya komut göndermek gibi pek çok senaryoda seri iletişim en büyük yardımcımızdır. Seri iletişim, Arduino kartınızın bilgisayarınızdaki Seri Monitör veya başka bir uygulama ile veri alışverişi yapmasını sağlayan bir protokoldür. Bu yazımda, seri iletişimin nasıl çalıştığını ve temel fonksiyonlarını adım adım inceleyeceğim. Hazırsanız, Arduino'nuzun bilgisayarınıza ilk "Merhaba!" demesini sağlayalım!


Seri İletişimi Başlatma: Serial.begin()

Seri iletişimi kullanmadan önce, setup() fonksiyonu içinde Serial.begin() komutuyla iletişimi başlatmamız gerekir. Bu fonksiyon, saniyede kaç bit veri transferi yapılacağını belirten bir argüman alır. Bu hıza baud rate denir ve genellikle 9600 olarak kullanılır. Hem Arduino kodundaki hem de Seri Monitördeki baud rate değerlerinin aynı olması çok önemlidir, aksi takdirde veriler anlaşılmaz karakterler olarak görünür.

void setup() {
  Serial.begin(9600); // 9600 baud rate ile seri iletişimi başlat
}

void loop() {
  // Kodlar buraya
}

Bilgisayara Veri Gönderme: Serial.print() ve Serial.println()

Arduino'dan bilgisayara veri göndermek için Serial.print() ve Serial.println() fonksiyonlarını kullanırız. Bu fonksiyonlar, sayı, metin veya değişken gibi farklı türdeki verileri Seri Monitöre yazdırır.

  • Serial.print("metin"): Metni Seri Monitöre yazar ve imleci aynı satırda bırakır.
  • Serial.println("metin"): Metni Seri Monitöre yazar ve imleci bir alt satıra geçirir (println = print line). Bu, verileri daha düzenli görmemizi sağlar.
void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print("Merhaba, ");
  Serial.println("Webkolog!");
  delay(1000);
}

Bu kodun çıktısı, her saniyede bir alt alta "Merhaba, Webkolog!" olacaktır.

Ayrıca, bu fonksiyonlarla sayıları farklı formatlarda da yazdırabiliriz:

int sayi = 10;
Serial.println(sayi, DEC); // "10"
Serial.println(sayi, BIN); // "1010"
Serial.println(sayi, HEX); // "A"

Bilgisayardan Veri Alma: Serial.available() ve Serial.read()

Arduino'nun bilgisayardan veri alması için iki temel fonksiyona ihtiyacımız vardır:

  • Serial.available(): Seri port tamponunda okunmayı bekleyen veri olup olmadığını kontrol eder. Eğer veri varsa, okunmayı bekleyen bayt sayısını döndürür; yoksa 0 döndürür.
  • Serial.read(): Seri port tamponundaki ilk baytı okur ve döndürür. Okunan veri tampondan silinir. Eğer okunacak veri yoksa -1 döndürür.
void setup() {
  Serial.begin(9600);
  Serial.println("Komut bekliyor...");
}

void loop() {
  if (Serial.available() > 0) {
    char gelenVeri = Serial.read();
    Serial.print("Gelen veri: ");
    Serial.println(gelenVeri);
  }
}

Bu kodda, Seri Monitörden bir karakter gönderdiğinizde, Arduino bu karakteri okur ve ekrana geri yazdırır. Eğer tüm bir satırı okumak isterseniz, Serial.readString() fonksiyonunu kullanabilirsiniz.


Seri Olay Fonksiyonu: serialEvent()

Arduino IDE, seri porttan veri geldiğinde otomatik olarak çağrılan özel bir fonksiyona sahiptir: serialEvent(). Bu fonksiyon, loop() fonksiyonunun her çalışmasından sonra kontrol edilir. Bu, özellikle sürekli olarak veri akışını dinlemek yerine, sadece veri geldiğinde işlem yapmak istediğinizde pratik bir yöntemdir.

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

void loop() {
  // Loop döngüsü diğer işleri yapmaya devam eder
}

void serialEvent() {
  while (Serial.available()) {
    char gelenVeri = (char)Serial.read();
    Serial.print("Gelen veri: ");
    Serial.println(gelenVeri);
  }
}

Bu kodda, siz Seri Monitörden bir veri gönderene kadar loop() döngüsü çalışmaya devam eder. Sadece veri geldiğinde serialEvent() fonksiyonu devreye girer. Bu, programınızın daha düzenli ve verimli olmasını sağlar.

Seri iletişim, Arduino projelerinizin en önemli hata ayıklama ve kullanıcı arayüzü araçlarından biridir. Bu fonksiyonları kullanarak projelerinizle interaktif bir şekilde iletişim kurabilir, onları test edebilir ve kontrol edebilirsiniz.

Webkolog'u takipte kalın!

Hepinize bol kodlu ve başarılı projeler dilerim!

0 yorum:

Yorum Gönder