Image
10 Temmuz, 2026

Arduino ile Potansiyometre Kullanarak RGB LED Renk Kontrolü

Potansiyometre ve RGB LED, Arduino öğrenmeye başlayanların en sık kullandığı elektronik komponentler arasında yer alır. Bu projede potansiyometreyi çevirerek RGB LED’in rengini PWM tekniği ile yumuşak şekilde değiştireceğiz.

Potansiyometre çevrildikçe RGB LED sırasıyla mavi, kırmızı, yeşil ve tekrar mavi renkleri arasında geçiş yapacaktır. Ayrıca potansiyometre en düşük konuma getirildiğinde LED bir anda sönmek yerine yavaşça kararacaktır.

Bu proje sayesinde analogRead(), analogWrite(), map() fonksiyonu, PWM sinyali ve RGB renk karışımı mantığını uygulamalı olarak öğrenebilirsiniz.

Projede Kullanılan Malzemeler

Arduino ile potansiyometre kullanarak RGB LED renk kontrolü yapmak için aşağıdaki malzemelere ihtiyacınız vardır:

Gerekli Malzeme Ürün Linki
Arduino Uno Arduino Uno R3 Klon + USB Kablo
RGB LED RGB LED 5mm
10K Potansiyometre 10K Potansiyometre - 3 Pin
1K Direnç 1/4W 1K Direnç Paketi
Jumper Kablo 40 Adet Erkek-Dişi Jumper Kablo
Breadboard Orta Boy Breadboard 400 Pin
Not: RGB LED’in kırmızı, yeşil ve mavi bacaklarının her birine ayrı direnç bağlamak daha güvenlidir. Bu projede 1K direnç kullanılabilir. Daha yüksek parlaklık istenirse 220Ω veya 330Ω direnç de tercih edilebilir.

Projenin Çalışma Mantığı

Bu projede Arduino, potansiyometreden gelen analog değeri sürekli olarak okur. Okunan değere göre RGB LED’in kırmızı, yeşil ve mavi parlaklık seviyeleri PWM yöntemiyle değiştirilir.

Potansiyometre çevrildikçe LED’in rengi yumuşak şekilde değişir. Renk geçiş sırası şu şekildedir:

🔵 Mavi

🟣 Mor

🔴 Kırmızı

🟡 Sarı

🟢 Yeşil

🩵 Camgöbeği

🔵 Mavi

Potansiyometre en düşük konuma getirildiğinde ise LED doğrudan kapanmak yerine yavaşça söner. Bu sayede projede hem analog giriş okuma hem de PWM ile yumuşak renk kontrolü uygulanmış olur.

RGB LED Bağlantısı

Bu projede ortak katot RGB LED kullanıldığı varsayılmıştır. Ortak katot RGB LED’de ortak bacak GND hattına bağlanır.

RGB LED Bacağı Arduino Bağlantısı
Ortak Katot Bacağı GND
Kırmızı Bacak 1K direnç üzerinden D9
Yeşil Bacak 1K direnç üzerinden D10
Mavi Bacak 1K direnç üzerinden D6

Potansiyometre Bağlantısı

Potansiyometrenin orta bacağı Arduino’nun analog giriş pinine bağlanır. Bu projede potansiyometre değeri A0 pininden okunacaktır.

Potansiyometre Bacağı Arduino Bağlantısı
Sol Bacak GND
Orta Bacak A0
Sağ Bacak 5V
İpucu: Potansiyometrenin sağ ve sol bacaklarını ters bağlarsanız devre yine çalışır. Ancak potansiyometreyi çevirme yönüne göre renk değişim yönü tersine döner.
Arduino ile potansiyometre kullanarak RGB LED renk kontrolü devre bağlantısı
Fotoğraf 1: Arduino, potansiyometre ve RGB LED bağlantı şeması.

Arduino Potansiyometre ile RGB LED Renk Kontrol Kodu

