Icerige atla
//

Bilim ve Teknoloji Üretmek İçin Buradayız!

Serial.print() Tuzağından Kurtuluş
Püf Noktası 31.07.2026 👁 10 ★ 5,0

Serial.print() Tuzağından Kurtuluş

⏱️ Tahmini okuma: 2 dk

Öğrenci bilgisayarın başında robot USB kablosuyla bağlıyken son testlerini yapar. Öğrenci büyük bir heyecanla söyler: Hocam bitti, mükemmel çalışıyor, piste alalım!

USB kablosu çekilir, robot piste konur, enerji verilir ve... Az önce kararlı çalışan robot gitmez, yavaşlar, virajları kaçırır veya şaşkın tepkiler verir.

İlk tepki genelde şudur: Hocam az önce çalışıyordu, kesin pilde sorun var! Halbuki sorun çoğunlukla pilde değildir. Kodun içinde unutulan gizli bir kod vardır.

Sorun: Kendi kendine konuşan robot

Hata ayıklamak (debug) için Serial.print() hayat kurtarır. Sensör kaç okuyor, döngü buraya girdi mi diye anlamak için Arduino'dan bilgisayar ekranına (Seri Port) veri göndeririz.

Ama USB kablosunu çektiğinizde robotun beyni bu verileri göndermeyi bırakmaz. Bilgisayarın artık dinlemediğini fark etmez. Sensörden okuduğu her değeri saniyede yüzlerce kez boşluğa doğru yazmaya devam eder.

Zaman tuzağı: İşlemci neden yavaşlar?

Arduino, seri porta yazmak için gerçek zaman harcar. Hele loop() içinde çok sayıda Serial.print() varsa durum daha kötü olur.

İşlemci motorlara ve engellere odaklanmak yerine boşluğa yazı yazmakla meşgul olur. Döngü yavaşlar, robotun refleksleri zayıflar. Çizgiyi görür ama dönme emrini verene kadar yoldan çıkmış olur.

Atölye notu: USB ile çalışırken hızlı görünen kod, pil ile çalışırken aynı hızı vermeyebilir. Sebep bazen pil voltajı, bazen de unutulmuş Serial çıktısıdır.

Püf noktası: İki pratik çözüm

1) Çırak yöntemi (sil veya yorum satırı)

Yarışma veya saha testinden önce tüm Serial.print() / Serial.println() satırlarının başına // koyun. Kesin çözümdür. Sonra tekrar değer okumak isterseniz ilgili satırları açmanız gerekir.

// Serial.println(sensorDegeri);  // pistte kapalı

2) Bilişimci yöntemi (test modu şalteri)

Kodun en tepesine bir anahtar koyun:

int testModu = 1; // 1 = yazdır, 0 = yazdırma

Yazdırma satırlarını bu şarta bağlayın:

if (testModu == 1) {
  Serial.println(sensorDegeri);
}

Atölyede bilgisayar başındayken testModu = 1 kalsın. Piste çıkmadan önce testModu = 0 yapıp kodu son kez yükleyin. Tek bir rakamı değiştirerek veri yükünü kaldırmış olursunuz.

Robota pistte kendi kendine konuşmayı bıraktırın ki dikkatini yola verebilsin. Temiz kod, hızlı robottur.

Kontrol listesi: USB çekildi mi? Serial satırları kapalı mı / testModu 0 mı? Ortak GND ve harici motor gücü doğru mu?

👨‍💻

İçerik Yazarı

Mustafa KARSLI

Bilişim Teknolojileri Öğretmeni

Bu içeriği paylaş

Bu sayfa işinize yaradı mı?

Bu yazıyı değerlendirin

5 yıldız üzerinden puanlayın — Google arama sonuçlarında yıldız görünmesine yardımcı olur.

5,0 / 5 (1 oy)

Öğrenci Paneli

Ders ilerlemenizi kaydetmek için giriş yapın.

Giriş Yap

Mobil Erişim — QR Kod

QR

Telefonunuzla tarayın

📚 Benzer Makaleler

💬 Yorumlar

Henüz yorum yapılmamış.

Fikrini Belirt

Yorumlar yönetici onayından sonra yayınlanır. Küfür, hakaret, kişisel veri ve reklam içeren mesajlar reddedilir.