ESP8266 NodeMCU ile Buton Kontrollü LED Uygulaması
Bu rehberde, ESP8266 NodeMCU geliştirme kartı ile harici bir push buton kullanarak LED kontrolü yapmayı inceleyeceğiz. Dijital giriş (Digital Read) mantığını anlayarak, fiziksel bir buton basışına göre çıkıştaki LED'i yakıp söndüren temel bir kontrol devresi oluşturacağız.
Gerekli Malzemeler:
1 x ESP8266 NodeMCU V3 Geliştirme Kartı
1 x 5mm LED
1 x Push Buton (2 Pin / 4 Pin)
1 x 220 Ω Direnç (LED Koruma Direnci)
1 x 10 kΩ Direnç (Pull-Down Direnci)
Jumper Kablolar (Erkek - Erkek)
Devre Bağlantı Detayları
Şemaya uygun olarak yapılan bağlantı adımları şu şekildedir:
Butonun bir bacağı -> NodeMCU 3V3 (+3.3V) güç hattına.
Butonun diğer bacağı -> NodeMCU D5 (GPIO14) giriş pinine.
Pull-Down Direnci: D5 pini ile butonun birleştiği noktadan 10 kΩ direnç bağlanarak GND hattına çekilmiştir.
Pull-Down Direnci Neden Gereklidir?
Butona basılmadığı anlarda mikrodenetleyici pinleri havalı (floating) durumda kalır ve ortamdaki elektromanyetik gürültüden etkilenerek kararsız okumalar (rastgele HIGH/LOW) yapabilir. 10 kΩ Pull-Down direnci, buton serbestken D5 pinini kararlı bir şekilde 0V (LOW) seviyesinde tutar.
Örnek Arduino IDE Kodu
Butona basıldığında (HIGH okunduğunda) LED'i yakan, buton serbest bırakıldığında (LOW okunduğunda) LED'i söndüren örnek yazılım koda aşağıdan ulaşabilirsiniz:
// ESP8266 NodeMCU Buton ile LED Kontrolü
const int ledPin = D0; // LED'in bağlı olduğu pin (GPIO16)
const int butonPin = D5; // Butonun bağlı olduğu pin (GPIO14)
int butonDurumu = 0; // Buton durumunu saklayacak değişken
void setup() {
pinMode(ledPin, OUTPUT); // LED pini çıkış olarak ayarlandı
pinMode(butonPin, INPUT); // Buton pini giriş olarak ayarlandı
}
void loop() {
// D5 pinindeki dijital voltaj seviyesini okuyoruz (HIGH veya LOW)
butonDurumu = digitalRead(butonPin);
// Eğer butona basılmışsa (Pull-down nedeniyle 3.3V yani HIGH gelir)
if (butonDurumu == HIGH) {
digitalWrite(ledPin, HIGH); // LED'i yak
} else {
digitalWrite(ledPin, LOW); // Buton serbestse LED'i söndür
}
}
Çalışma Prensibi ve İpuçları
Sinyal Akışı: Butona basıldığında 3.3V hattı doğrudan D5 pinine iletilir ve `digitalRead(D5)` komutu `HIGH` (1) değerini döner. Buton bırakıldığında ise 10 kΩ direnç pindeki yükü toprağa tahliye eder ve okuma `LOW` (0) olur.
Yazılımsal Debounce (Sıçrama Önleme): Mekanik butonların içindeki metal kontaklar basılma anında mikrosaniyeler içinde defalarca sekebilir. Daha hassas projelerde buton arkını (ark/bounce) engellemek için kod içerisine `delay(50);` gibi kısa bekleme süreleri veya zamana dayalı debounce algoritmaları eklenebilir.