ESP32 ile led kontrol

👤 Yazar: ozcan 📅 Tarih: 04.06.2026 15:01 👁️ Görüntüleme: 7

ESP32 ile LED Kontrolü (Dijital ve PWM)

ESP32 mikrodenetleyicisi ile LED kontrolü, temel IoT ve otomasyon projelerinin yapı taşıdır. Bu rehberde, GPIO pinlerini kullanarak temel açma/kapama (Dijital) ve parlaklık ayarı (PWM) işlemlerinin nasıl yapılacağını öğreneceksiniz.

1. Donanım Gereksinimleri ve Bağlantı Şeması

ESP32 pinleri 3.3V mantıksal gerilim seviyesinde çalışır. Pin başına çekilebilecek güvenli akım sınırı 12mA - 20mA arasındadır. LED'in yanmasını ve pinden aşırı akım çekilmesini önlemek için seri bir direnç kullanılmalıdır.

ESP32 LED Bağlantı Şeması

Görsel 1: ESP32 ve LED  Bağlantı Şeması

2. Dijital Kontrol: LED Yakıp Söndürme (Blink)

Aşağıdaki kod, sinyali kare dalga olarak üretir; pini tamamen lojik 1 (3.3V) veya lojik 0 (0V) konumuna getirerek LED'i birer saniye aralıklarla çalıştırır.

#define LED_PIN 2

void setup() {
  // GPIO 2 pinini çıkış olarak yapılandırıyoruz
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH); // LED açık (3.3V)
  delay(1000);                 // 1000 milisaniye bekle
  digitalWrite(LED_PIN, LOW);  // LED kapalı (0V)
  delay(1000);                 // 1000 milisaniye bekle
}

3. Analog Kontrol: PWM ile Parlaklık Ayarı (Fading)

ESP32'de geleneksel analogWrite() fonksiyonu yerine gelişmiş donanımsal LEDC (PWM) sürücüsü kullanılır. Kod, sinyalin görev döngüsünü (duty cycle) değiştirerek LED'e giden ortalama gücü kontrol eder ve nefes alma efekti oluşturur.

#define LED_PIN 2

// PWM Parametreleri
const int frekans = 5000;    // 5 kHz sinyal frekansı
const int ledKanali = 0;     // 0-15 arası donanımsal PWM kanalı
const int cozunurluk = 8;    // 8-bit çözünürlük (0 - 255 arası değerler)

void setup() {
  // PWM kanalını, frekansını ve çözünürlüğünü yapılandır
  ledcSetup(ledKanali, frekans, cozunurluk);
  
  // Yapılandırılan PWM kanalını ilgili GPIO pinine bağla
  ledcAttachPin(LED_PIN, ledKanali);
}

void loop() {
  // Parlaklığı kademeli olarak artır (0 -> 255)
  for (int parlaklik = 0; parlaklik <= 255; parlaklik++) {
    ledcWrite(ledKanali, parlaklik);
    delay(10);
  }

  // Parlaklığı kademeli olarak azalt (255 -> 0)
  for (int parlaklik = 255; parlaklik >= 0; parlaklik--) {
    ledcWrite(ledKanali, parlaklik);
    delay(10);
  }
}
Önemli Teknik Notlar:
  • Yasaklı Pinler: GPIO 6 ile GPIO 11 arasındaki pinler entegre flash belleğe bağlıdır. Bu pinleri LED veya başka bir bileşen için kesinlikle kullanmayınız; kartın kilitlenmesine neden olur.
  • Yüksek Güçlü LED Kontrolü: Şerit LED veya yüksek güçlü LED grupları sürmek isterseniz, ESP32 pinleri doğrudan bu akımı karşılayamaz. Bu durumda harici bir kaynak ile birlikte MOSFET (örn: IRFZ44N) veya transistör kullanılması zorunludur.

💬 Yorumlar

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

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
Sayfa Başı
Yenidir CMS V0.1