Sistem konuşuyor, sen cevap veriyorsun
Serial Monitor'ü sahte sensöre çevir
Koda sayı göndermek ve onu geri okumak. Bu kursun tamamı bunun üstüne kurulacak.
Önce şunu bil: sensör sihirli bir şey değil
Kitlerde bir toprak nemi sensörü takacaksın. İçinde ne var, nasıl çalışıyor, önemli değil. Koda dokunduğu yerde yaptığı tek şey şu:
Bir sayı üretmek.
O kadar. analogRead(A0) dediğinde sana 612 gelir. Sensörün bütün marifeti budur.
Peki sensör olmadan bunu nasıl öğreneceksin? Sayıyı sen yazarak. Klavyeden 612 yaz, kod onu sensörden gelmiş gibi işlesin.
Bu bir hile değil, mühendislikte gerçek bir yöntem. Sistemi kurarken sensör henüz gelmemiş olabilir, ya da test etmek istediğin durumu sensörle üretemiyor olabilirsin. O zaman veriyi taklit edersin. Buna benzetim denir.
Üstelik bir avantajı var: gerçek sensörle "peki 1023 gelirse ne olur" diye soramazsın, toprağı çöle çeviremezsin. Klavyeyle sorabilirsin.
Değişken — hatırlatma
int deger = 612;
Kutu, etiket, içindeki. Kodun dili Görev 2 ve Görev 3'te ayrıntısıyla var; burada sadece kullanıyoruz.
Bu kursta önemli olan tek tip ayrıntısı şu: sensörden gelen sayı tam sayı, o yüzden int. Sıcaklık ondalıklı, o yüzden float. Hangisini seçtiğin yer kaplar ve hız değiştirir — bedava bir şey yok.
Kod
void setup() {
Serial.begin(9600);
Serial.println("Bir sayi yaz ve Enter'a bas:");
}
void loop() {
if (Serial.available() > 0) {
int deger = Serial.parseInt();
while (Serial.available()) Serial.read(); // artan karakterleri temizle
Serial.print("Aldigim sayi: ");
Serial.println(deger);
}
}
Yükle, Serial Monitor'ü aç, üstteki kutuya 612 yaz ve Enter'a bas.
Üç satırı tanı:
Serial.available() — "gelen bir şey var mı?" diye sorar. Sen bir şey yazana kadar sıfır döner, bu yüzden if içindeki kod hiç çalışmaz. Yazdığın an içeri girer.
Serial.parseInt() — gelen karakterleri okuyup sayıya çevirir. "612" yazısını 612 sayısına.
while (Serial.available()) Serial.read(); — Enter'a bastığında görünmez bir satır sonu karakteri de gider. Onu temizlemezsen bir sonraki okumaya karışır. Bu satır artıkları süpürüyor.
Çalıştı mı?
Bir sayi yaz ve Enter'a bas:
Aldigim sayi: 612
Aldigim sayi: 480
Her yazdığın sayı geri gelmeli.
Şimdi sen yaz
Kod şu an sayıyı alıp geri yazıyor, başka bir şey yapmıyor. Ona bir iş ver: aldığı sayının iki katını da yazsın.
🔍 İpucu 1
Yeni bir değişkene ihtiyacın var. int ile tanımla, içine deger * 2 koy.
Çarpma işareti *.
✅ Cevap
int iki_kati = deger * 2;
Serial.print("Iki kati: ");
Serial.println(iki_kati);
Değişkene ihtiyacın var mıydı? Hayır — Serial.println(deger * 2); de yazabilirdin, aynı sonucu verirdi.
Ama bir hesabı bir kereden fazla kullanacaksan ona isim vermek işini kolaylaştırır. Ve isim verirken ne olduğunu yaz, nasıl hesaplandığını değil. iki_kati iyi bir isim; x değil.
📄 Görevin tam kodu
void setup() {
Serial.begin(9600);
Serial.println("Bir sayi yaz ve Enter'a bas:");
}
void loop() {
if (Serial.available() > 0) {
int deger = Serial.parseInt();
while (Serial.available()) Serial.read();
int iki_kati = deger * 2;
Serial.print("Aldigim sayi: ");
Serial.println(deger);
Serial.print("Iki kati: ");
Serial.println(iki_kati);
}
}
Olmadıysa
| Ne görüyorsun | Ne yap |
|---|---|
| Ekranda anlamsız karakterler | Serial Monitor'ün hızı 9600 değil, sağ alttan düzelt |
| Yazdığım sayı hep 0 çıkıyor | Sayı yazmadan Enter'a basmışsın olabilir; tekrar dene |
| Hiçbir şey olmuyor | Üstteki yazı kutusuna yazıp Enter'a bastın mı? |
| Her sayıdan sonra fazladan bir 0 satırı | while (Serial.available()) Serial.read(); satırını yazmamışsın |
Kendini test et
Soru: Bu kod loop içinde saniyede binlerce kez dönüyor. Peki neden ekran sürekli yazıyla dolmuyor?
Cevabı gör
Çünkü if (Serial.available() > 0) satırı bekçilik yapıyor.
loop gerçekten binlerce kez dönüyor. Ama her seferinde ilk satırda "gelen bir şey var mı?" diye soruyor ve cevap neredeyse hep "hayır" oluyor. O zaman if'in içine hiç girmeden dönüp başa gidiyor.
Bu kalıbı aklında tut: loop sürekli döner, ama içindeki işler bir şart sağlandığında yapılır. Kitlerdeki bütün sistemler böyle çalışıyor — sulama sistemi saniyede bin kez toprağa bakar ama yılda sadece birkaç yüz kez sular.
Takıldın, hata tablosu da yetmedi mi?
WhatsApp'tan sor — hangi görevdesin, ekranda ne yazıyor, devrenin fotoğrafı.