Ana Sayfa · Akademi · Robotik ve Kodlama · Arduino · Seri Monitör

Seri Monitör

Serial ile değerleri bilgisayara yazdırıp hata ayıklamayı öğren.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Seri monitör, Arduino'nun içinde olup biteni USB kablosu üzerinden bilgisayar ekranına yazan bir penceredir; sayıları görmemizi ve hataları bulmamızı sağlar.

Üretilecek kanıt

Yukarıdaki sensör kodunu şu adımlarla geliştir: Kodu karta yükle ve seri monitörü aç. Sensörü aydınlık ve karanlık ortamda okuduğunda çıkan en küçük ve en büyük değerleri not al. Kodu değiştirerek şu satırı ekle: değer 300'den küçükse Serial.println("Karanlik") , değilse Serial.println("Aydinlik") yazsın. Seri monitörde etiketin ışığa göre değişip…

Kontrol tuzağı

Serial.begin yazmayı unutmak setup() içinde Serial.begin(9600) yoksa seri monitör boş kalır. Yazdırma komutu çalışmaz. İlk kontrol edilecek yer burasıdır. Baud rate uyuşmazlığı Kodda 9600 , seri monitörde 115200 yazıyorsa ekranda tuhaf işaretler çıkar. İki değeri de aynı yapmak sorunu çözer. print ve println'i…

Sonraki bağlantı

PWM: Bir LED'i tam açık ya da tam kapalı değil, kademeli olarak parlatmayı ve analogWrite ile motor hızını ayarlamayı öğreneceğiz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre30–45 dk
Ön koşulAnalog Okuma
İçerikStandart ders · 1.449 kelime
Son güncelleme

Bir cümlelik özet

Seri monitör, Arduino'nun içinde olup biteni USB kablosu üzerinden bilgisayar ekranına yazan bir penceredir; sayıları görmemizi ve hataları bulmamızı sağlar.

Neden önemli?

Arduino'nun bir ekranı yoktur. Bir sensör okuduğunda ya da bir hesap yaptığında, sonucu bize doğrudan gösteremez. Kart "sıcaklık şu an 512" diye düşünür ama biz bunu göremeyiz.

İşte seri monitör tam burada devreye girer. Arduino, ölçtüğü değerleri USB kablosuyla bilgisayara gönderir; biz de bunları bir metin penceresinde okuruz. Bu sayede:

Kısacası seri monitör, Arduino ile aramızdaki en basit konuşma yoludur. Bir sonraki adım olan PWM'i ve daha karmaşık projeleri öğrenirken, hata bulmanın en güçlü aracı da bu olacak.

Seri iletişim nasıl çalışır?

Arduino ile bilgisayar, USB kablosu üzerinden seri iletişim (serial communication) kurar. "Seri" kelimesi verilerin tek tek, sırayla gönderilmesi anlamına gelir. Harfler ve rakamlar art arda dizilerek bilgisayara ulaşır.

Serial.begin ile konuşmayı başlatmak

Herhangi bir şey yazdırmadan önce seri iletişimi açmamız gerekir. Bunu setup() içinde bir kez yaparız:

void setup() {
  Serial.begin(9600); // Seri iletisimi baslat
}

void loop() {
  Serial.println("Merhaba dunya"); // Bir satir yaz
  delay(1000);                     // 1 saniye bekle
}

Serial.begin(9600) satırı, "bilgisayarla saniyede 9600 sinyal hızında konuşacağız" demektir. Bu hız değerine baud rate denir.

Baud rate nedir?

Baud rate, verilerin ne kadar hızlı gönderildiğini gösteren sayıdır. 9600 en sık kullanılan değerdir ve başlangıç için gayet iyidir.

Önemli olan tek kural şudur: Kodundaki baud rate ile seri monitördeki baud rate aynı olmalıdır. Kodun 9600 diyorsa, seri monitörün sağ alt köşesindeki kutu da 9600 olmalıdır. Aksi halde ekranda anlamsız işaretler görürsün.

print ve println arasındaki fark

Değer yazdırmak için iki komut kullanırız:

Bir örnekle görelim:

