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:
- Bir sensörün gerçekten çalışıp çalışmadığını görürüz.
- Değerlerin beklediğimiz aralıkta olup olmadığını kontrol ederiz.
- Kod yanlış davrandığında nerede hata yaptığımızı anlarız.
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:
Serial.print("...")yazar ama satır atlamaz. Sonraki yazı aynı satırda devam eder.Serial.println("...")yazar ve alt satıra geçer.
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:
- 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ğilseSerial.println("Aydinlik")yazsın. - 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.
- Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
- En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
- Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
- Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
- 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
- Kartın 5 V veya 3,3 V çalışma sınırı doğru mu?
- Pin numaraları kod ve devrede eşleşiyor mu?
- Seri monitör ölçümü beklenen aralıkta mı?
- Motor veya servo karttan doğrudan aşırı akım çekiyor mu?
- Güç kesildiğinde sistem güvenli duruma dönüyor mu?
“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
- Bu derste yalnızca düşük gerilim vardır: Arduino'yu bilgisayarın USB portu ya da uygun bir pil paketi besler. Kesinlikle prizden gelen şebeke elektriği kullanılmaz.
- Sensörü bağlarken kartın gücü USB'den gelir; devreyi değiştirmeden önce kabloyu çekmek iyi bir alışkanlıktır.
- Analog sensörlerde her zaman doğru direnci kullan; direnci atlarsan pinlere fazla akım gidebilir.
- İlk kez devre kurarken bir yetişkinden bağlantıları kontrol etmesini iste. Motor veya pompa gibi güçlü parçalar bu derste yoktur; onlar ayrı bir güç kaynağı ve motor sürücü gerektirir.
Ders özeti
- Seri monitör, Arduino'nun ölçtüğü değerleri USB üzerinden bilgisayar ekranına yazan penceredir.
- İletişimi başlatmak için
setup()içine bir kezSerial.begin(9600)yazılır. Serial.printaynı satırda kalır,Serial.printlnalt satıra geçer.- Koddaki baud rate ile seri monitördeki baud rate aynı olmalıdır.
- Değerleri gözle görmek, hata ayıklamanın en güçlü ve en basit yoludur.
Kontrol soruları
Serial.begin(9600)satırı ne işe yarar ve kodun neresine yazılır?Serial.printileSerial.printlnarasındaki fark nedir?- Baud rate nedir ve kodla seri monitör arasında neden aynı olmalıdır?
- Seri monitör açıldığında ekran boşsa ilk kontrol edeceğin iki şey nedir?
delay(500)yerinemillis()kullanmanın avantajı nedir?
Cevaplar
- 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. Serial.printyazdıktan sonra aynı satırda kalır;Serial.printlnyazdıktan sonra alt satıra geçer. Etiket + sayı için genelde önceprint, sonraprintlnkullanılır.- 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.
- Önce
setup()içindeSerial.beginvar mı diye bakılır; sonra seri monitördeki baud rate değerinin kodla aynı olup olmadığı kontrol edilir. millis()Arduino'yu bekletmez; kart aynı anda başka işler de yapabilir.delayise 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.