Arduino öğrenmeye başlarken yapılabilecek en temel projelerden biri buton ile LED kontrolü uygulamasıdır. Bu projede Arduino Uno, bir buton ve bir LED kullanarak butona basıldığında LED’in yanmasını, buton bırakıldığında ise LED’in sönmesini sağlayacağız.
Bu uygulama sayesinde dijital giriş okuma, dijital çıkış kontrolü, buton bağlantısı ve INPUT_PULLUP kullanımını pratik şekilde öğrenebilirsiniz.
Projenin Çalışma Mantığı
Bu projede Arduino, butonun durumunu sürekli olarak kontrol eder. Butona basıldığında Arduino’nun dijital giriş pini bu durumu algılar ve LED’i yakar. Buton bırakıldığında ise LED söner.
Basitçe ifade etmek gerekirse:
- Butona basılırsa LED yanar.
- Buton bırakılırsa LED söner.
Gerekli Malzemeler
Arduino ile buton kontrollü LED projesi için aşağıdaki malzemelere ihtiyacınız vardır:
| Gerekli Malzeme | Ürün Linki |
|---|---|
| Arduino Uno | Arduino Uno R3 Klon + USB Kablo |
| LED | 5mm Kırmızı LED |
| Direnç | 1/4W 1K Direnç Paketi |
| Buton | Buton |
| Breadboard | Orta Boy Breadboard |
| Jumper Kablo | Jumper Kablo |
Devre Bağlantısı Nasıl Yapılır?
Bu projede LED, Arduino’nun D9 pinine bağlanacaktır. Buton ise Arduino’nun D2 pinine bağlanacaktır.
LED bağlantısında direnç kullanmak önemlidir. Direnç, LED üzerinden geçen akımı sınırlar ve LED’in zarar görmesini önler.
LED Bağlantısı
| LED Bacağı | Arduino Bağlantısı |
|---|---|
| LED uzun bacak | Direnç üzerinden D9 |
| LED kısa bacak | GND |
Buton Bağlantısı
| Buton Bacağı | Arduino Bağlantısı |
|---|---|
| Butonun bir bacağı | D2 |
| Butonun diğer bacağı | GND |
Arduino Buton ile LED Kontrol Kodu
Aşağıdaki kodda butona basıldığında LED yanar, buton bırakıldığında LED söner.
// LED'in bağlı olduğu pin
const int ledPin = 9;
// Butonun bağlı olduğu pin
const int buttonPin = 2;
void setup() {
// LED pini çıkış olarak ayarlanır
pinMode(ledPin, OUTPUT);
// Buton pini dahili pull-up direnci ile giriş olarak ayarlanır
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
// Butonun durumu okunur
int buttonState = digitalRead(buttonPin);
// INPUT_PULLUP kullanıldığı için butona basıldığında LOW okunur
if (buttonState == LOW) {
digitalWrite(ledPin, HIGH); // LED'i yak
}
else {
digitalWrite(ledPin, LOW); // LED'i söndür
}
}
Kod Nasıl Çalışır?
Kodun çalışma mantığını daha iyi anlamak için temel satırları inceleyelim.
Pin Tanımları
const int ledPin = 9;
const int buttonPin = 2;
Bu satırlarda LED’in bağlı olduğu pin D9, butonun bağlı olduğu pin ise D2 olarak tanımlanır.
setup() Bölümü
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT); satırı LED pinini çıkış olarak ayarlar. Çünkü Arduino bu pin üzerinden LED’e sinyal gönderecektir.
pinMode(buttonPin, INPUT_PULLUP); satırı ise buton pinini giriş olarak ayarlar ve Arduino’nun dahili pull-up direncini aktif eder. Böylece buton için ekstra direnç kullanmaya gerek kalmaz.
Buton Durumunu Okuma
int buttonState = digitalRead(buttonPin);
digitalRead() fonksiyonu ile D2 pinindeki buton durumu okunur. Butonun basılı olup olmadığı bu değer üzerinden kontrol edilir.
Butona Basıldığında LED’i Yakma
if (buttonState == LOW) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
Proje Kodlarını GitHub’da İnceleyin
Bu projede kullanılan Arduino kodlarına, devre bağlantı notlarına, malzeme listesine ve proje dosyalarına GitHub üzerinden ulaşabilirsiniz. Repoda README, Arduino kod dosyası, malzeme listesi ve proje görselleri için klasör yapısı yer almaktadır.
- Arduino kodu: code/buton-led-kontrolu.ino
- Devre görselleri: images/devre-semasi.jpg
- Malzeme listesi: components.md
- Video çekim akışı: docs/video-akisi.md
INPUT_PULLUP kullanıldığı için butona basıldığında Arduino LOW değeri okur. Bu nedenle buttonState == LOW koşulu sağlandığında LED yakılır.
Buton bırakıldığında pin tekrar HIGH olur ve LED söner.
INPUT_PULLUP Nedir?
INPUT_PULLUP, Arduino’nun dahili pull-up direncini aktif eden bir pin modudur. Bu özellik sayesinde buton bağlantısında harici direnç kullanmaya gerek kalmadan kararlı bir giriş okuması yapılabilir.
INPUT_PULLUP kullanımında butonun çalışma mantığı ters görünür:
| Buton Durumu | Arduino Okuması | LED Durumu |
|---|---|---|
| Buton bırakılmış | HIGH | LED sönük |
| Butona basılmış | LOW | LED yanık |
LED Yanmıyorsa Ne Kontrol Edilmeli?
Kod yüklendiği halde LED yanmıyorsa aşağıdaki kontrolleri yapabilirsiniz:
- LED’in yönünü kontrol edin. Uzun bacak artı, kısa bacak eksi uçtur.
- LED’in uzun bacağının direnç üzerinden D9 pinine bağlı olduğundan emin olun.
- LED’in kısa bacağının GND hattına bağlı olduğunu kontrol edin.
- Butonun bir bacağının D2’ye, diğer bacağının GND’ye bağlı olduğundan emin olun.
- Arduino IDE’de doğru kart ve doğru port seçili olmalıdır.
- USB kablonun veri aktarımı desteklediğini kontrol edin.
- Direncin ve jumper kabloların doğru sıraya takıldığından emin olun.
Sık Sorulan Sorular
Buton için direnç kullanmak gerekir mi?
Bu projede harici buton direnci kullanılmaz. Çünkü Arduino’nun dahili pull-up direnci INPUT_PULLUP komutu ile aktif edilir.
LED için direnç kullanmak gerekir mi?
Evet. LED’i doğrudan Arduino pinine bağlamak yerine araya direnç eklemek gerekir. Direnç, LED üzerinden geçen akımı sınırlandırır ve LED’in zarar görmesini önler.
LED’i farklı pine bağlayabilir miyim?
Evet. LED’i farklı bir dijital pine bağlayabilirsiniz. Ancak bağlantıyı değiştirdiğinizde kod içindeki ledPin değerini de değiştirmeniz gerekir.
Butona basınca LED yanmıyor, sebebi ne olabilir?
En yaygın sebepler yanlış buton bağlantısı, LED yönünün ters takılması, yanlış pin seçimi veya USB/kart bağlantı problemidir. Ayrıca Arduino IDE’de doğru kart ve port seçildiğinden emin olunmalıdır.
Sonuç
Arduino ile buton kullanarak LED kontrolü, Arduino öğrenmeye başlamak için en temel ve faydalı uygulamalardan biridir. Bu proje sayesinde dijital giriş okuma, dijital çıkış kontrolü, buton bağlantısı ve INPUT_PULLUP kullanımını öğrenebilirsiniz.
Bu uygulamadan sonra aynı mantıkla röle kontrolü, buzzer çalıştırma, motor açma-kapama veya farklı sensörlü projeler geliştirebilirsiniz.
Arduino Projeleri İçin Gerekli Ürünleri İnceleyin
Arduino Uno, LED, buton, direnç, breadboard ve jumper kablo gibi temel elektronik proje malzemeleriyle kendi Arduino projelerinize kolayca başlayabilirsiniz.
Robomer Ürünlerini İncele