Serial.print("Sicaklik: ");   // Ayni satirda kalir
Serial.println(24);           // Yazar ve alt satira gecer

Ekranda şöyle görünür:

Sicaklik: 24

print ile bir etiket (yazı) koyup, ardından println ile sayıyı yazmak çok yaygın bir kalıptır. Böylece ekranda "512" yerine "Isik degeri: 512" gibi anlaşılır bir satır çıkar.

Günlük hayattan iki örnek

Örnek 1: Doktorun not defteri

Bir doktora gittiğinde ateşini ölçer ve bir deftere yazar: "Ateş: 37.2". Termometre değeri ölçer, doktor da onu okunur biçimde kaydeder. Seri monitör de tam olarak bu deftere benzer. Arduino ölçer, seri monitör okunur biçimde ekrana not düşer. Defter olmasa doktor hangi değerin ne olduğunu hatırlayamaz.

Örnek 2: Otobüs durağındaki ekran

Bir otobüs durağındaki ekran, "12 numaralı otobüs 3 dakika sonra" yazar. Otobüsler bir yerlerde hareket ediyor ama sen onları görmüyorsun; ekran sana durumu sürekli bildiriyor. Seri monitör de Arduino'nun içinde dönen değerleri aynı şekilde bize canlı olarak bildirir.

Sensör değerini yazdırma

Şimdi bir önceki dersteki analog okumayı seri monitörle birleştirelim. Bir potansiyometre ya da ışık sensörü (LDR) kullanabilirsin.

Bağlantı: LDR'nin bir bacağı 5V'a, diğer bacağı hem A0 pinine hem de 10 kΩ direnç üzerinden GND'ye bağlanır. Bu direnç, ölçüm için gerekli gerilim bölücüyü oluşturur.

int sensorPini = A0; // Sensorun bagli oldugu analog pin

void setup() {
  Serial.begin(9600); // Seri iletisimi baslat
}

void loop() {
  int deger = analogRead(sensorPini); // 0-1023 arasi oku
  Serial.print("Isik degeri: ");      // Etiket yaz
  Serial.println(deger);              // Sayiyi yaz, alt satira gec
  delay(500);                         // Yarim saniye bekle
}

Kodu yükledikten sonra seri monitörü aç. Sensörün üstünü elinle kapatınca sayının değiştiğini göreceksin. Işık azaldıkça değer değişir; işte hata ayıklamanın temeli budur: gerçek sayıları kendi gözlerinle görmek.

delay yerine millis ile yazdırmak

delay(500) yazdığında Arduino o yarım saniye boyunca başka hiçbir şey yapamaz. Küçük projelerde sorun değildir, ama başka işler de yapmak istediğinde bu bekleme sorun olur. Bloklamayan (non-blocking) zamanlama için millis() kullanırız. millis(), kart açıldığından beri geçen milisaniyeyi verir:

unsigned long oncekiZaman = 0; // En son yazdirdigimiz an

void loop() {
  if (millis() - oncekiZaman >= 500) { // 500 ms gecti mi?
    oncekiZaman = millis();            // Zamani guncelle
    int deger = analogRead(A0);        // Sensoru oku
    Serial.println(deger);             // Degeri yaz
  }
  // Buraya baska isler de eklenebilir
}

Bu yapıda Arduino beklemez; sürekli saati kontrol eder ve zamanı geldiğinde yazar. İlk başta karmaşık görünebilir, ama ileride birden fazla işi aynı anda yapan projelerde çok işine yarayacak.

Mini uygulama

Yukarıdaki sensör kodunu şu adımlarla geliştir:

  1. Kodu karta yükle ve seri monitörü aç.
  2. Sensörü aydınlık ve karanlık ortamda okuduğunda çıkan en küçük ve en büyük değerleri not al.
  3. Kodu değiştirerek şu satırı ekle: değer 300'den küçükse Serial.println("Karanlik"), değilse Serial.println("Aydinlik") yazsın.
  4. Seri monitörde etiketin ışığa göre değişip değişmediğini kontrol et.

Bu, bir sonraki adımda bir LED'i otomatik yakan gece lambasının ilk parçasıdır.

