Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

Bu rehber, ESP32 geliştirme kartı kullanarak bir RGB LED üzerinde farklı renkleri görüntüleme işlemini adım adım açıklar. PWM (Pulse Width Modulation) tekniği ile kırmızı, yeşil ve mavi kanalların parlaklık değerlerinin bağımsız olarak kontrol edilmesi prensibine dayanan bu proje, analog çıkış ve renk karışımı konularını öğrenmek için temel bir uygulamadır.
RGB LED, tek bir paket içinde Kırmızı (Red), Yeşil (Green) ve Mavi (Blue) renkte üç ayrı LED barındırır. İki yaygın yapıda bulunur:
Bu projede Common Cathode yapı varsayılmıştır. Farklı tip LED kullanılıyorsa kod mantığı tersine çevrilmelidir.

Projede kullanılan pin atamaları:
Bu pinler PWM çıkışı destekleyen herhangi bir GPIO pini ile değiştirilebilir. ESP32’de çoğu GPIO pini PWM için uygundur.
Aşağıdaki link üzerinden istediğiniz renk için RGB değerini bulabilirsiniz.


Not: Her renk kanalı için seri direnç kullanımı, LED’in aşırı akımdan korunması için gereklidir.
Arduino IDE’yi açın ve aşağıdaki ayarları kontrol edin:
analogWrite() varsayılan olarak 8-bit PWM (0-255) kullanırAşağıdaki kodu Arduino IDE editörüne yapıştırın ve ESP32 kartınıza yükleyin:
/*
* ESP32 RGB LED Renk Kontrolü Projesi
* Common Cathode RGB LED varsayılmıştır
* Pin atamaları: Red=GPIO23, Green=GPIO22, Blue=GPIO21
* PWM çözünürlüğü: 8-bit (0-255)
*/
// RGB LED renk kanallarının bağlı olduğu GPIO pinlerini tanımla
#define PIN_RED 23 // Kırmızı kanal için GPIO23 pini
#define PIN_GREEN 22 // Yeşil kanal için GPIO22 pini
#define PIN_BLUE 21 // Mavi kanal için GPIO21 pini
// Kurulum fonksiyonu: reset atıldığında bir kez çalışır
void setup() {
// Kırmızı kanal pinini çıkış (OUTPUT) olarak ayarla
pinMode(PIN_RED, OUTPUT);
// Yeşil kanal pinini çıkış (OUTPUT) olarak ayarla
pinMode(PIN_GREEN, OUTPUT);
// Mavi kanal pinini çıkış (OUTPUT) olarak ayarla
pinMode(PIN_BLUE, OUTPUT);
}
// Ana döngü fonksiyonu: sürekli tekrarlanır
void loop() {
// Renk kodu #00C9CC (Turkuaz)
// R = 0, G = 201, B = 204 değerlerini RGB LED'e uygula
setColor(0, 201, 204);
delay(1000); // Bu renkte 1 saniye (1000 ms) bekle
// Renk kodu #F7788A (Pembe-Kırmızı)
// R = 247, G = 120, B = 138 değerlerini RGB LED'e uygula
setColor(247, 120, 138);
delay(1000); // Bu renkte 1 saniye (1000 ms) bekle
// Renk kodu #34A853 (Yeşil)
// R = 52, G = 168, B = 83 değerlerini RGB LED'e uygula
setColor(52, 168, 83);
delay(1000); // Bu renkte 1 saniye (1000 ms) bekle
}
// RGB renk değerlerini LED'e uygulayan yardımcı fonksiyon
// Parametreler: R (0-255), G (0-255), B (0-255)
void setColor(int R, int G, int B) {
// Kırmızı kanal PWM değerini GPIO23 pinine yaz
// analogWrite: 0 (kapalı) ile 255 (tam parlak) arasında değer alır
analogWrite(PIN_RED, R);
// Yeşil kanal PWM değerini GPIO22 pinine yaz
analogWrite(PIN_GREEN, G);
// Mavi kanal PWM değerini GPIO21 pinine yaz
analogWrite(PIN_BLUE, B);
}
#define direktifleri ile renk kanallarının bağlı olduğu GPIO pinleri sabit olarak tanımlanır.pinMode(PIN_X, OUTPUT): Her bir renk kanalının bağlı olduğu pin dijital çıkış olarak yapılandırılır.setColor(R, G, B) fonksiyonu çağrılarak istenen renk değeri RGB LED’e uygulanır.delay(1000) ile 1 saniye bekleme sağlanır; bu sayede renkler gözlemlenebilir sürelerde görüntülenir.R (Kırmızı), G (Yeşil), B (Mavi), her biri 0-255 aralığında.analogWrite(pin, değer): İlgili pinde PWM sinyali üreterek LED parlaklığını ayarlar.Kod yüklendikten sonra:
Temel işlevi tamamladıktan sonra projeyi aşağıdaki şekilde genişletebilirsiniz:
S: LED beklenen renkleri göstermiyor, neden?
C: Common Anode tipinde bir RGB LED kullanıyor olabilirsiniz. Bu durumda analogWrite(pin, 255-değer) şeklinde ters mantık uygulamanız veya LED tipine uygun bağlantı yapmanız gerekir.
S: analogWrite() fonksiyonu ESP32’de nasıl çalışır?
C: ESP32’de analogWrite() LEDC (LED Control) donanımı üzerinden 8-bit PWM (0-255) üretir. Varsayılan frekans 1000 Hz’dir. Daha hassas kontrol için ledcWrite() fonksiyonu ve özel konfigürasyon kullanılabilir.
S: Renk kodlarını (#00C9CC gibi) nasıl R, G, B değerlerine çevirebilirim?
C: Hex renk kodlarında ilk iki karakter Kırmızı, sonraki iki Yeşil, son iki Mavi değerini temsil eder. Örn: #00C9CC → R=0x00(0), G=0xC9(201), B=0xCC(204).
S: PWM frekansını değiştirmek mümkün mü?
C: Evet, ESP32’de ledcSetup(channel, frequency, resolution) ve ledcAttachPin(pin, channel) fonksiyonları ile PWM frekansı ve çözünürlüğü özelleştirilebilir.
S: LED çok parlak veya çok sönük yanıyor.
C: Seri direnç değerini değiştirerek LED akımını ayarlayabilirsiniz. 220Ω daha parlak, 470Ω-1kΩ daha sönük ışık sağlar. Ayrıca PWM değer aralığını kod içinde ölçeklendirebilirsiniz.
S: Farklı GPIO pinleri kullanabilir miyim?
C: Evet, PWM destekleyen herhangi bir GPIO pini kullanılabilir. Ancak GPIO 34-39 gibi sadece giriş destekleyen pinleri çıkış olarak atamayın. Pin atamalarını #define bölümünden kolayca değiştirebilirsiniz.