Parçalar · 5 dk okuma

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.

4 bacaklı 5 mm RGB LED
5 mm RGB LED: dört bacağın en uzunu ortak uçtur; diğer üçü kırmızı, yeşil ve mavi kanallardır.

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.

RenkKırmızıYeşilMavi
Kırmızı25500
Yeşil02550
Mavi00255
Sarı2552550
Turkuaz0255255
Mor (macenta)2550255
Turuncu255800
Beyaz255255255

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:

ÖzellikOrtak katot (CC)Ortak anot (CA)
Uzun bacak nereye?GND5V
Bir rengi yakmak içinPine HIGH (255) verPine LOW (0) ver
Koddaki değeranalogWrite(pin, değer)analogWrite(pin, 255 - değer)
Tam kapalı0255
Hangisine sahip olduğunu anlamak için uzun bacağı GND'ye bağla ve diğer bacaklardan birini 220 Ω'luk bir dirençle 5V'a dokundur. Renk yanıyorsa LED ortak katottur. Yanmıyorsa bağlantıyı çevir: uzun bacak 5V'a, diğer bacak dirençle GND'ye; şimdi yanıyorsa ortak anottur.

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.

BacakBağlantıArduino Uno pini
Kırmızı (R)Direnç üzerindenD9
Ortak (en uzun)Ortak katotta GND, ortak anotta 5V—
Yeşil (G)Direnç üzerindenD10
Mavi (B)Direnç üzerindenD11

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.

Tek bir direnci ortak bacağa koyma. İleri gerilimi en düşük olan kırmızı kanal akımın çoğunu çeker, diğer renkler sönük kalır ve renk karışımları bozulur. Her renk kanalına mutlaka kendi direncini tak.

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.

Arduino (C++)
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.

Arduino (C++)
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}
Beyazın biraz mavimsi ya da pembemsi görünmesi normaldir, çünkü üç LED'in parlaklığı eşit değildir. Kodda yeşil ve mavi kanalları yüzde 70–80'e ölçekleyerek daha doğal bir beyaz elde edebilirsin. LED'in üzerine bir pinpon topu ya da buzlu kâğıt koymak ışığı dağıtır ve renklerin çok daha iyi karışmasını sağlar.

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.

Arduino (C++)
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:

MicroPython
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 / blue

Normal RGB LED mi, adreslenebilir LED (WS2812B) mi?

ÖzellikNormal RGB LEDWS2812B (NeoPixel)
Pin ihtiyacıLED başına 3 PWM piniTüm şerit için 1 veri pini
Renk kontrolüArduino'nun PWM çıkışlarıylaLED'in içindeki küçük yongayla
KütüphaneGerekmezAdafruit NeoPixel ya da FastLED
Uygun kullanım1–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.

Tüm projeleri gör
RGB Led Kullanımı
#39Başlangıç
Premium

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.

4.9(72)
96
RGB Led İle Yumuşak Renk Geçişi
#40Başlangıç
Premium

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.

4.8(58)
76
Keypad İle RGB Led Kontrolü
#95Orta
Premium

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.

5.0(32)
44
ESP32 RGB LED Kontrolü
#111Başlangıç
Premium

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.

4.6(28)
50
ESP32 Renk Mikser Lambası (3 Pot + RGB LED + OLED)
#138İleri
Premium

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

4.7(6)
10
Raspberry Pi Pico RGB LED Renk Cevrimi (3 Kanal PWM, GP11-13)
#161Başlangıç
Premium

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

0.0(0)
6
ESP32 WS2812B NeoPixel Şerit Kontrolü
#126Orta
Premium

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.

4.9(19)
30
WS2812B Kullanımı
#69Orta
Premium

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.

4.8(54)
70

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.

RGB LED Kullanımı: Arduino ile Renk Karıştırma, Ortak Anot ve Katot Farkı | BlueGrays