Uygulama laboratuvarı: Seri Monitör

Seri Monitör konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada Seri iletişim nasıl çalışır? ile Baud rate nedir? arasındaki ilişkiyi kullanarak bağlantı şeması, derlenebilen Arduino kodu, seri monitör kaydı ve test sonucu hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.

Görev senaryosu

Şu senaryoyu ele al: potansiyometreyle servo açısını sınırlar içinde değiştiren düzenek. Dersin ana hedefi “Serial ile değerleri bilgisayara yazdırıp hata ayıklamayı öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.

  1. Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
  2. En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
  3. Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
  4. Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
  5. Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.

Başarı ölçütleri

“Seri Monitör” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın potansiyometreyle servo açısını sınırlar içinde değiştiren düzenek senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Seri iletişim nasıl çalışır? ve Baud rate nedir? ilişkisini daha küçük adımlara bölerek düzelt.

Sık yapılan hatalar

Serial.begin yazmayı unutmak

setup() içinde Serial.begin(9600) yoksa seri monitör boş kalır. Yazdırma komutu çalışmaz. İlk kontrol edilecek yer burasıdır.

Baud rate uyuşmazlığı

Kodda 9600, seri monitörde 115200 yazıyorsa ekranda tuhaf işaretler çıkar. İki değeri de aynı yapmak sorunu çözer.

print ve println'i karıştırmak

Sürekli Serial.print() kullanırsan her şey tek satırda birbirine yapışır. Okunur satırlar için sonda println kullanmayı unutma.

delay değerini çok küçük yapmak

delay(1) yazarsan ekran öyle hızlı akar ki hiçbir şey okuyamazsın. Değerleri rahat okumak için delay(300) ile delay(1000) arası iyi bir başlangıçtır.

Güvenlik notu

Ders özeti

Kontrol soruları

  1. Serial.begin(9600) satırı ne işe yarar ve kodun neresine yazılır?
  2. Serial.print ile Serial.println arasındaki fark nedir?
  3. Baud rate nedir ve kodla seri monitör arasında neden aynı olmalıdır?
  4. Seri monitör açıldığında ekran boşsa ilk kontrol edeceğin iki şey nedir?
  5. delay(500) yerine millis() kullanmanın avantajı nedir?

Cevaplar

  1. Seri iletişimi başlatır, yani Arduino'nun USB üzerinden bilgisayarla konuşmasını açar. setup() içine, bir kez yazılır.
  2. Serial.print yazdıktan sonra aynı satırda kalır; Serial.println yazdıktan sonra alt satıra geçer. Etiket + sayı için genelde önce print, sonra println kullanılır.
  3. Baud rate, verilerin gönderilme hızıdır (örneğin 9600). Kod ve seri monitör aynı hızı kullanmazsa ekranda anlamsız işaretler çıkar, çünkü iki taraf birbirini yanlış çözer.
  4. Önce setup() içinde Serial.begin var mı diye bakılır; sonra seri monitördeki baud rate değerinin kodla aynı olup olmadığı kontrol edilir.
  5. millis() Arduino'yu bekletmez; kart aynı anda başka işler de yapabilir. delay ise o süre boyunca her şeyi durdurur.

Kaynak ve doğrulama notu

“Seri Monitör” dersi için doğrulama odağı Seri iletişim nasıl çalışır? ile Baud rate nedir? arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Arduino uyumlu kartlarda pin, gerilim ve akım sınırları modele göre değişebilir. Kod derlense bile devre güvenli olmayabileceğinden, motor ve servo gibi yükler uygun sürücü ve harici besleme ile kullanılmalıdır.

Sonraki ders

PWM: Bir LED'i tam açık ya da tam kapalı değil, kademeli olarak parlatmayı ve analogWrite ile motor hızını ayarlamayı öğreneceğiz.

Quiz’i BaşlatArduino bölümüne dön
SORU HAVUZU

Bu dersi 10 soruyla pekiştir

Bu ders için 20 soruluk bir havuz hazırlandı. Her başlangıçta 10 soru ve seçenekler yeniden karıştırılır.