ESP32 ile RGB LED Kontrolü ve Renk Döngüsü (PWM)

👤 Yazar: ozcan 📅 Tarih: 04.06.2026 16:48 👁️ Görüntüleme: 1

ESP32 ile RGB LED Kontrolü ve Renk Döngüsü (PWM)

Bu uygulamada, tek bir LED yerine bünyesinde Kırmızı (Red), Yeşil (Green) ve Mavi (Blue) olmak üzere 3 farklı diyot barındıran RGB LED'i kontrol edeceğiz. ESP32'nin 3 farklı donanımsal PWM kanalını kullanarak renkleri karıştıracak ve gökkuşağı efekti oluşturacağız.

1. Gerekli Malzemeler

2. Donanım Bağlantıları

Ortak katot RGB LED'lerde en uzun bacak eksi (-) ucudur. Diğer 3 bacak ise sırasıyla Kırmızı, Yeşil ve Mavi renkleri temsil eder. Her renk bacağına akım sınırlama için ayrı birer direnç bağlanmalıdır.

ESP32 RGB LED Bağlantı Şeması

Görsel 1: ESP32 RGB LED Şeması

3. Renk Döngüsü ve Karışımı Kod Bloğu

Aşağıdaki kod, 3 bağımsız PWM kanalına farklı görev döngüleri (duty cycle) göndererek renk spektrumu oluşturur.

#define RED_PIN 17
#define GREEN_PIN 4
#define BLUE_PIN 16

// PWM Yapılandırması
const int frekans = 5000;
const int cozunurluk = 8; // 8-bit (0 - 255)

// Her renk için ayrı bir donanımsal kanal tanımlanır
const int redKanal = 0;
const int greenKanal = 1;
const int blueKanal = 2;

void setup() {
  // PWM Kanallarının yapılandırılması
  ledcSetup(redKanal, frekans, cozunurluk);
  ledcSetup(greenKanal, frekans, cozunurluk);
  ledcSetup(blueKanal, frekans, cozunurluk);
  
  // Kanalların ilgili GPIO pinlerine bağlanması
  ledcAttachPin(RED_PIN, redKanal);
  ledcAttachPin(GREEN_PIN, greenKanal);
  ledcAttachPin(BLUE_PIN, blueKanal);
}

void loop() {
  // Kırmızıdan Yeşile Geçiş
  renkAyarla(255, 0, 0); delay(1000);
  // Yeşilden Maviye Geçiş
  renkAyarla(0, 255, 0); delay(1000);
  // Maviden Beyaza Geçiş
  renkAyarla(0, 0, 255); delay(1000);
  
  // Ara Renk Karışımı (Örn: Sarı)
  renkAyarla(255, 255, 0); delay(1000);
  // Mor Karışımı
  renkAyarla(128, 0, 128); delay(1000);
}

// Renk değerlerini ilgili kanallara yazan fonksiyon
void renkAyarla(int red, int green, int blue) {
  ledcWrite(redKanal, red);
  ledcWrite(greenKanal, green);
  ledcWrite(blueKanal, blue);
}
Kritik Teknik Not:
  • Ortak Anot Kullanımı: Eğer projenizde Ortak Anot RGB LED kullanıyorsanız, en uzun bacağı 3V3 pinine bağlamalısınız. Bu durumda kod mantığı tersine döner; renkleri yakmak için 255 yerine 0, söndürmek için ise 0 yerine 255 değeri (yani lojik tersleme) göndermeniz gerekir.

💬 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