Bir cümlelik özet
Blink, Arduino kartının üzerindeki yerleşik LED’i belirli aralıklarla yakıp söndüren ilk programdır ve pinMode, digitalWrite, delay komutlarını öğretir.
Neden önemli?
Yeni bir enstrümana başlarken önce tek bir notayı çalarsın. Kodlamada da benzer bir başlangıç vardır: Blink. Amaç karmaşık bir robot yapmak değil, kartın kodunu gerçekten çalıştırdığından emin olmaktır.
Blink küçük görünür ama üç büyük şeyi bir arada gösterir:
- Yazdığın kodun karta yüklendiğini,
- Kartın bir pini kontrol edebildiğini,
- Zamanı yönetebildiğini.
Bir önceki derste Arduino IDE’yi kurdun ve tanıdın. Şimdi o ortamda gerçek bir çıktı üreteceğiz. Bir LED yanıp sönmeye başladığında “kod ile donanım artık konuşuyor” demektir. Bundan sonraki her ders, bu ilk köprünün üzerine kurulur.
Blink’in yapısı: setup ve loop
Her Arduino programı iki temel bölümden oluşur. Bu iki bölüm Blink’te de vardır.
void setup()
setup bloğu, kart açıldığında bir kez çalışır. Burada başlangıç ayarlarını yaparız. Örneğin bir pini giriş mi yoksa çıkış mı olacağını burada belirleriz.
Bir sınav öncesi masanı hazırlamaya benzer: kalemini, silgini, suyunu bir kez yerleştirirsin. Sonra sınav boyunca tekrar tekrar hazırlık yapmazsın.
void loop()
loop bloğu, setup bittikten sonra sonsuza kadar tekrar çalışır. Sonu gelince yeniden baştan başlar. Blink’in yakıp söndürme işi burada olur.
Bir salıncağa benzer: itersin, geri gelir, tekrar itersin. Kart kapanana kadar bu döngü durmaz.
Yerleşik LED ve pin 13
Çoğu Arduino Uno kartında, pin 13’e bağlı küçük bir LED lehimlidir. Üzerinde genelde L yazar. Bu LED sayesinde harici hiçbir parça bağlamadan ilk kodumuzu test edebiliriz. Kod içinde bu pini yazmak yerine hazır isim olan LED_BUILTIN da kullanılabilir.
Tam Blink sketch’i
Aşağıdaki kod, yerleşik LED’i bir saniye yakıp bir saniye söndürür.
// Yerleşik LED'i yakıp söndüren Blink programı
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // pin 13 cikis olsun
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // LED'i yak
delay(1000); // 1000 ms = 1 saniye bekle
digitalWrite(LED_BUILTIN, LOW); // LED'i sondur
delay(1000); // 1 saniye daha bekle
}
Satır satır ne oluyor?
pinMode(LED_BUILTIN, OUTPUT);→ Pin 13’ü çıkış olarak ayarlar. Çıkış demek, bu pinden dışarıya elektrik verebileceğimiz demektir.digitalWrite(LED_BUILTIN, HIGH);→ Pine gerilim uygular (yaklaşık 5 volt). LED yanar.HIGH“aç” anlamına gelir.delay(1000);→ Programı 1000 milisaniye, yani 1 saniye bekletir. Bu sırada LED yanık kalır.digitalWrite(LED_BUILTIN, LOW);→ Pindeki gerilimi keser (0 volt). LED söner.LOW“kapat” demektir.- Son
delay(1000);→ LED sönük dururken 1 saniye bekler.
loop bloğu bitince otomatik olarak baştan başladığı için LED sürekli yanıp söner.
Süreyi değiştirmek
delay içindeki sayı milisaniye cinsindendir. 1 saniye = 1000 milisaniye. Bu sayıyı değiştirerek hızı ayarlayabilirsin.
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(200); // cok kisa yanik
digitalWrite(LED_BUILTIN, LOW);
delay(200); // cok kisa sonuk
}
200 yazarsan LED saniyede birkaç kez yanıp söner, yani daha hızlı yanıp söner. 2000 yazarsan yavaşlar.
Harici LED bağlama (varyasyon)
Yerleşik LED çalıştıktan sonra dışarıya kendi LED’ini bağlayabilirsin. Bir LED’i doğrudan Arduino’ya bağlamak yerine mutlaka bir direnç kullanmalıyız. Direnç, akımı sınırlar ve LED’in yanmasını (bozulmasını) önler.
Gerekli parçalar
- 1 adet LED
- 1 adet 220 Ω veya 330 Ω direnç (akım sınırlayıcı)
- Breadboard ve birkaç jumper kablo
Bağlantı
- LED’in uzun bacağı (artı, anot) → direnç üzerinden pin 8’e.
- LED’in kısa bacağı (eksi, katot) → Arduino’nun
GND(toprak) pinine. - Direnci LED ile pin arasına koy; hangi bacağa koyduğun fark etmez, önemli olan devrede bulunmasıdır.
Kod
Kodun mantığı yerleşik LED ile birebir aynıdır; sadece pin numarası değişir.
int ledPin = 8; // harici LED pin 8'de
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
}
LED yanmazsa önce uzun/kısa bacak yönünü kontrol et. LED yalnızca tek yönde çalışır.
Mini uygulama
Kendi “kalp atışı” desenini yaz. LED önce iki kez hızlı yanıp sönsün, sonra uzun bir süre beklesin. Şu adımları dene:
- Blink kodunu aç.
loopiçine iki hızlı yanıp sönme ekle (delay(150)kullan).- Sonuna uzun bir
delay(800)koy. - Karta yükle ve deseni izle.
İpucu şablonu:
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(150);
digitalWrite(LED_BUILTIN, LOW);
delay(150);
digitalWrite(LED_BUILTIN, HIGH);
delay(150);
digitalWrite(LED_BUILTIN, LOW);
delay(800); // uzun bekleme
}
Deseni beğenene kadar sayıları değiştir. Doğru tek bir cevap yok; amaç digitalWrite ve delay ile ritim kurmayı denemek.
Uygulama laboratuvarı: İlk Kod: Blink
İlk Kod: Blink konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada Blink’in yapısı: setup ve loop ile void loop() arasındaki ilişkiyi kullanarak bağlantı şeması, derlenebilen Arduino kodu, seri monitör kaydı ve test sonucu hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.
Görev senaryosu
Şu senaryoyu ele al: potansiyometreyle servo açısını sınırlar içinde değiştiren düzenek. Dersin ana hedefi “pinMode, digitalWrite ve delay ile bir LED'i yakıp söndüren ilk sketch'i yaz” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.
- Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
- En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
- Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
- Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
- Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.
Başarı ölçütleri
- Kartın 5 V veya 3,3 V çalışma sınırı doğru mu?
- Pin numaraları kod ve devrede eşleşiyor mu?
- Seri monitör ölçümü beklenen aralıkta mı?
- Motor veya servo karttan doğrudan aşırı akım çekiyor mu?
- Güç kesildiğinde sistem güvenli duruma dönüyor mu?
“İlk Kod: Blink” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın potansiyometreyle servo açısını sınırlar içinde değiştiren düzenek senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Blink’in yapısı: setup ve loop ve void loop() ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
pinMode’u unutmak
setup içinde pinMode(..., OUTPUT) yazmazsan pin çıkış olarak ayarlanmaz ve LED beklendiği gibi çalışmayabilir. Her çıkış pini önce ayarlanmalıdır.
Noktalı virgülü unutmak
Arduino’da her komut satırı ; ile biter. delay(1000) yazıp noktalı virgül koymazsan kod derlenmez ve hata verir.
delay’i hiç kullanmamak
delay olmadan LED o kadar hızlı yanıp söner ki gözle sürekli yanıyormuş gibi görünür. Yanıp sönmeyi görmek için mutlaka bekleme koymalısın.
Harici LED’i dirençsiz bağlamak
Direnç olmadan LED’den çok fazla akım geçer. LED zarar görebilir veya pin zorlanabilir. Harici LED’de her zaman akım sınırlayıcı direnç kullan.
LED’i ters bağlamak
LED’in yönü vardır. Uzun bacak artıya, kısa bacak toprağa (GND) gitmelidir. Ters bağlarsan LED hiç yanmaz.
Güvenlik notu
- Arduino’yu yalnızca USB kablosu veya düşük gerilimli pil paketiyle çalıştır. Asla şebeke (priz) elektriğiyle deney yapma.
- Harici LED bağlarken her zaman akım sınırlayıcı direnç (220–330 Ω) kullan. Dirençsiz bağlantı LED’e ve pine zarar verebilir.
- Bacakları ve kabloları çıplak elle birbirine değdirip kısa devre yapmaktan kaçın. Bağlantıları değiştirmeden önce USB’yi çıkar.
- Bu ders sadece LED içindir. Motor, pompa gibi parçalar bu derste yer almaz; onlar ayrı bir güç kaynağı ve sürücü devresi gerektirir.
- İlk denemende bağlantılardan emin değilsen bir yetişkinden yardım iste. Bağlantıyı birlikte kontrol etmek en güvenli yoldur.
Ders özeti
- Her Arduino programı bir kez çalışan
setupve sürekli tekrar edenloopbölümünden oluşur. pinMode(pin, OUTPUT)bir pini çıkış olarak ayarlar; çıkış pininden elektrik verebiliriz.digitalWrite(pin, HIGH)LED’i yakar,digitalWrite(pin, LOW)söndürür.delay(ms)programı milisaniye cinsinden bekletir; 1000 ms = 1 saniye.- Harici LED bağlarken akım sınırlayıcı direnç kullanmak ve doğru bacak yönünü seçmek gerekir.
Kontrol soruları
setupbloğu kaç kez çalışır,loopbloğu kaç kez çalışır?pinMode(LED_BUILTIN, OUTPUT);satırının görevi nedir?digitalWrite(LED_BUILTIN, HIGH)ileLOWarasındaki fark nedir?delay(2000)yazarsan LED’in yanıp sönme hızı nasıl değişir?- Harici bir LED bağlarken neden direnç kullanırız?
Cevaplar
setupkart açıldığında yalnızca bir kez,loopisesetupbittikten sonra sonsuza kadar tekrar çalışır.- Belirtilen pini çıkış olarak ayarlar; böylece o pinden dışarıya gerilim verip LED’i sürebiliriz.
HIGHpine gerilim uygular ve LED’i yakar;LOWgerilimi keser ve LED’i söndürür.delay(2000)iki saniye beklettiği için LED daha yavaş yanıp söner (her durumda 2 saniye).- Direnç akımı sınırlar; onsuz LED’den çok akım geçer ve LED ya da pin zarar görebilir.
Kaynak ve doğrulama notu
“İlk Kod: Blink” dersi için doğrulama odağı Blink’in yapısı: setup ve loop ile void loop() arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Arduino uyumlu kartlarda pin, gerilim ve akım sınırları modele göre değişebilir. Kod derlense bile devre güvenli olmayabileceğinden, motor ve servo gibi yükler uygun sürücü ve harici besleme ile kullanılmalıdır.
Sonraki ders
Dijital Giriş ve Çıkış: Bir butonla LED’i kontrol ederek digitalRead ile karttan bilgi okumayı öğreneceğiz.