RGB LED Kullanımı: Arduino ile Renk Karıştırma, Ortak Anot ve Katot Farkı
RGB LED nasıl çalışır, ortak katot ile ortak anot nasıl anlaşılır? Arduino bağlantısı, her renk için direnç hesabı, analogWrite ile renk karıştırma, gökkuşağı geçişi, ESP32 ve Pico kodu.
RGB LED, tek bir kılıfın içine yerleştirilmiş üç ayrı LED'dir: kırmızı (Red), yeşil (Green) ve mavi (Blue). Bu üç rengin parlaklığını ayrı ayrı ayarlayarak sarıdan turkuaza, mordan turuncuya kadar neredeyse istediğin her rengi elde edebilirsin. Bilgisayar ekranındaki her piksel de aynı mantıkla çalışır. Durum ışıkları, ruh hali lambaları ve renkli bildirim göstergeleri için Arduino'nun en eğlenceli parçalarından biridir.

RGB LED nasıl çalışır?
Işıkta renkler toplanarak karışır: kırmızı ile yeşil birlikte yanınca göz sarı görür, yeşil ile mavi turkuaz, kırmızı ile mavi mor (macenta) verir; üçü birden yandığında beyaz elde edilir. Arduino her kanalın parlaklığını PWM ile 0 ile 255 arasında ayarlar. Böylece teorik olarak 256 × 256 × 256 ≈ 16,7 milyon farklı kombinasyon ortaya çıkar. PWM, LED'i saniyede yüzlerce kez yakıp söndürür; göz bu hızlı yanıp sönmeyi fark edemez ve yalnızca ortalama parlaklığı görür.
| Renk | Kırmızı | Yeşil | Mavi |
|---|---|---|---|
| Kırmızı | 255 | 0 | 0 |
| Yeşil | 0 | 255 | 0 |
| Mavi | 0 | 0 | 255 |
| Sarı | 255 | 255 | 0 |
| Turkuaz | 0 | 255 | 255 |
| Mor (macenta) | 255 | 0 | 255 |
| Turuncu | 255 | 80 | 0 |
| Beyaz | 255 | 255 | 255 |
Ortak katot mu, ortak anot mu?
RGB LED'in dört bacağının en uzunu, üç LED'in paylaştığı ortak uçtur. Bu uç LED'lerin katotlarını birleştiriyorsa LED ortak katot, anotlarını birleştiriyorsa ortak anottur. Dışarıdan aynı görünürler ama bağlantıları ve kodları terstir:
| Özellik | Ortak katot (CC) | Ortak anot (CA) |
|---|---|---|
| Uzun bacak nereye? | GND | 5V |
| Bir rengi yakmak için | Pine HIGH (255) ver | Pine LOW (0) ver |
| Koddaki değer | analogWrite(pin, değer) | analogWrite(pin, 255 - değer) |
| Tam kapalı | 0 | 255 |
Bacak sırası ve Arduino bağlantısı
Yaygın 5 mm RGB LED'lerde bacak sırası kırmızı, ortak (en uzun), yeşil, mavi şeklindedir; ama üreticiye göre değişebildiği için her bacağı tek tek denemek en sağlamıdır. Her renk ayrı bir dirençle bir PWM pinine bağlanır. Arduino Uno'da PWM pinleri üzerinde ~ işareti bulunan 3, 5, 6, 9, 10 ve 11'dir.
| Bacak | Bağlantı | Arduino Uno pini |
|---|---|---|
| Kırmızı (R) | Direnç üzerinden | D9 |
| Ortak (en uzun) | Ortak katotta GND, ortak anotta 5V | — |
| Yeşil (G) | Direnç üzerinden | D10 |
| Mavi (B) | Direnç üzerinden | D11 |
Direnç hesabı: her renge ayrı direnç
Her rengin yanması için gereken gerilim (ileri gerilim) farklıdır: kırmızı için yaklaşık 2,0 V, yeşil ve mavi için 3,0–3,2 V. 5 V'ta 20 mA hedeflersen kırmızıya (5 − 2,0) / 0,020 = 150 Ω, yeşil ve maviye (5 − 3,2) / 0,020 ≈ 100 Ω gerekir. Pratikte üç renge de 220 Ω takmak hem güvenli hem de yeterince parlaktır; renk dengesini kodda ayarlayabilirsin. Kendi değerlerini hesaplamak için LED direnci hesaplayıcısını, renklerin ileri gerilimleri için LED gerilimleri tablosunu kullanabilirsin.
Arduino ile renk karıştırma
Aşağıdaki kod üç kanalı tek bir setColor() fonksiyonunda toplar ve sırayla yedi rengi gösterir. LED'in ortak anotsa COMMON_ANODE değerini true yapman yeterlidir; fonksiyon değerleri kendisi ters çevirir.
1const int R_PIN = 9;
2const int G_PIN = 10;
3const int B_PIN = 11;
4const bool COMMON_ANODE = false; // ortak anotsa true yap / set true for common anode
5
6void setColor(int r, int g, int b) {
7 if (COMMON_ANODE) { r = 255 - r; g = 255 - g; b = 255 - b; }
8 analogWrite(R_PIN, r);
9 analogWrite(G_PIN, g);
10 analogWrite(B_PIN, b);
11}
12
13void setup() {
14 pinMode(R_PIN, OUTPUT);
15 pinMode(G_PIN, OUTPUT);
16 pinMode(B_PIN, OUTPUT);
17}
18
19void loop() {
20 setColor(255, 0, 0); delay(1000); // kırmızı / red
21 setColor(0, 255, 0); delay(1000); // yeşil / green
22 setColor(0, 0, 255); delay(1000); // mavi / blue
23 setColor(255, 255, 0); delay(1000); // sarı / yellow
24 setColor(0, 255, 255); delay(1000); // turkuaz / cyan
25 setColor(255, 0, 255); delay(1000); // mor / magenta
26 setColor(255, 255, 255); delay(1000); // beyaz / white
27}Yumuşak renk geçişi: gökkuşağı efekti
Renkler arasında aniden atlamak yerine bir kanalı azaltırken diğerini artırırsan ışık kırmızıdan yeşile, yeşilden maviye ve tekrar kırmızıya akıcı bir şekilde geçer. Aşağıdaki döngü aynı setColor() fonksiyonunu kullanır; delay değerini değiştirerek hızı ayarlayabilirsin.
1// setColor() ve pin tanımları yukarıdaki gibi / setColor() and pins as above
2void loop() {
3 for (int i = 0; i < 256; i++) { setColor(255 - i, i, 0); delay(8); } // kırmızı → yeşil / red → green
4 for (int i = 0; i < 256; i++) { setColor(0, 255 - i, i); delay(8); } // yeşil → mavi / green → blue
5 for (int i = 0; i < 256; i++) { setColor(i, 0, 255 - i); delay(8); } // mavi → kırmızı / blue → red
6}Potansiyometreyle renk seçmek
Üç potansiyometreyi A0, A1 ve A2 pinlerine bağlarsan her birini bir renk kanalının düğmesi gibi kullanabilirsin. analogRead() 0–1023 arası bir değer döndürür; bunu 4'e bölmek PWM'in istediği 0–255 aralığını verir. Potansiyometrenin bağlantısı Potansiyometre Nedir? yazısında anlatılıyor.
1// A0, A1, A2'de üç potansiyometre; setColor() yukarıdaki gibi
2// three pots on A0, A1, A2; setColor() as above
3void loop() {
4 int r = analogRead(A0) / 4; // 0–1023 → 0–255
5 int g = analogRead(A1) / 4;
6 int b = analogRead(A2) / 4;
7 setColor(r, g, b);
8}ESP32 ve Raspberry Pi Pico ile RGB LED
ESP32'de güncel Arduino çekirdeğiyle (3.x) analogWrite() her çıkış pininde çalışır, yani yukarıdaki kod pin numaralarını değiştirerek aynen kullanılabilir. Dikkat etmen gereken tek şey gerilimdir: pinler 3,3 V verdiği için ileri gerilimi 3 V'a yakın olan yeşil ve mavi kanallar daha sönük yanar. 3,3 V'ta 47–100 Ω gibi küçük dirençler kullan ya da çok parlak ışık istiyorsan LED'i transistörle 5 V'tan sür. Pico'da MicroPython'un PWM sınıfı 0–65535 arası değer alır:
1from machine import Pin, PWM
2import time
3
4pins = [PWM(Pin(n)) for n in (11, 12, 13)] # GP11 R, GP12 G, GP13 B
5for p in pins:
6 p.freq(1000)
7
8def set_color(r, g, b): # 0–255
9 for p, v in zip(pins, (r, g, b)):
10 p.duty_u16(v * 257) # 0–65535 (ortak anotta 65535 - v * 257)
11
12while True:
13 set_color(255, 0, 0); time.sleep(1) # kırmızı / red
14 set_color(0, 255, 0); time.sleep(1) # yeşil / green
15 set_color(0, 0, 255); time.sleep(1) # mavi / blueNormal RGB LED mi, adreslenebilir LED (WS2812B) mi?
| Özellik | Normal RGB LED | WS2812B (NeoPixel) |
|---|---|---|
| Pin ihtiyacı | LED başına 3 PWM pini | Tüm şerit için 1 veri pini |
| Renk kontrolü | Arduino'nun PWM çıkışlarıyla | LED'in içindeki küçük yongayla |
| Kütüphane | Gerekmez | Adafruit NeoPixel ya da FastLED |
| Uygun kullanım | 1–2 LED, durum göstergesi | Şerit, halka, matris, ortam ışığı |
Bir ya da iki renkli ışık için normal RGB LED en basit ve en ucuz çözümdür. Onlarca LED'i ayrı ayrı renklendirmek istiyorsan Uno'nun yalnızca 6 PWM pini yetmez; bu durumda tek kabloyla yüzlerce LED'i yöneten WS2812B şeritlere geçmek gerekir.
RGB LED ile proje fikirleri
- Ruh hali lambası: Gökkuşağı geçişini buzlu bir kavanozun içine koyarak yumuşak bir gece lambası yap.
- Sıcaklık göstergesi: Soğukta mavi, ılıkta yeşil, sıcakta kırmızı yanan bir lamba için DHT11 ile birleştir.
- Renk karıştırıcı: Üç potansiyometreyle istediğin rengi elle oluştur.
- Telefonla renk seçimi: ESP32 ile bir web sayfasında renk seçiciden lambanın rengini değiştir.
- Bildirim ışığı: Yeni e-posta ya da mesaj geldiğinde LED'i belirli bir renkte yakıp söndür.
- Tuş takımıyla renk: Keypad'den girilen numaraya göre farklı renkler göster.
Sık yapılan hatalar ve çözümleri
- Renkler ters çalışıyor: Ortak anot bir LED'i ortak katot gibi sürüyorsun; COMMON_ANODE değerini true yap.
- Bir renk hiç yanmıyor: Bacak sırası beklediğinden farklı olabilir; her bacağı dirençle tek tek dene.
- Geçişler basamaklı, ara tonlar yok: LED PWM olmayan bir pine bağlı; Uno'da bu pinler yalnızca açık ya da kapalı olur.
- Buzzer çalarken renkler bozuluyor: Uno'da tone() Timer2'yi kullanır ve 3 ile 11. pinlerdeki PWM'i bozar; RGB LED'i 5, 6, 9 ve 10 gibi pinlere taşı.
- Direnç kullanmamak: Fazla akım hem LED'i hem Arduino pinini zamanla bozar.
- ESP32'de çok sönük: 3,3 V'ta yeşil ve mavi sınırdadır; daha küçük direnç ya da transistör kullan.
LED'in temellerini ve neden direnç gerektiğini merak ediyorsan LED Nedir? ve Direnç Nedir? yazılarına göz at. BlueGrays uygulamasında RGB LED ile yapılmış renk geçişi, keypad kontrollü lamba ve renk mikseri projelerini devre şemaları ve kodlarıyla bulabilirsin.
Sıkça sorulan sorular
RGB LED'in ortak anot mu ortak katot mu olduğunu nasıl anlarım?
Uzun bacağı GND'ye bağlayıp başka bir bacağı 220 Ω dirençle 5V'a dokundur; yanıyorsa ortak katottur. Yanmıyorsa uzun bacağı 5V'a, diğer bacağı dirençle GND'ye bağla; şimdi yanıyorsa ortak anottur. Multimetrenin diyot ölçme kademesi de aynı işi görür.
RGB LED'e kaç ohm direnç takılır?
5 V'ta kırmızıya yaklaşık 150 Ω, yeşil ve maviye yaklaşık 100 Ω idealdir. Basitlik için üçüne de 220 Ω takmak güvenlidir ve yeterince parlak bir ışık verir. Her renge ayrı direnç takmak şarttır.
RGB LED ile kaç renk elde edilebilir?
Her kanal 0–255 arası 256 parlaklık alabildiği için teorik olarak 16,7 milyon kombinasyon vardır. Pratikte gözün ayırt edebildiği renk sayısı daha azdır ve LED'lerin parlaklık farkı bazı tonları birbirine yaklaştırır.
RGB LED neden beyaz yerine mavimsi yanıyor?
Üç LED'in parlaklığı ve gözün renklere duyarlılığı farklıdır; genelde mavi ve yeşil baskın gelir. Kodda bu iki kanalı biraz düşürerek ya da dirençlerini büyüterek daha nötr bir beyaz elde edebilirsin.
RGB LED'i PWM olmayan bir pine bağlarsam ne olur?
O kanal yalnızca tam açık ya da tam kapalı çalışır; analogWrite 128 ve üzerini açık, altını kapalı sayar. Üç kanalın hepsi böyle olursa sadece 8 temel renk elde edersin, yumuşak geçiş yapamazsın.
Arduino Uno ile kaç RGB LED kontrol edebilirim?
Uno'nun 6 PWM pini olduğu için bağımsız renkte en fazla 2 RGB LED sürebilirsin. Daha fazlası için PCA9685 gibi 16 kanallı bir PWM sürücü ya da tek pinle yüzlerce LED'i yöneten WS2812B şeritler kullanılır.
Bu yazıdan sonra yapabileceğin projeler
Tüm projeleri gör
RGB Led Kullanımı
RGB LED'in kırmızı, yeşil ve mavi renklerini sırayla yakıp söndüren temel kullanım projesi. Ortak katotlu RGB LED kontrolünü öğretir.