Aşağıdaki kod, potansiyometreden gelen değeri okuyarak RGB LED’in rengini değiştirir. Kod ortak katot RGB LED için hazırlanmıştır.

// Potansiyometrenin bağlı olduğu analog giriş pini
const int potPin = A0;

// RGB LED'in bağlı olduğu PWM pinleri
const int redPin = 9;
const int greenPin = 10;
const int bluePin = 6;

// LED'in anlık renk değerlerini tutan değişkenler
int currentR = 0;
int currentG = 0;
int currentB = 0;

// Potansiyometre en düşük konumdayken LED'i kapatmak için eşik değeri
const int offThreshold = 20;

void setup() {
  // RGB LED pinlerini çıkış olarak ayarla
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}

void loop() {
  // Potansiyometrenin değerini oku (0 - 1023)
  int potValue = analogRead(potPin);

  // Potansiyometre en düşük seviyedeyse LED'i yavaşça söndür
  if (potValue < offThreshold) {
    fadeToColor(0, 0, 0);
    delay(10);
    return;
  }

  // Potansiyometre değerini 0 - 767 aralığına dönüştür
  int color = map(potValue, offThreshold, 1023, 0, 767);

  // RGB değişkenlerini oluştur
  int r = 0;
  int g = 0;
  int b = 0;

  // Mavi -> Kırmızı geçişi
  if (color < 256) {
    b = 255 - color;
    r = color;
    g = 0;
  }

  // Kırmızı -> Yeşil geçişi
  else if (color < 512) {
    color -= 256;

    r = 255 - color;
    g = color;
    b = 0;
  }

  // Yeşil -> Mavi geçişi
  else {
    color -= 512;

    r = 0;
    g = 255 - color;
    b = color;
  }

  // Hesaplanan renkleri RGB LED'e gönder
  setColor(r, g, b);

  delay(10);
}

// RGB LED'e renk değerlerini gönderen fonksiyon
void setColor(int r, int g, int b) {
  currentR = r;
  currentG = g;
  currentB = b;

  analogWrite(redPin, currentR);
  analogWrite(greenPin, currentG);
  analogWrite(bluePin, currentB);
}

// LED'in rengini hedef renge yumuşak şekilde yaklaştıran fonksiyon
void fadeToColor(int targetR, int targetG, int targetB) {
  while (currentR != targetR || currentG != targetG || currentB != targetB) {

    if (currentR < targetR) currentR++;
    else if (currentR > targetR) currentR--;

    if (currentG < targetG) currentG++;
    else if (currentG > targetG) currentG--;

    if (currentB < targetB) currentB++;
    else if (currentB > targetB) currentB--;

    analogWrite(redPin, currentR);
    analogWrite(greenPin, currentG);
    analogWrite(bluePin, currentB);

    delay(3);
  }
}

Kod Nasıl Çalışır?

Kodda potansiyometrenin bağlı olduğu analog giriş pini A0 olarak tanımlanır. RGB LED’in kırmızı, yeşil ve mavi bacakları ise PWM destekli pinlere bağlanır.

const int potPin = A0;

const int redPin = 9;
const int greenPin = 10;
const int bluePin = 6;

Arduino Uno’da D3, D5, D6, D9, D10 ve D11 pinleri PWM desteklidir. Bu nedenle RGB LED renklerini yumuşak şekilde kontrol etmek için D9, D10 ve D6 pinleri kullanılmıştır.

Potansiyometre Değeri Okunuyor

int potValue = analogRead(potPin);

analogRead() fonksiyonu A0 pinindeki gerilimi okur. Arduino Uno’da bu değer 0 ile 1023 arasında olur.

Potansiyometre Konumu Yaklaşık Okuma Değeri
En düşük konum 0
Orta konum Yaklaşık 512
En yüksek konum 1023

Potansiyometre En Düşükteyse LED Yavaşça Sönüyor

