Kodu Anla: Hazır Arduino Kodunu Adım Adım Çözmek ve Değiştirmek
Kodu anla ile hazır Arduino kodunu adım adım çöz: özet, adımlar, Takıldıysan, Kendin dene görevleri, 15 dakikalık rutin ve gerçek bir buton projesi örneği.
Kodu anla, BlueGrays'te her proje sayfasında Kaynak Kodu bölümünde duran ve hazır Arduino kodunu adım adım açıklayan sekmedir. Kopyalayıp yüklediğin kodun ne yaptığını çözmek için sıra şöyle: önce Bu kod ne yapıyor? özetini oku, sonra Adım adım bölümündeki her kod parçasını açıklamasıyla birlikte tam kodda bul, devre beklediğin gibi çalışmazsa Takıldıysan bölümüne bak, en sonda da Kendin dene göreviyle kodda tek bir şeyi değiştirip sonucu kartta gör. Bu dört bölüm, "çalışıyor ama neden çalıştığını bilmiyorum" noktasından "bu satırı değiştirirsem ne olacağını biliyorum" noktasına geçmenin en kısa yolu.
Bu yazıda Kodu anla sekmesini baştan sona, gerçek bir projenin gerçek içeriği üzerinden anlatıyoruz: 10 numaralı Buton İle Led Yakma (On Off). Proje ücretsiz, Başlangıç seviyesinde ve blok görünümü de var; yani hem kodu hem blokları açıklayan sürümünü herkes açabilir. Sekmenin bölümlerini, kodu açıklamayla eşleştirme yöntemini, 15 dakikalık bir çalışma rutinini, Kendin dene görevlerini çözme stratejisini, hangi değişikliğin hangi kavramı öğrettiğini, Blokları anla görünümünü, Takıldıysan ile Sorun Giderme arasındaki farkı ve öğretmenler için derste kullanım fikirlerini bulacaksın.
Kodu anla sekmesi nerede, kimlere açık?
Bir projeyi açıp Kaynak Kodu bölümüne geldiğinde üstte iki sekmeli bir seçici görürsün: Kod ve Kodu anla. Kod sekmesi programın tamamını gösterir; Kopyala ve Linki Kopyala düğmeleri buradadır. Kodu anla'ya geçtiğinde aynı programın açıklamalı hâli açılır. 200+ projenin her birinde bu sekme var ve Arduino, ESP32 ve Raspberry Pi Pico projelerinde aynı düzende çalışır. Erişim kuralı basit: 60 ücretsiz projede (her platformda 20) Kodu anla herkese açık, ücretsiz bir hesapla da özeti, bütün adımları, Takıldıysan bölümünü ve Kendin dene görevini çözümüyle birlikte görürsün. Premium projelerde sekmenin yerinde "Kodun adım adım açıklaması Premium ile açılır." yazan bir kilit kartı durur. Yani bu yazıdaki yöntemi Led Yakma, Trafik Lambası, Polis Çakar ve buton projelerinde hiçbir ödeme yapmadan uygulayabilirsin.
Bölümler: hangisi ne işe yarar?
| Bölüm | Ne gösterir? | Nasıl kullanırsın? |
|---|---|---|
| Bu kod ne yapıyor? | 2–3 cümlelik özet: program ne yapar, hangi sırayla, neden sürekli tekrarlar | Okuduktan sonra ekrana bakmadan programı tek cümleyle anlat; anlatamıyorsan bir kez daha oku |
| Adım adım | Numaralı adımlar; her adımda başlık, kısa bir kod parçası ve açıklama (çoğu projede 5–6 adım) | Adımları sırayla oku, her adımın kod parçasını tam kodda bul |
| Kod parçası | Adımın anlattığı satırlar, programın geri kalanı olmadan | Parçadaki sayılara ve pin numaralarına bak; değiştirilebilecek yerler çoğunlukla bunlardır |
| Takıldıysan | O projede sık görülen belirtiler ve çözümleri (genelde 4–5 tane) | Devre beklediğin gibi çalışmazsa önce belirtini bu listede ara |
| Kendin dene | Kodda tek bir değişiklik isteyen kısa bir görev | Önce sonucu tahmin et, sonra değiştirip karta yükle |
| İpucu | Görevin hemen altında, nereye bakman gerektiğini söyleyen bir cümle | Tahminin tutmazsa oku; cevabı vermez, yönü gösterir |
| Çözümü göster | Dokununca açılan ÇÖZÜM kutusu: hangi satırın neye dönüşeceği ve sonucu | En son aç, kendi çözümünle karşılaştır; Çözümü gizle ile yeniden kapat |
Bölümlerin sırası bilinçli: önce büyük resim, sonra parçalar, sonra hatalar, en sonda senin denemen. Kod parçaları programın tamamı değil, yalnız o adımın anlattığı satırlardır; açılan bir süslü parantezin kapanışı bir sonraki adıma kalabilir. Bu yüzden tek bir adıma bakıp geçmek yerine hepsini sırayla okumak daha verimli. İpucu görev metninin hemen altında açık durur; çözüm ise sen Çözümü göster'e dokunana kadar gizlidir. Bu düzen, çözümü görmeden önce kendin düşünmene alan bırakır.
Örnek: Buton İle Led Yakma (On Off) projesinde Kodu anla
Projede bir push buton ve bir LED var. Butonun bir ucu 5V'a, karşı ucu kartın 13 numaralı pinine bağlı; aynı pin 10 kΩ'luk bir dirençle GND'ye çekiliyor. LED'in uzun bacağı 7 numaralı pine, kısa bacağı 330 Ω'luk direnç üzerinden GND'ye gidiyor. Kodu anla'nın özeti programı şöyle anlatıyor: butona her bastığında LED'in durumu bir kez tersine döner, sönükse yanar, yanıksa söner; butonu basılı tutsan bile LED yalnız bir kez değişir ve 50 ms'lik bir bekleme buton sıçramasını yok sayar. Programın tamamı aşağıda, yorumları iki dilli.
1int ledState = 0; // LED durumu: 0 sönük, 1 yanık / LED state: 0 = off, 1 = on
2int lastButton = 0; // Butonun önceki okuması / Previous button reading
3
4void setup() {
5 pinMode(13, INPUT); // Buton girişi, harici pull-down / Button input, external pull-down
6 pinMode(7, OUTPUT); // LED çıkışı / LED output
7}
8
9void loop() {
10 int button = digitalRead(13); // Butonu oku / Read the button
11 if (button != lastButton) { // Buton durumu değişti / Button state changed
12 if (button == 1) { // Yalnız basış anında (LOW -> HIGH) / Only at the press (LOW -> HIGH)
13 ledState = !ledState; // Durumu tersine çevir / Flip the state
14 digitalWrite(7, ledState); // Yeni durumu LED'e yaz / Write the new state to the LED
15 }
16 delay(50); // Sıçramayı atlamak için kısa bekleme / Short wait to skip the bounce
17 lastButton = button; // Bu okumayı sakla / Store this reading
18 }
19}| Adım | Kod parçası | Açıklamanın özü | Öğrettiği kavram |
|---|---|---|---|
| 1. LED'i ve butonu hatırlayan değişkenler | int ledState = 0; int lastButton = 0; | ledState LED'in şu anki durumunu, lastButton butonun bir önceki okumasını tutar; fonksiyonların dışında tanımlandıkları için her loop turunda kaybolmazlar | Genel değişken |
| 2. setup(): pinleri hazırlıyoruz | pinMode(13, INPUT); pinMode(7, OUTPUT); | D13 giriş, D7 çıkış; INPUT yeterli çünkü devrede 10 kΩ harici pull-down var, yoksa pin havada kalır | Giriş, çıkış, pull-down |
| 3. loop(): butonu oku, değişimi yakala | int button = digitalRead(13); if (button != lastButton) { if (button == 1) { | Okuma öncekiyle aynıysa hiçbir şey olmaz; değiştiyse ve şimdi 1 ise buton tam o anda basılmıştır | Kenar algılama (LOW'dan HIGH'a geçiş) |
| 4. Durumu tersine çevir, LED'e yaz | ledState = !ledState; digitalWrite(7, ledState); | ! işareti 0'ı 1, 1'i 0 yapar; yeni değer LED'e yazılır | Toggle (aç/kapa) |
| 5. 50 ms bekleme ve son okumayı saklama | delay(50); lastButton = button; | Mekanik buton birkaç milisaniye titreşir; 50 ms beklemek bunu yok sayar, sonra okuma bir sonraki tur için saklanır | Debounce (sıçrama önleme) |
Adımları okurken dikkat etmen gereken şey, açıklamanın sana yalnız ne olduğunu değil, olmasaydı ne olacağını da söylemesi. 1. adım, ledState'in 0 ile başladığını ve bu yüzden kart açıldığında LED'in sönük olduğunu hatırlatıyor. Buradan güzel bir soru çıkar: değeri 1 yaparsan LED açılışta yanar mı? Yanmaz, çünkü bu satır yalnız değişkeni değiştirir; setup() LED'e hiçbir şey yazmadığı için LED sönük başlar ve ilk basışta ledState 0'a döndüğünden yine sönük kalır. Değişkenin değeri ile pinin gerçek durumu ayrı şeylerdir. 2. adım ise butonda INPUT kullanılmasını devredeki 10 kΩ dirence bağlıyor: direnç, basılmadığında pini GND'ye çeker ve 0 okunur. Direnci çıkarırsan pin havada kalır ve rastgele değer okunur; Takıldıysan bölümündeki "LED kendi kendine yanıp sönüyor" belirtisi tam olarak buna karşılık gelir.
3. ve 5. adımlar birlikte okunmalı. 3. adımdaki karşılaştırma ancak lastButton her değişimden sonra güncellenirse çalışır; o güncelleme de 5. adımdaki lastButton = button satırında. İki adımı eşleştirdiğinde programın asıl fikri ortaya çıkar: kod butonun basılı olup olmadığına değil, durumunun değişip değişmediğine bakıyor. Basılı tutarken her turda 1 okunur ama lastButton da 1'dir, karşılaştırma yanlış çıkar ve LED değişmez. 4. adımdaki ! işareti ise iki satırlık bir aç/kapa anahtarıdır. 5. adım bir uyarıyla biter: bekleme çok kısa olursa LED bazen tek basışta birden fazla kez değişebilir. Bu da görevden önce yapabileceğin ilk deneyi söylüyor: 50'yi 5'e indir, birkaç kez basıp LED'in arada bir iki kez değişip değişmediğini gözle; sonuç butonun kalitesine göre değişir. Debounce konusunu ayrıntılı görmek istersen Arduino'ya buton nasıl bağlanır yazısına bakabilirsin.

Bu projenin Takıldıysan bölümünde beş belirti var: LED hiç yanmıyor; LED butona dokunmadan kendi kendine değişiyor; butona basınca hiçbir şey olmuyor; buton hep basılı gibi davranıyor; kod yüklenmiyor. Her belirtinin karşısında somut bir kontrol yazıyor. Örneğin "hep basılı" belirtisinde, buton bacakları yanlış yönde takılınca D13'ün sürekli 5V'a bağlı kaldığı ve butonu 90 derece çevirmen gerektiği anlatılıyor. Kendin dene görevi ise şu: LED butona bastığında değil, butonu bıraktığın anda değişsin. İpucu, basış anında button değişkeninin 1, bırakma anında 0 olduğunu hatırlatıyor. Çözüm tek karakterlik bir değişiklik: if (button == 1) satırı if (button == 0) olur. Bu küçük görev, 3. adımda okuduğun kenar algılama fikrini gerçekten anlayıp anlamadığını sınar.
Okuma yöntemi: özet, eşleştirme, deneme
- Özeti oku, tek cümleyle yaz: Bu kod ne yapıyor? kısmını oku, sonra telefona bakmadan programı bir cümleyle deftere yaz. Buton projesi için: "Her basışta LED bir kez açılır ya da kapanır."
- Kodu yukarıdan aşağı adımlarla eşleştir: Kodu Arduino IDE'de aç (Kaynak Kodu'ndaki Linki Kopyala bunu kolaylaştırır), her adımın kod parçasını tam kodda bul ve satırın yanına adım numarasını yorum olarak ekle. Adımlar kodun sırasını izler: genel değişkenler, setup(), loop().
- Eşleşmeyen satırları işaretle: Hiçbir adımda geçmeyen bir satır kaldıysa (çoğunlukla yalnız kapanış parantezleri kalır) neden açıklanmadığını düşün; parantez değilse o satırı açıklamalarda yeniden ara.
- Devrede dene: Kodu yükle ve özetteki davranışı tek tek test et. Buton projesinde üç test yeter: tek basış, basılı tutma, hızlı art arda basış. Her testten önce ne olacağını yüksek sesle söyle.
Eşleştirme adımı en çok atlanan ama en çok kazandıran adım. Satırların yanına adım numarası yazdığında kodun iskeleti görünür hâle gelir: hangi satır bir kez, hangisi sürekli çalışıyor, hangi değişken nerede okunup nerede yazılıyor. Buton projesinde lastButton iki yerde geçer; 1. adımda tanımlanır, 5. adımda güncellenir. Bunu kendi gözünle görmek, "değişken bir kutudur" cümlesini okumaktan çok daha kalıcıdır. Değişken, döngü ve fonksiyon kavramlarını ayrıca çalışmak istersen Arduino programlama temelleri yazısına bakabilirsin.
15 dakikalık Kodu anla çalışma rutini
| Dakika | Ne yaparsın? | Nerede? |
|---|---|---|
| 0–2 | Bu kod ne yapıyor? özetini oku, programı tek cümleyle deftere yaz | Telefon, Kodu anla |
| 2–6 | Adım adım'daki her kod parçasını tam kodda bul, satırlara adım numarasını yorum olarak yaz | Telefon + Arduino IDE |
| 6–8 | Kodu yükle, özetteki davranışı tek tek test et | Bilgisayar + devre |
| 8–9 | Kendin dene görevini oku, sonucu tahmin edip deftere yaz | Telefon + defter |
| 9–12 | Tek değişikliği yap, yükle, sonucu gözle | Arduino IDE + devre |
| 12–13 | Tahmin tutmadıysa İpucu'nu oku ve bir kez daha dene | Telefon |
| 13–15 | Çözümü göster ile karşılaştır, ardından kendi seçtiğin ikinci bir değişikliği dene | Telefon + Arduino IDE |
Bu rutin, devresi kurulmuş bir proje için. Devreyi ilk kez kuruyorsan ona ayrıca 10–15 dakika ayır ya da Kodu anla rutinini ertesi güne bırak. Rutinin son iki dakikası en değerli kısım: çözümü gördükten sonra kendi küçük değişikliğini yapmak, ezberlediğin cevabı değil anladığın fikri sınar. Buton projesinde örneğin LED'i başka bir pine taşımayı ya da 50 ms'lik beklemeyi 300 ms yapıp hızlı basışlara ne olduğunu gözlemeyi seçebilirsin. Günde bir proje bu tempoyla, bir haftada beş ücretsiz projeyi gerçekten anlayarak bitirmek demek. Daha uzun bir plan istersen 30 günlük Arduino yol haritası yazısına bak.
Kendin dene görevlerini çözme stratejisi
Kendin dene görevleri kısa ama bilinçli seçilmiş: hepsi tek bir değişiklik ister ve sonucu gözle görülür ya da kulakla duyulur. Onları çözerken şu sırayı bozmamak öğrenmeyi ikiye katlar:
- Tahmin et: Görevi oku; kodun hangi satırına dokunacağını ve değişince ne göreceğini önce kendin söyle. Tahmini yazmak, sonradan "zaten öyle düşünmüştüm" yanılgısını engeller.
- Değiştir: Yalnız bir şeyi değiştir. Aynı anda iki satırı değiştirirsen hangi değişikliğin neye yol açtığını ayıramazsın.
- Yükle: Kodu karta yükle ve yüklemenin bittiğini gösteren mesajı bekle. Derleme hatası alırsan değiştirdiğin satırdaki noktalı virgüle ve parantezlere bak.
- Gözle: Sonucu tahmininle karşılaştır. Süre görevlerinde saniye say, ses görevlerinde eski ve yeni sesi art arda dinle.
- İpucuna bak: Tahminin tutmadıysa ya da hangi satıra dokunacağını bulamadıysan ipucunu oku. İpucu görevin hemen altında açık durduğu için ilk okumada elinle kapatmak işe yarar.
- Çözümü en son aç: Çözümü göster'e ancak kendi denemeni yaptıktan sonra dokun. Çözüm seninkiyle aynıysa neden doğru olduğunu, farklıysa iki yolun neden farklı sonuç verdiğini düşün.
Bu sıranın bir faydası da hatayı öğretici hâle getirmesi. Diyelim ki Trafik Lambası projesinin görevinde yeşilden sonraki sarıyı 1,5 saniyeye çıkarmak isterken yanlışlıkla ilk delay(300) satırını değiştirdin. Beklediğin sonuç yerine kırmızıdan sonraki sarının uzadığını görürsün. Bu yanlış, kodda iki ayrı sarı faz olduğunu ve loop()'un satır sırasıyla çalıştığını sana çözümden çok daha iyi öğretir. Görevin çözümü de bunu söylüyor: loop()'un en sonundaki delay(300) satırı delay(1500) olur, kırmızıdan sonraki sarı 0,3 saniyede kalır.
Değişiklik türleri: hangisi hangi kavramı öğretir?
Ücretsiz projelerdeki görevlere bakınca hepsinin birkaç türden birine girdiğini görürsün. Türü tanımak, yeni bir projede kendi görevini kurmanı da kolaylaştırır. Tablodaki örnekler ücretsiz projelerin gerçek Kendin dene görevlerinden; pin değiştirme satırı ise aynı projede kendin yapabileceğin bir deneme.
| Değişiklik türü | Örnek | Öğrettiği kavram | Dikkat |
|---|---|---|---|
| Sayı değiştir | Led Yakma: iki delay satırını delay(1000) yap; Buzzer Kullanımı: frekansı 400 Hz'den 1000 Hz'e çıkar | Birimler (ms, Hz) ve bir değerin davranışı nasıl belirlediği | Süreler milisaniye: 1500 = 1,5 s. Frekans görevi pasif buzzer ister |
| Pin değiştir | Buton (On Off) projesinde LED'i D7'den D8'e taşı: kabloyu ve pinMode(7, OUTPUT) ile digitalWrite(7, ledState) satırlarını değiştir | Kod ile devre arasındaki bağ; bir pin numarasının kodda birden fazla yerde geçmesi | Kabloyu USB takılı değilken taşı; numarayı koddaki her yerde değiştir |
| Koşulu değiştir | Buton (On Off): button == 1 yerine button == 0; Ldr İle Gece Lambası: eşik 50'den 300'e | Karşılaştırma, eşik değeri, kenar algılama | Eşik değişince davranış yavaşça değil, belli bir noktada birden değişir |
| Davranışı tersine çevir | Buton İle Led Yakma (Push): LED normalde yansın, basınca sönsün | HIGH ve LOW mantığı, koşulun tersine dönmesi | Ya koşulu ya yazılan değerleri değiştir, ikisini birden değil |
| Döngü sınırı | Polis Çakar: kırmızı LED 3 yerine 5 kez çaksın, for (int i = 0; i < 5; i++) | for döngüsü, sayaç, tekrar sayısı | Yalnız ilk for satırını değiştir; mavi 3 kez çakmaya devam eder |
| İfadeye taban ekle | Hız Ayarlı Yürüyen Led: delay(potValue) yerine delay(potValue + 50) | Okunan bir değerin bir hesapta kullanılması, alt sınır | Bekleme 50 ile 1073 ms arasına çıkar; ışık en hızlı ayarda da izlenebilir |
Blokları anla: aynı açıklama bloklarla
Blok görünümü olan projelerde Kaynak Kodu bölümünde Bloklarla göster anahtarı bulunur. Anahtarı açtığında kod yerine aynı program uygulamanın dilinde bloklar olarak görünür ve yandaki sekmenin adı Kodu anla'dan Blokları anla'ya döner. Bu görünümde özet, Takıldıysan ve görev aynı kalır; değişen Adım adım bölümüdür: her adımda kod parçası yerine o adımın blokları görünür ve görsele dokununca tam ekran açılır. 100'ü aşkın projede blok görünümü var, ücretsiz projelerin de 30'dan fazlasında. Bloklar okumak içindir; uygulamada düzenlenmez ve karta yüklenmez, karta her zaman gerçek kod yüklenir.
Blokları anla'yı en iyi kullanma yolu iki görünüm arasında gidip gelmek. Buton projesinde 3. adımın blokları "button değişkenine 13 numaralı pini oku ata" bloğu ile iç içe iki "eğer" bloğundan oluşur; koddaki karşılığı int button = digitalRead(13); satırı ve iç içe iki if'tir. 4. adımdaki "ledState değişkenine ledState değil ata" bloğu ise ledState = !ledState; satırının ta kendisi. Önce bloğu okuyup ne yaptığını söyle, sonra anahtarı kapatıp aynı adımın kod parçasına bak. Blok ile kod arasındaki bu eşleştirme, blok kodlamadan metin tabanlı koda geçişin en sağlam yolu; konuya baştan girmek istersen blok kodlama nedir ve eğer bloğu yazılarına bakabilirsin.
Takıldıysan ile Sorun Giderme arasındaki fark
| Özellik | Takıldıysan | Sorun Giderme |
|---|---|---|
| Nerede? | Kodu anla sekmesinin içinde, Adım adım'dan sonra | Proje sayfasında ayrı bir bölüm |
| Biçim | Belirti ve çözüm çiftleri; buton projesinde 5 tane | "Projeniz çalışmıyorsa aşağıdaki adımları kontrol edin." ile başlayan sıralı kontrol listesi; buton projesinde 10 adım |
| Ne zaman? | Belirtiyi biliyorsun: "LED kendi kendine değişiyor" | Neyin bozuk olduğunu bilmiyorsun, baştan sona kontrol etmek istiyorsun |
| Odak | O projenin koduna ve devresine özgü tipik hatalar | Güç, kod yükleme, pin numaraları, bağlantılar, GND gibi genel kontroller |
| Erişim | Ücretsiz projelerde herkese açık, Premium projelerde Premium ile | 170'i aşkın projede var, Premium ile açılır |
Pratikte sıra şöyle: devre çalışmadığında önce belirtiyi tek cümleyle tarif et ve Takıldıysan'da ara. Belirtin listede varsa çözüm çoğunlukla tek bir kablo, direnç ya da satırdır. Listede yoksa ya da önerilen çözüm işe yaramadıysa Sorun Giderme'deki adımları sırayla geç; orada atladığın temel bir kontrolü (kartın beslemesi, doğru port, ortak GND) yakalama ihtimalin yüksek. Yükleme aşamasında takıldıysan Arduino kod yüklenmiyor, derleme hatasında derleme hataları yazısı da işini görür.
Öğretmen için: Kodu anla'yı derste kullanmak
- Projeksiyonla ortak okuma: Dersin başında telefon ekranını yansıt, Bu kod ne yapıyor? özetini birlikte oku ve sınıfa programı tek cümleyle özetlet. Ardından Bloklarla göster açıkken aynı adımları bloklarla göster; blokla başlayan öğrenciler için bu geçiş bir köprü olur.
- Adım başına bir grup: 5 adımlı bir projede sınıfı 5 gruba böl; her grup bir adımı okur, kod parçasını tam kodda bulur ve iki dakikada sınıfa anlatır. Grup anlatırken diğerleri "bu satır olmasaydı ne olurdu?" diye sorar.
- Tahmin kâğıdı: Kendin dene görevini tahtaya yaz; her grup değişikliği yapmadan önce tahminini bir kâğıda yazsın, sonra değiştirip yüklesin. Tahmin ile sonuç arasındaki farkı konuşmak, görevi yapmaktan daha çok şey öğretir.
- Çıkış sorusu: Dersin son iki dakikasında herkes bir soruyu yanıtlasın. Buton projesi için örnekler: lastButton olmasaydı butonu basılı tutunca ne olurdu? delay(50) silinirse ne değişir? 10 kΩ direnci çıkarırsan LED neden kendi kendine değişebilir?
Erişimi planlarken şunu bil: ücretsiz projelerde Kodu anla herkese açık olduğu için Led Yakma, Trafik Lambası, Polis Çakar ve iki buton projesiyle öğrencilerin hiçbir ödeme yapmadan bu yöntemi uygulayabilir. Premium projelerde Kodu anla Premium ile açılır; sınıfça Premium projelere geçmek istersen öğrencilere tek tek abonelik aldırmak yerine eğitmen paketlerindeki kodları dağıtabilirsin, ayrıntılar sınıf için Arduino uygulaması yazısında. Kendi tasarladığın bir devreyi paylaşmak istersen Forum'da Rehber konusu açabilirsin; orada Kodu anla adımları ve blok görünümü olmaz, açıklamayı konu metninde kendin yazar, kodu Kod ekle ile eklersin (kendi projenle ders vermek). Uygulamada öğrencinin hangi görevi çözdüğünü sana gösteren bir panel de yok; görevi derste, çalışan devreye bakarak ya da fotoğrafla kontrol edersin.
Sık hatalar ve kolay çözümleri
- Çözümü hemen açmak: Görevi okur okumaz Çözümü göster'e dokunursan cevabı öğrenirsin ama fikri öğrenmezsin. Kural: önce tahmin, sonra deneme, sonra ipucu, en son çözüm.
- Adımları okumadan kopyalamak: Kodu Kopyala ile alıp yüklemek işe yarar, ama Adım adım'ı okumadan bir sonraki projeye geçersen her projede sıfırdan başlarsın. Yükledikten sonra en azından özeti ve adımları oku.
- Kod parçasını programın tamamı sanmak: Kod parçaları yalnız o adımın satırlarıdır; parçayı tek başına IDE'ye yapıştırırsan derlenmez. Değişikliği her zaman tam kodda yap.
- Aynı anda birden fazla şey değiştirmek: İki satırı birden değiştirip beklenmedik bir sonuç görünce hangisinin sorumlu olduğunu bilemezsin. Her yüklemede tek değişiklik.
- Pin numarasını yalnız bir yerde değiştirmek: pinMode'u değiştirip digitalWrite'ı ya da kabloyu unutmak en sık görülen hatalardan. Değiştirmeden önce numaranın koddaki bütün geçtiği yerleri işaretle.
- Takıldıysan'ı atlayıp hemen forumda sormak: Sorunun cevabı çoğu zaman o projenin Takıldıysan listesinde zaten yazılı. Önce oraya, sonra Sorun Giderme'ye bak; yine çözülmezse forumda devrenin fotoğrafı ve kodunla sor.
- Görevi bitirip orada bırakmak: Çözümle karşılaştırdıktan sonra kendi küçük değişikliğini yapmazsan öğrendiğin şey o göreve bağlı kalır. Bir sayıyı, bir pini ya da bir koşulu kendin seç.
Kodu anla'yı birkaç projede bu sırayla kullandığında hazır kod kapalı bir kutu olmaktan çıkar: hangi satırın neyi belirlediğini, neyi değiştirince ne olacağını önceden söyleyebilirsin. Buton İle Led Yakma (On Off) bu alışkanlık için iyi bir başlangıç, çünkü kısa bir kodda genel değişkeni, kenar algılamayı, toggle'ı ve debounce'u bir arada gösteriyor. Denemek istersen BlueGrays uygulamasında bu projeyi açıp Kodu anla sekmesindeki görevle başlayabilirsin; 60 ücretsiz projenin hepsinde aynı bölümler var.
Sıkça sorulan sorular
Kodu anla nedir?
Kodu anla, BlueGrays'te proje sayfasındaki Kaynak Kodu bölümünde bulunan ve projenin kodunu adım adım açıklayan sekmedir. Bir özet, numaralı adımlar (her birinde kod parçası ve açıklama), Takıldıysan bölümü ve ipucu ile çözümü olan bir Kendin dene görevinden oluşur. Her projede vardır.
Kodu anla ücretsiz mi?
60 ücretsiz projede (her platformda 20) Kodu anla herkese açıktır; ücretsiz bir hesapla özet, adımlar, Takıldıysan ve görev çözümüyle birlikte görünür. Premium projelerde sekme Premium ile açılır.
Hazır Arduino kodunu adım adım nasıl anlarım?
Önce kodun ne yaptığını tek cümleyle özetle, sonra kodu yukarıdan aşağı parçalara ayırıp her parçanın görevini yaz: genel değişkenler, setup() ve loop(). Sayılara ve pin numaralarına dikkat et, ardından tek bir değeri değiştirip sonucu kartta gözle. Kodu anla bu sırayı her proje için hazır verir.
Kendin dene görevinin çözümünü nasıl görürüm?
Görevin altındaki Çözümü göster düğmesine dokun; ÇÖZÜM kutusu açılır ve hangi satırın neye dönüşeceğini yazar. Çözümü gizle ile yeniden kapatabilirsin. Önce kendi denemeni yapıp çözümü en son açmak daha çok şey öğretir.
Blokları anla nedir?
Blok görünümü olan projelerde Bloklarla göster anahtarını açınca Kodu anla sekmesinin adı Blokları anla olur. Adım adım bölümünde her adımın kod parçası yerine o adımın blokları görünür. 100'ü aşkın projede blok görünümü var.
Takıldıysan ile Sorun Giderme aynı şey mi?
Hayır. Takıldıysan, Kodu anla içinde o projeye özgü belirti ve çözüm çiftleridir; Sorun Giderme ise proje sayfasında ayrı duran, sıralı bir kontrol listesidir. Sorun Giderme 170'i aşkın projede vardır ve Premium ile açılır.
Bu yazıdan sonra yapabileceğin projeler
Tüm projeleri gör
Buton İle Led Yakma (On Off)
Bir butona bir kez basınca ışık yanar, bir daha basınca söner; tıpkı odandaki lamba düğmesi gibi. Arduino her basışı fark edip LED'in durumunu tersine çevirir, düğme içindeki minik titreşimler ışığı k

Buton İle Led Yakma (Push)
Kapı zili gibi: bastığın sürece ışık yanar, bırakınca söner. Arduino butonu sürekli dinler; butona basılıyken LED'i yakar, elini çektiğin an söndürür. Kartın dışarıdan gelen bir dokunuşu nasıl hissett

Trafik Lambası
Her gün yolda gördüğün trafik ışığının minik bir kopyası. Kırmızı iki saniye yanar, sarı kısa bir an parlar, yeşil iki saniye yanar, ardından yine sarı üzerinden kırmızıya dönülür ve döngü hiç durmaz.

Led Yakma
Elektroniğin ilk merhabası: tek bir LED'i yakıp söndürmek. Arduino LED'i çok kısa aralıklarla yakıp söndürür, ışık hızlı hızlı göz kırpar. Kartın bir ışığı nasıl yönettiğini en sade haliyle görür, son

Polis Çakar
Polis arabasının çakarı gibi: kırmızı LED üç kez hızlıca yanıp söner, ardından mavi LED üç kez çakar ve bu sıra hiç durmadan sürer. Arduino'ya iki LED ve iki direnç bağlaman yeter. Birkaç dakikada kur

Ldr İle Gece Lambası
Hava karardığında kendiliğinden yanan, sabah olunca sönen küçük bir gece lambası. Işık sensörü odadaki aydınlığı ölçer; Arduino ortam yeterince karanlıksa LED'i yakar, aydınlanınca söndürür. Sokak lam

Buzzer Kullanımı
Kapı zili ya da alarm sesi nasıl çıkar, hiç merak ettin mi? Arduino küçük bir buzzer'ı kısa aralıklarla öttürür: bip, sus, bip, sus. Sesin elektrikle nasıl üretildiğini görür, ileride melodi çalan pro

Hız Ayarlı Yürüyen Led
Altı LED sırayla yanıp söner ve ışık sanki bir uçtan öbür uca koşar. Potansiyometrenin düğmesini çevirdikçe bu koşunun hızı anında değişir: bir yöne çevirince ışık uçar, öbür yöne çevirince her LED bi
Diğer yazılar
BlueGrays uygulaması
Bu devreyi telefonunda adım adım kur
Devre şeması, kod ve parça listesi tek ekranda. 200'den fazla Arduino, ESP32 ve Pico projesi seni bekliyor.
Telefonunla tara
Kamerayı koda tut; telefonunun uygulama mağazası açılır.
ya da mağazada aç

