Arduino ile Seri Haberleşme
Arduino ile Seri Haberleşme Nedir? Nasıl Kullanılır?
Arduino projelerinde bilgisayar, başka bir Arduino kartı veya farklı mikrodenetleyiciler ile veri alışverişi yapmanın en kolay yollarından biri seri haberleşme (Serial Communication) yöntemidir. Sensör verilerini bilgisayara göndermek, gelen komutlara göre LED yakmak veya farklı cihazlarla iletişim kurmak gibi birçok uygulamada seri haberleşme kullanılır.
Bu yazıda Arduino'da seri haberleşmenin çalışma mantığını, temel fonksiyonlarını ve örnek kullanımını inceleyeceğiz.
Seri Haberleşme Nedir?
Seri haberleşme, verilerin tek bir hat üzerinden bit bit gönderilip alınması yöntemidir. Arduino Uno üzerindeki ATmega328P mikrodenetleyicisi donanımsal UART (Universal Asynchronous Receiver Transmitter) desteğine sahiptir.
Arduino Uno'da seri haberleşme için kullanılan pinler:
- TX (Pin 1) → Veri gönderme
- RX (Pin 0) → Veri alma
USB kablosu ile bilgisayara bağlandığınızda da aynı UART hattı kullanılmaktadır.
Arduino'da Seri Haberleşme Nasıl Başlatılır?
Seri haberleşmeyi kullanabilmek için setup() fonksiyonunda haberleşme hızı belirlenmelidir.
void setup() { Serial.begin(9600); }
Buradaki 9600, baud rate yani haberleşme hızıdır.
Sık kullanılan baud değerleri:
- 9600
- 19200
- 38400
- 57600
- 115200
İki cihazın da aynı baud hızında çalışması gerekir.
Bilgisayara Veri Göndermek
Arduino'dan bilgisayara veri göndermek oldukça kolaydır.
void setup() { Serial.begin(9600); } void loop() { Serial.println("Merhaba Arduino"); delay(1000); }
Bu örnekte her saniye Serial Monitor ekranına:
Merhaba Arduino
yazdırılır.
print() ve println() Arasındaki Fark
Serial.print("Sicaklik:"); Serial.print(25);
Çıktı:
Sicaklik:25
Serial.println("Sicaklik:"); Serial.println(25);
Çıktı:
Sicaklik: 25
println() fonksiyonu satır sonunda yeni satıra geçer.
Bilgisayardan Veri Okumak
Serial Monitor üzerinden Arduino'ya veri gönderebilirsiniz.
void setup() { Serial.begin(9600); } void loop() { if (Serial.available()) { char veri = Serial.read(); Serial.print("Gelen Veri: "); Serial.println(veri); } }
Gönderilen karakter anında okunarak tekrar ekrana yazdırılır.
Serial.available() Ne İşe Yarar?
Serial.available()
Alma tamponunda okunmayı bekleyen veri olup olmadığını kontrol eder.
Örneğin;
if(Serial.available()) { // Veri geldi }
şeklinde kullanılır.
Sayısal Veri Göndermek
Bilgisayardan gönderilen sayılar da okunabilir.
void setup() { Serial.begin(9600); } void loop() { if(Serial.available()) { int sayi = Serial.parseInt(); Serial.print("Girilen sayi: "); Serial.println(sayi); } }
Örneğin:
250
gönderildiğinde Arduino ekrana:
Girilen sayi: 250
yazacaktır.
LED Kontrolü Örneği
Bilgisayardan gönderilen karakterlere göre LED yakılıp söndürülebilir.
void setup() { pinMode(13, OUTPUT); Serial.begin(9600); } void loop() { if(Serial.available()) { char komut = Serial.read(); if(komut == 'A') { digitalWrite(13, HIGH); } if(komut == 'K') { digitalWrite(13, LOW); } } }
Serial Monitor'dan:
A
gönderildiğinde LED yanar.
K
gönderildiğinde LED söner.
Kullanışlı Seri Haberleşme Fonksiyonları
| Fonksiyon | Açıklama |
|---|---|
Serial.begin() | Seri haberleşmeyi başlatır. |
Serial.print() | Veriyi aynı satıra yazar. |
Serial.println() | Veriyi yazıp yeni satıra geçer. |
Serial.read() | Gelen ilk karakteri okur. |
Serial.available() | Bekleyen veri miktarını döndürür. |
Serial.parseInt() | Sayısal veri okur. |
Serial.parseFloat() | Ondalıklı sayı okur. |
Serial.readString() | Gelen metni String olarak okur. |
Serial.write() | Ham veri gönderir. |
Seri Haberleşme Kullanırken Dikkat Edilmesi Gerekenler
- Arduino ile bilgisayarın aynı baud hızında çalışması gerekir.
- RX (0) ve TX (1) pinleri USB haberleşmesini de kullandığından, bu pinlere bağlı harici cihazlar program yükleme sırasında sorun oluşturabilir.
-
Büyük veri paketlerinde
Serial.available()kontrolü yapılması önerilir. - Çok yüksek baud hızlarında kablo kalitesi ve haberleşme mesafesi iletişim kararlılığını etkileyebilir.
Sonuç
Arduino seri haberleşme, hem bilgisayar ile veri alışverişi yapmak hem de farklı elektronik cihazlarla iletişim kurmak için en temel ve en güçlü yöntemlerden biridir. Sensör verilerinin izlenmesi, motor kontrolü, haberleşme modülleri ve hata ayıklama işlemlerinde yaygın olarak kullanılır. Serial.begin(), Serial.print() ve Serial.read() gibi temel fonksiyonları öğrendikten sonra daha gelişmiş UART tabanlı projeler geliştirmek oldukça kolay hale gelir.