RGB Led İle Yumuşak Renk Geçişi
analogWrite ile RGB LED'in renklerini kademeli olarak geçiş yaptırarak yumuşak gökkuşağı efekti oluşturan proje. PWM ile renk karışımı ve geçiş animasyonu mantığını öğretir.

Keypad İle RGB Led Kontrolü
Bu proje, 4x4 Keypad üzerinden RGB LED'i modlar ve renkler arasında yönetmenizi sağlar. millis() yapısı sayesinde komutlar gecikmesiz işlenir. 🎮 Kullanım Rehberi: A Tuşu: Sabit hızlı Fade efekti. B Tuşu: Hızı ayarlanabilir Smooth geçiş. C / D: Efekt hızını Artırır / Azaltır. 1 - 9: Hızlı Ana Renk seçimi. * / #: Özel Ara Renkler (Pembe, Açık Yeşil vb.). 0 Tuşu: Sistemi Kapatır.

ESP32 RGB LED Kontrolü
3 ayrı LED yerine tek RGB LED ile sınırsız renk üretme. Arduino'daki gibi analogWrite() ile R/G/B değerlerini ayarlayarak gökkuşağı geçişi yaparız. Renk teorisi (red+green=yellow gibi) pratik olarak görülür.

ESP32 Renk Mikser Lambası (3 Pot + RGB LED + OLED)
ESP32 ile 3 potansiyometre çevirerek istediğin rengi karıştıran akıllı bir renk mikser lambası! Kırmızı, yeşil ve mavi potansiyometreleri çevirdikçe ortak katot RGB LED anlık olarak renk değiştirir. SSD1306 OLED ekranda her renk için 0-255 aralığında değer, görsel dolgu barları ve HEX web renk kodu (#FF8040 gibi) canlı olarak gösterilir. Mini bir profesyonel renk stüdyosu — RGB renk teorisi, ADC analog okuma, PWM ile parlaklık kontrolü ve I2C ekran tasarımını tek projede öğretir. Grafik tasarımc

Raspberry Pi Pico RGB LED Renk Cevrimi (3 Kanal PWM, GP11-13)
Tek LED, milyonlarca renk! 🌈 RGB LED'in içinde aslında 3 ayrı LED var: **kırmızı, yeşil ve mavi**. Pico'nun 3 ayrı **PWM** kanalıyla her birinin parlaklığını ayrı ayrı ayarlayınca renkler karışır: kırmızı + yeşil = sarı, yeşil + mavi = camgöbeği, üçü birden = beyaz. Bu projede LED 8 renk arasında sırayla dönüyor. Öğrenme: **çoklu PWM kanalı** (aynı anda 3 pin), **fonksiyon tanımlama** (`def renk(...)` ile tekrar eden kodu tek yerde toplama), **RGB renk karışımı** (ekranların ve akıllı lambaların

ESP32 WS2812B NeoPixel Şerit Kontrolü
WS2812B (NeoPixel) adreslenebilir LED'ler, tek bir veri pini üzerinden zincirleme kontrol edilebilen akıllı RGB LED'lerdir. Bu projede 8 LED'lik bir WS2812B şeridi Adafruit_NeoPixel kütüphanesi ile kontrol edip akıcı bir gökkuşağı animasyonu üreteceğiz. ESP32'nin 3.3V mantık seviyesi çoğu WS2812B partisinde sorunsuz çalışsa da, kararsızlık durumunda 470Ω seri direnç ve 1000µF kondansatör çözümünü göstereceğiz. Animasyon, HSV renk uzayında ton (hue) değerini kaydırarak elde edilir.

WS2812B Kullanımı
WS2812B adreslenebilir LED şeridinde her bir LED'in rengini bağımsız olarak ayarlayarak temel kullanımını gösteren proje. FastLED kütüphanesi ile piksel bazlı renk kontrolünü öğretir.
Diğer yazılar
RGB LED'in tek kılıfta üç LED'le nasıl milyonlarca renk ürettiğini, ortak anot ve katodu ayırt etmeyi, doğru dirençleri seçmeyi ve Arduino ile renkleri yumuşakça karıştırmayı öğren.

