ESP8266 (NodeMCU) Buton ile Kısa / Uzun Basma LED Kontrolü

👤 Yazar: Admin 📅 Tarih: 21.09.2026 02:35 👁️ Görüntüleme: 5

ESP8266 (NodeMCU) Buton ile Kısa / Uzun Basma LED Kontrolü

Görseldeki bağlantı şemasına göre, butona basılma süresi ölçülerek kısa basmada Kırmızı LED, uzun basmada (1 saniyenin üzerinde) Yeşil LED yakılmaktadır.

ESP8266 Buton ve 2 LED Bağlantı Şeması


1. Donanım Pin Eşleşme Tablosu

Şemadaki bağlantılara göre ESP8266 (NodeMCU) pin haritası şu şekildedir[cite: 4]:

Bileşen NodeMCU Pin GPIO Karşılığı Açıklama
Yeşil LED D1 GPIO5 Anot pini seri direnç üzerinden D1'e bağlı (Uzun Basma)
Kırmızı LED D2 GPIO4 Anot pini seri direnç üzerinden D2'ye bağlı (Kısa Basma)
Push Buton D5 GPIO14 GND'ye bağlı 10kΩ Pull-Down dirençli (Active-HIGH)
Devre Yapısı Notu:
Şemadaki buton bağlantısı Pull-Down yapısındadır (3.3V butona girer, pin ise direnç üzerinden GND'ye bağlıdır)[cite: 4]. Butona basıldığında pinde HIGH (3.3V) okuması yapılır.

2. C++ Arduino Kodu (Non-blocking / millis() Zamanlamalı)

Aşağıdaki kod, millis() fonksiyonunu kullanarak butonun basılı kalma süresini hesaplar. Eşik değer 1000 ms (1 saniye) olarak belirlenmiştir:

C++ / ESP8266 Short & Long Press LED Control

#include <Arduino.h>

// Şemadaki Pin Tanımlamaları
const int GREEN_LED_PIN = D1; // GPIO5 (Uzun basma)
const int RED_LED_PIN   = D2; // GPIO4 (Kısa basma)
const int BUTTON_PIN    = D5; // GPIO14

// Zamanlama Değişkenleri
unsigned long buttonPressStart = 0;
bool buttonActive = false;
const unsigned long LONG_PRESS_TIME = 1000; // 1 Saniye (1000 ms)

void setup() {
  Serial.begin(115200);

  pinMode(GREEN_LED_PIN, OUTPUT);
  pinMode(RED_LED_PIN, OUTPUT);
  pinMode(BUTTON_PIN, INPUT); // Harici Pull-Down dirençli devre

  // Başlangıçta LED'leri kapat
  digitalWrite(GREEN_LED_PIN, LOW);
  digitalWrite(RED_LED_PIN, LOW);

  Serial.println("ESP8266 Buton Zamanlama Testi Başlatıldı.");
}

void loop() {
  int buttonState = digitalRead(BUTTON_PIN);

  // Butona basıldığı an (HIGH seviyesine geçiş)
  if (buttonState == HIGH && !buttonActive) {
    buttonActive = true;
    buttonPressStart = millis();
  }

  // Buton bırakıldığı an (LOW seviyesine geçiş)
  if (buttonState == LOW && buttonActive) {
    unsigned long pressDuration = millis() - buttonPressStart;
    buttonActive = false;

    // Ark (Debounce) engelleme: 50 ms'den kısa basışları yok say
    if (pressDuration > 50) {
      if (pressDuration >= LONG_PRESS_TIME) {
        // UZUN BASMA: Yeşil LED Yanar
        Serial.print("Uzun Basma Tespit Edildi: ");
        Serial.concat(pressDuration);
        Serial.println(" ms -> YESIL LED");

        digitalWrite(GREEN_LED_PIN, HIGH);
        digitalWrite(RED_LED_PIN, LOW);
      } else {
        // KISA BASMA: Kırmızı LED Yanar
        Serial.print("Kısa Basma Tespit Edildi: ");
        Serial.concat(pressDuration);
        Serial.println(" ms -> KIRMIZI LED");

        digitalWrite(RED_LED_PIN, HIGH);
        digitalWrite(GREEN_LED_PIN, LOW);
      }
    }
  }
}

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
↑ Sayfa Başı
📞 İletişim ✉ E-Posta Gönder 🟥 YouTube
© 2026 Yenidir.com
Yenidir CMS V0.1