if (potValue < offThreshold) {
  fadeToColor(0, 0, 0);
  delay(10);
  return;
}

Potansiyometre en düşük konuma getirildiğinde LED’in kapanması için bir eşik değeri kullanılır. Bu örnekte eşik değeri 20 olarak belirlenmiştir.

Bu değer sayesinde potansiyometre en düşük seviyedeyken RGB LED yumuşak şekilde kararır ve kapalı konumda kalır.

map() Fonksiyonu ile Değer Dönüştürme

int color = map(potValue, offThreshold, 1023, 0, 767);

map() fonksiyonu, potansiyometreden gelen 0-1023 aralığındaki değeri renk geçişleri için kullanılacak 0-767 aralığına dönüştürür.

0-767 aralığı üç ayrı renk geçiş bölgesine ayrılmıştır:

Değer Aralığı Renk Geçişi
0 - 255 Mavi → Kırmızı
256 - 511 Kırmızı → Yeşil
512 - 767 Yeşil → Mavi

RGB Renk Değerleri Hesaplanıyor

int r = 0;
int g = 0;
int b = 0;

RGB LED’de her rengin parlaklık değeri ayrı ayrı kontrol edilir. Kırmızı için r, yeşil için g, mavi için ise b değişkeni kullanılır.

Bu değişkenler 0 ile 255 arasında değer alır. Değer 0 olduğunda ilgili renk sönük, 255 olduğunda ise maksimum parlaklıktadır.

Renkler PWM ile RGB LED’e Gönderiliyor

setColor(r, g, b);

Hesaplanan kırmızı, yeşil ve mavi değerleri setColor() fonksiyonuna gönderilir. Bu fonksiyon içinde analogWrite() kullanılarak RGB LED’in her rengi ayrı ayrı kontrol edilir.

analogWrite(redPin, currentR);
analogWrite(greenPin, currentG);
analogWrite(bluePin, currentB);

Her rengin parlaklığı ayrı ayrı ayarlandığı için RGB LED üzerinde birçok farklı renk tonu oluşturulabilir.

PWM Neden Kullanılıyor?

Arduino Uno’da gerçek analog çıkış bulunmaz. Bunun yerine PWM yöntemi kullanılarak LED’in parlaklığı kontrol edilir.

analogWrite() fonksiyonuna gönderilen değerler 0 ile 255 arasındadır:

PWM Değeri LED Durumu
0 LED kapalı
128 Yaklaşık %50 parlaklık
255 Tam parlaklık

PWM sayesinde LED yalnızca açık veya kapalı olmak yerine farklı parlaklıklarda çalıştırılabilir. RGB LED’de her renk kanalına farklı PWM değeri verilerek farklı renkler elde edilir.

map() Fonksiyonu Neden Kullanılıyor?

analogRead() fonksiyonu 0 ile 1023 arasında değer döndürür. Ancak renk geçişlerini oluşturmak için bu değeri farklı bir aralığa dönüştürmek gerekir.

Bu projede map() fonksiyonu kullanılarak potansiyometre değeri 0 ile 767 arasına çevrilmiştir. Böylece üç farklı renk geçişi eşit şekilde oluşturulabilir.

Common Anode RGB LED Kullanıyorsanız

Bu yazıdaki devre ve kod common cathode, yani ortak katot RGB LED için hazırlanmıştır. Eğer RGB LED’in ortak bacağı GND yerine 5V’a bağlanıyorsa LED’iniz muhtemelen common anode tipindedir.

Common anode RGB LED kullanıyorsanız analogWrite() değerlerini terslemeniz gerekir. Bunun için setColor() fonksiyonunu aşağıdaki gibi değiştirebilirsiniz:

void setColor(int r, int g, int b) {
  currentR = r;
  currentG = g;
  currentB = b;

  analogWrite(redPin, 255 - currentR);
  analogWrite(greenPin, 255 - currentG);
  analogWrite(bluePin, 255 - currentB);
}

