İlk komutların
Kartı bağla, ışığı yak, ilk hatanı gör
Kartın üstündeki LED senin yazdığın hızda yanıp sönecek. Ve ilk derleme hatanı görüp ne dediğini anlayacaksın.
Ne gerekiyor
Sadece kart ve veri aktaran bir USB kablosu. Sensör yok, kablo yok.
Kartın yoksa wokwi.com adresinde tarayıcıdan aynı şeyi yapabilirsin. Kod yazıyorsun, yeşil oka basıyorsun, ekrandaki kart çalışıyor. Bu kursun tamamı orada da yapılabilir.
1. Programı kur
arduino.cc/en/software → Arduino IDE'yi indir ve kur. Yazdığın kodu derleyip karta yollayan program bu.
2. Kartı tanıt
USB kablosunu tak. Araçlar → Kart → Arduino UNO seç. Sonra Araçlar → Port — listede bir port görünmeli, onu seç.
Deneyap Kart kullanıyorsan: Dosya → Tercihler → Ek Kart Yöneticisi URL'leri kutusuna deneyapkart.org'daki adresi yapıştır, Araçlar → Kart → Kart Yöneticisi'nden Deneyap'ı yükle.
Önce şunu bil: her program iki bölümden oluşur
void setup() {
// burasi kart acilinca BIR KEZ calisir
}
void loop() {
// burasi setup bittikten sonra SONSUZA KADAR tekrar eder
}
Bir eve taşınmayı düşün. Taşındığın gün elektriği açtırıyorsun, mobilyayı yerleştiriyorsun — bir kez. Sonra her gün kalkıyorsun, yaşıyorsun, yatıyorsun — sürekli. setup taşınma günü, loop her gün.
Süslü parantezler { } bölümün nerede başlayıp bittiğini gösteriyor. Aralarına yazdığın her şey o bölüme ait.
// ile başlayan satırı kart okumaz. O senin notun — kendine ve bu kodu sonra okuyacak kişiye. Yukarıdaki iki satır sadece not, hiçbir iş yapmıyor.
Kod
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // kartin LED'i: elektrik VERECEK
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // elektrik ver, LED yansin
delay(1000); // 1000 milisaniye bekle
digitalWrite(LED_BUILTIN, LOW); // elektrigi kes, LED sonsun
delay(1000);
}
Bu kodu IDE'deki boş alana yapıştır. Üstteki ok simgesine (Yükle) bas.
Satırlara bak:
LED_BUILTIN — kartın üstündeki LED'in bağlı olduğu bacağın adı. UNO'da o bacak 13 numara; Deneyap Kart'ta başka bir numara. Numara yerine adı yazıyorsun ki kod iki kartta da çalışsın. Büyük harfle yazılıyor, olduğu gibi kopyala.
pinMode(LED_BUILTIN, OUTPUT) — o bacağa "sen elektrik vereceksin" diyorsun. Bunu bir kez söylemek yeterli, o yüzden setup'ta.
digitalWrite(LED_BUILTIN, HIGH) — bacağa elektrik ver. LOW kes.
delay(1000) — bin milisaniye, yani bir saniye bekle. Bu satırda kart hiçbir şey yapmadan duruyor.
Ve her satırın sonundaki noktalı virgül. Cümle sonundaki nokta gibi: kart oradan "talimat bitti" anlıyor.
Çalıştı mı?
Kartın üstündeki küçük LED bir saniye yanıp bir saniye sönüyorsa çalıştı.
IDE'nin altındaki siyah alanda "Yükleme tamamlandı" ya da "Done uploading" yazmalı.
Şimdi hata yap
Bunu bilerek yapıyorsun. delay(1000); satırlarından birinin sonundaki noktalı virgülü sil. Yükle'ye bas.
Alttaki siyah alan kırmızıya döner ve şuna benzer bir şey yazar:
error: expected ';' before '}' token
Kart kızmadı. Sadece cümlenin nerede bittiğini anlamadı. Derleyici çeviri yapamadı ve durdu — karta hiçbir şey gitmedi. LED hâlâ eski hızında yanıp sönüyor, çünkü içinde hâlâ eski kod var.
Noktalı virgülü geri koy. Bu hatayı bu kurs boyunca en az beş kez daha yapacaksın. Mesajı tanı: expected ';' gördüğünde bir satırın sonu eksik.
Şimdi sen yaz
Kod şu an bir saniye yanıp bir saniye sönüyor. Değiştir: çok hızlı yanıp sönsün. Göz kırpma gibi.
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
// ŞİMDİ SEN YAZ: buradaki bekleme suresini degistir
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
// ŞİMDİ SEN YAZ: burayi da
delay(1000);
}
🔍 İpucu 1
delay içindeki sayı milisaniye. 1000 bir saniye. Daha küçük bir sayı daha kısa bekleme demek.
🔍 İpucu 2
İki delay satırı da değişmeli. Sadece birini değiştirirsen LED uzun yanıp kısa söner — o da bir sonuç, dene.
✅ Cevap
delay(100);
İkisini de 100 yaparsan saniyede beş kez yanıp söner. 50 yaparsan on kez — o hızda göz artık yanıp sönmeyi seçemez, sürekli yanıyor gibi görür.
Sayıyı sen seçiyorsun; doğru cevap yok. Ama bir şeyi fark et: kodun tek bir sayısını değiştirdin ve davranış tamamen değişti. Kitlerde ayarlayacağın şeylerin çoğu böyle sayılar olacak.
📄 Görevin tam kodu
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(100);
digitalWrite(LED_BUILTIN, LOW);
delay(100);
}
Olmadıysa
| Ne görüyorsun | Ne yap |
|---|---|
| Port listesi boş | Önce kabloyu değiştir — şarj kablosu iş görmez. Yine boşsa "CH340 driver" aratıp kur, bilgisayarı yeniden başlat |
| "Port busy" ya da "port meşgul" | Başka bir program portu tutuyor. Serial Monitor açıksa kapat, IDE'yi yeniden aç |
| Yükleme %100'de takılıyor | Yanlış kart seçili. Araçlar → Kart'a bak |
Kırmızı yazı, expected ';' |
Bir satırın sonunda noktalı virgül eksik. Mesajdaki satır numarasına git |
Kırmızı yazı, expected '}' |
Bir süslü parantez kapanmamış. Her { için bir } olmalı |
| LED hiç yanmıyor ama yükleme tamam | pinMode satırını sildin mi? Ya da HIGH yerine high yazdın — büyük harf önemli |
Kendini test et
Soru: digitalWrite(LED_BUILTIN, HIGH); satırını setup içine, loop'u boş bırakarak yazsan ne olur?
Cevabı gör
LED yanar ve öyle kalır. Sönmez.
setup bir kez çalışır: elektriği verir, biter. loop boş olduğu için sonra hiçbir şey olmaz. Kimse elektriği kesmiyor.
Bu yanlış değil — bazen tam olarak istediğin şey budur. Ama şunu gösteriyor: bir şeyin tekrar tekrar olmasını istiyorsan loop'a yazarsın. Yanıp sönme bir tekrar, o yüzden loop'ta.
Kitlerde bu kodun aynısını göreceksin — sadece bacağa LED yerine röle, buzzer ya da servo bağlı olacak ve bacağın numarasını sen seçeceksin. Sera kitinde pompayı açan satır digitalWrite.
Takıldın, hata tablosu da yetmedi mi?
WhatsApp'tan sor — hangi görevdesin, ekranda ne yazıyor, devrenin fotoğrafı.