Robotik Püf Noktalar 04.03.2026 👁 7 Okunma

Serial.print Robotu Yoldan Çıkarır mı?

Atölyede karşılaştığımız sorunlardan birine daha değinmek istiyorum. 

 

Robotu hazırladınız USB kablosuyla kodu yüklediniz ve son testlerini yapıyorsunuz. Buraya kadar her şey çok güzel, sensörler harika okuyor, motorlar tam zamanında tepki veriyor. Diyorsunuz ki evet bitti, mükemmel çalışıyor, haydi pistte deneyelim diyorsunuz.

 

USB kablosunu çekip, robotu piste koyup, robotu çalıştırıyorsunuz ve... O da ne? Az önce fişek gibi, kararlı çalışan o robot gitmez, yavaşlar, virajları kaçırır veya saçma sapan tepkiler verir.

 

Peki sorun ne?

 

Kodlama yaparken sorunları bulmak için Serial.print() komutunu sıkça kullanırız. "Acaba sensör kaç okuyor?", "Döngü buraya girdi mi?" diye anlamak için Arduino'dan Seri Port Ekranına sürekli veri göndeririz. Ancak USB kablosunu çektiğimizde, robot o verileri göndermeyi bırakmaz! Bilgisayarın artık onu dinlemediğini fark edemez. Sensörden okuduğu her değeri, "Siyah: 900, Beyaz: 100" gibi saniyede binlerce kez göndermeye devam eder.

 

Arduino, o verileri seri port üzerinden göndermek için ciddi bir zaman harcar. Hele bir de saniyede binlerce kez dönen loop() döngünüzün içine sayfalar dolusu Serial.print() koyduysanız durum daha da vahimdir.

 

İşlemciniz motorlara hükmetmek veya engeli okumak yerine, sürekli boşluğa "yazı yazmakla" meşgul olur. Bu gereksiz veri trafiği işlemciyi yorar, döngüyü yavaşlatır ve robotunuzun reflekslerini zayıflatır. Robot çizgiyi görür, ama gereksiz verileri yazdırmakla meşgul olduğu için dönme emrini verene kadar çoktan yoldan çıkmış olur!

 

Peki ne yapmalıyız?

 

Bu duruma düşmemek için iki farklı yol izleyebiliriz:

 

1. Sil veya Yorum Satırı Yap: Yarışmaya veya gerçek pist testine çıkmadan önce, koddaki tüm Serial.print() komutlarının başına // koyarak yani yorum satırı yaparak onları iptal edin. Bu kesin çözümdür ama sonradan değer okumak isterseniz tek tek o bölümleri bulup açmanız gerekir.

 

2. Şart Koş: Profesyonel kod yazarları “Hata Ayıklama” yapıları kullanır. Bunun için öncelikle kodunuzun en tepesine bir "değişken" ekleyin:

        int testModu = 1; 

gibi. Bu değişken ile şunu yapacağız:  1 ise değerleri yaz, 0 ise yazdırma.

 

Ve veri yazdırma kodlarını bu değişkenin şartına bağlayın: 

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

gibi. Tüm serial.print ifadelerini bu şekilde yazın.

 

Atölyede bilgisayar başındayken testModu = 1 olarak kalsın. Yarışma pistine çıkmadan hemen önce int testModu = 0; yapıp kodu son kez robota yükleyin. Böylece tüm yazdırma komutlarını durmadan aç kapa yapmanıza gerek kalmaz. Sadece testmodu değişkenini değiştirerek kolaylıkla bu sorundan kurtulabilirsiniz.

 

Gereksiz komutlarla robotu yormayalım ki sorunsuz çalışabilsin.

👨‍💻

İçerik Yazarı

Mustafa KARSLI

Bilişim Teknolojileri Öğretmeni

Bu İçeriği Paylaş
f 𝕏

💬 Yorumlar

Henüz yorum yapılmamış.

Fikrini Belirt

🤲 Günün Esması

el - KAYYUM

" Bütün mahlukatı var kılıp, varlığını devam ettiren. "

💡 Günün Sözü

“İnsanlara merhamet etmeyene Allah da merhamet etmez.”

Hz.Muhammed (sav)

👋 Ben Kimim?

Geleceğimiz gençlerimize Bilim ve Teknolojiyi Üretmeleri için yol göstermeliyiz. Bu minvalde vakit buldukça ücretsiz ders ve videolar hazırlayıp yayınlamaya çalışmaktayım....

✉️ İletişime Geç

📈 Ziyaretçi Sayacı

Şu An Online
4
👥 Toplam Ziyaret
2.854.793

İstatistikler anlık güncellenir.