Projede Öğrenilen Arduino Fonksiyonları

Bu projede aşağıdaki Arduino fonksiyonlarını ve programlama yapılarını uygulamalı olarak öğrenmiş olursunuz:

  • analogRead() ile potansiyometre değeri okuma
  • analogWrite() ile PWM çıkışı üretme
  • pinMode() ile pinleri çıkış olarak ayarlama
  • map() ile değer aralığı dönüştürme
  • if - else yapısı ile koşul kontrolü
  • while döngüsü ile yumuşak geçiş oluşturma
  • delay() ile kısa bekleme süresi verme

LED veya Renkler Doğru Çalışmıyorsa Ne Kontrol Edilmeli?

Devreyi kurduktan sonra RGB LED yanmıyorsa veya renkler beklediğiniz gibi değişmiyorsa aşağıdaki noktaları kontrol edebilirsiniz:

  • RGB LED’in ortak bacağının doğru şekilde GND’ye bağlandığından emin olun.
  • Common anode RGB LED kullanıyorsanız ortak bacağı 5V’a bağlamanız ve kodu terslemeniz gerekir.
  • Kırmızı, yeşil ve mavi bacakların doğru Arduino pinlerine bağlandığını kontrol edin.
  • Her renk bacağında direnç kullandığınızdan emin olun.
  • Potansiyometrenin orta bacağının A0 pinine bağlı olduğunu kontrol edin.
  • Potansiyometrenin diğer iki bacağının 5V ve GND hatlarına bağlı olduğundan emin olun.
  • Arduino IDE’de doğru kart ve doğru port seçili olmalıdır.

Sık Sorulan Sorular

Bu projede neden PWM pinleri kullanılıyor?

RGB LED’in renklerini yumuşak şekilde değiştirmek için her renk kanalının parlaklığını ayrı ayrı kontrol etmek gerekir. Bu nedenle PWM destekli pinler kullanılır.

1K direnç yerine 220Ω veya 330Ω direnç kullanılabilir mi?

Evet, kullanılabilir. 220Ω veya 330Ω direnç LED’in daha parlak yanmasını sağlar. 1K direnç ise LED’i daha düşük parlaklıkta ama daha güvenli şekilde çalıştırır.

Potansiyometreyi çevirdiğimde renkler ters yönde değişirse ne yapmalıyım?

Potansiyometrenin sağ ve sol bacaklarını yer değiştirirseniz renk değişim yönü tersine döner. Bu durum devre için bir sorun oluşturmaz.

RGB LED renkleri yanlış yanıyorsa sorun nedir?

RGB LED’in kırmızı, yeşil ve mavi bacak sıralaması kullandığınız LED modeline göre değişebilir. Kırmızı yerine yeşil veya mavi yanıyorsa bağlantı kablolarını veya kod içindeki pin tanımlarını kontrol etmeniz gerekir.

Sonuç

Arduino ile potansiyometre kullanarak RGB LED renk kontrolü, analog girişleri ve PWM çıkışlarını birlikte kullanmayı öğrenmek için oldukça faydalı bir projedir. Potansiyometreden okunan analog değerler kullanılarak RGB LED’in renkleri yumuşak şekilde değiştirilir ve PWM tekniği sayesinde akıcı geçişler elde edilir.

Bu projeyi tamamladıktan sonra aynı mantıkla servo motor kontrolü, DC motor hız ayarı, LED parlaklığı kontrolü ve farklı RGB aydınlatma uygulamaları gibi daha gelişmiş projeler de kolayca geliştirilebilir.

Arduino Projeleri İçin Gerekli Ürünleri İnceleyin

Arduino Uno, RGB LED, potansiyometre, direnç, breadboard ve jumper kablo gibi temel elektronik proje malzemeleriyle kendi Arduino projelerinize kolayca başlayabilirsiniz.

Robomer Ürünlerini İncele