back to top

Arduino Temelleri 2: RGB LED Nedir? Arduino İle Kontrolü Nasıl Yapılır?

Merhaba arkadaşlar. Bugün sizlerle beraber Arduino ile RGB LED kontrolü yapacağız.

Gerekli malzemelerimiz:

RGB LED Nedir?

RGB LED’ler, normal LED’lerden farklı olarak tek paket içerisinde 3 farklı renk (kırmızı, yeşil ve mavi) LED’i bir arada bulundurur. LED yakıp söndürme dersimizden hatırlayacak olursak LED’lerin anot ve katot uçları bulunuyordu. RGB LED’lerde ise LED’in üretim şekline göre anot veya katot bağlantıları ortak olarak bulunmaktadır.

Bizim kullandığımız kitte bulunan RGB LED’imiz ortak anoda sahip. Ama bu yazımızda hem ortak anoda göre hem de ortak katoda göre Arduino kodu ve devre şeması hazırlayacağız. Siz de RGB LED’inize bakarak uygun olan devreyi yapıp, Arduino kodlarınızı yükleyebilirsiniz.

PWM ve Dijitalden Analog’a Dönüşüm

Bildiğimiz gibi Arduino’muzun giriş/çıkış pinlerinde kullanılan voltaj 5V seviyesinde. Bir önceki dersimizde LED’imizi 5V gerilimde 20 mA akım çekecek şekilde kartımıza bağlamıştık. Bu şekilde bağladığımızda LED’imiz olabilecek en parlak şekilde yanmaktaydı. Peki parlaklığı değiştirmek istersek ne yapmamız gerekir?

Sorunun cevabı aslında basit: gerilimi düşürmek. Eğer 5V ile çalışan LED’imizi daha düşük bir gerilimle, örneğin 3V ile çalıştırırsak parlaklığı azalacaktır. Fakat bu sefer de şunu sorabilirsiniz: Arduino çıkış gerilimi 5V değil miydi? Nasıl 3V çıkış alabiliriz?

Burada darbe genişliği modülasyonu (PWM – pulse width modulation) tekniğini kullanmamız gerekiyor. Bu yazıda darbe genişliği modülasyonu yerine kısaca PWM olarak bahsedeceğim. PWM, çıkışta aldığımız 5V gerilimi belirli bir zaman aralığında (Arduino’da genellikle saniyenin 1/500’ü) açıp kapatarak 0 ile 5V arasında istediğimiz gerilimi Arduino’nun çıkış pininden almamızı sağlar. Şu şekilde düşünelim: eğer bir LED çok hızlı bir şekilde yanıp sönerse gözümüz bu yanıp sönmeyi tam olarak algılayamaz ve parlaklığı daha düşük olarak algılar.

Yukarıdaki görselde gördüğümüz üzere, 5V’u 2 milisaniyelik sürenin sadece %5’lik kısmında açık olacak şekilde verirsek, elde ettiğimiz değer 5V’un %5’i; yani 0,25V olacaktır. Aynı şekilde eğer 2 ms sürenin yarısında (%50) açık kalacak şekilde ayarlarsak 2,5V elde ederiz.

Arduino UNO kartımızın tüm pinleri PWM çıkış yeteneğine sahip değildir. Kartımızın dijital pinlerinde pin numarasının önünde ~ işareti olan bazı pinler mevcuttur. Eğer PWM çıkış almak istiyorsak, bu pinleri kullanmak zorundayız. Bu pinler Arduino UNO için 3, 5, 6, 9, 10 ve 11 numaralı pinlerdir.

Arduino Uno Pin Diagram
Arduino Uno

RGB LED İçin Arduino Kodu

İlk dersimizde Arduino yazılımı içinde mevcu olan örnek kodu değiştirmiştik. Bu sefer kodumuzu kendimiz yazıyoruz:

//Ortak Anot RGB LED için Arduino Kodu

//RGB LED'imizin bacaklarını Arduino'da bağladığımız pinlere göre global değişken olarak atadık.
int kirmiziPin = 9; //Kırmızı bacak 9 numaralı pine
int yesilPin = 10; //yeşil bacak 10 numaralı pine
int maviPin = 11; //mavi bacak 11 numaralı pine 

void setup(){ 
  pinMode(kirmiziPin, OUTPUT); //kirmiziPin(9) çıkış pini olarak atadık
  pinMode(yesilPin, OUTPUT); //yesilPin(10) çıkış pini olarak atadık
  pinMode(maviPin, OUTPUT);} //mavi(11) çıkış pini olarak atadık
  
  void loop(){ 
    renkAyarla(255, 0, 0); //kirmizi 
    delay(1500); //1.5 saniye bekle
    renkAyarla(0, 255, 0); //yesil 
    delay(1500); //1.5 saniye bekle
    renkAyarla(0, 0, 255); //mavi 
    delay(1500); //1.5 saniye bekle
    renkAyarla(255, 255, 0); //sari 
    delay(1500); //1.5 saniye bekle
    renkAyarla(80, 0, 80); //mor 
    delay(1500); //1.5 saniye bekle
    renkAyarla(0, 255, 255); //acik mavi 
    delay(1500); //1.5 saniye bekle
    renkAyarla(255, 255, 255); //beyaz 
    delay(1500); //1.5 saniye bekle
    }
    
//Renk ayarla fonksiyonu oluşturduk
void renkAyarla(int kirmizi, int yesil, int mavi){ 
  kirmizi = 255-kirmizi; 
  yesil = 255-yesil; 
  mavi = 255-mavi; 
  analogWrite(kirmiziPin, kirmizi); 
  analogWrite(yesilPin, yesil); 
  analogWrite(maviPin, mavi);
  }

RGB LED’imizin kırmızı bacağını 9 numaralı pine, yeşil bacağını 10 numaralı pine ve mavi pinini 11 numaralı pine 220 Ω’luk dirençler ile bağlıyoruz. Kullandığımız LED ortak anot yapıya sahip olduğu için anot bacağını da kartımızın 5V pinine bağlıyoruz.

Ortak Anot RGB LED Bacakları
Ortak Anot RGB LED Bacakları
Ortak Anot RGB LED Devre Bağlantısı
Ortak Anot RGB LED Devre Bağlantısı

Kodumuzun setup fonksiyonunda kullanacağımız pinleri çıkış olarak tanımlıyoruz. Ayrıca yazdığımız renkAyarla isimli fonksiyondaki analogWrite komutu, bize her bir PWM çıkış pininden alacağımız voltajın yüksekliğini ayarlamamızı sağlıyor. analogWrite komutu şu şekilde kullanılıyor:

analogWrite(PWM çıkış pin numarası, 0-255 arası sayısal değer);

analogWrite komutunda 255 değeri maksimum çıkış voltajını yani 5V’u temsil ediyor. 0 ile 255 arası tüm değerler 0 – 5V arası voltaj değerlerine denk düşüyor. Örneğin analogWrite(9 , 80) komutu, 9 numaralı pinden 5V x (80/255) = 1,57V geriliminde çıkış almamızı sağlıyor. Farklı parlaklıklardaki kırmızı mavi ve yeşil ışığı karıştırarak istediğimiz renkte ışık elde etmemiz bu sayede mümkün oluyor.

Eğer kullandığımız LED ortak anot yerine ortak katot yapıya sahipse, ortak bacağı +5V yerine GND pinlerine bağlayıp, aşağıdaki kodları Arduino’muza yükleyebiliriz.

//Ortak Katot RGB LED için Arduino Kodu

//RGB LED'imizin bacaklarını Arduino'da bağladığımız pinlere göre global değişken olarak atadık.
int kirmiziPin = 9; //Kırmızı bacak 9 numaralı pine
int yesilPin = 10; //yeşil bacak 10 numaralı pine
int maviPin = 11; //mavi bacak 11 numaralı pine 

void setup(){ 
  pinMode(kirmiziPin, OUTPUT); //kirmiziPin(9) çıkış pini olarak atadık
  pinMode(yesilPin, OUTPUT); //yesilPin(10) çıkış pini olarak atadık
  pinMode(maviPin, OUTPUT);} //mavi(11) çıkış pini olarak atadık
  
  void loop(){ 
    renkAyarla(255, 0, 0); //kirmizi 
    delay(1500); //1.5 saniye bekle
    renkAyarla(0, 255, 0); //yesil 
    delay(1500); //1.5 saniye bekle
    renkAyarla(0, 0, 255); //mavi 
    delay(1500); //1.5 saniye bekle
    renkAyarla(255, 255, 0); //sari 
    delay(1500); //1.5 saniye bekle
    renkAyarla(80, 0, 80); //mor 
    delay(1500); //1.5 saniye bekle
    renkAyarla(0, 255, 255); //acik mavi 
    delay(1500); //1.5 saniye bekle
    renkAyarla(255, 255, 255); //beyaz 
    delay(1500); //1.5 saniye bekle
    }
    
//Renk ayarla fonksiyonu oluşturduk
void renkAyarla(int kirmizi, int yesil, int mavi){ 
  analogWrite(kirmiziPin, kirmizi); 
  analogWrite(yesilPin, yesil); 
  analogWrite(maviPin, mavi);
  }
Ortak Katot RGB LED Bacakları
Ortak Katot RGB LED Bacakları
Ortak Katot RGB LED Arduino Devre Bağlantısı
Ortak Katot RGB LED Arduino Devre Bağlantısı

loop fonksiyonunda ise kartımız, oluşturduğumuz renkAyarla kodunu tekrar tekrar çağırarak çıkışlara istediğimiz değerleri yazmamızı sağlıyor. delay fonksiyonu bildiğimiz üzere her komut arasında kartımızın işlem yapmadan beklemesini sağlıyor. Bu fonksiyonun değerini değiştirerek istediğimiz hızda renkler arası geçiş sağlayabiliriz. Sizler de farklı parlaklık değerleriyle oynayarak farklı renkler elde edebilirsiniz. Hatta farklı efektler bile oluşturabilirsiniz. 

Setinizi hala almadıysanız, bu video hangisini tercih etmeniz gerektiği konusunu size aktarıyor.

Arduino Setleri İnceleme Videosu
Arduino Uno RGB LED Bağlantısı ve Kullanımı

Son Çıkan Yazılar

84 YORUMLAR

  1. Merhaba Kerem bey;

    Arduino meraklıları için harika bir kaynak olmuş.

    Elinize sağlık.

    Derslerin devamını bekliyoruz.

    Saygılar & selamlar
    Gökhan Güler

  2. buradaki olayın işleme tarzı şu şekilde mi ?
    ortak anottan 5v geliyor.
    pwm pininden örneğin 3 v çıkış aldık. 5-3=2v
    led 2v değerine göre yanıyor ?

    • renkAyarla() komutları arasındaki delay sürelerini değiştirerek veya her bir rengin değerini bir döngü içerisinde (örneğin for döngüsü) kademeli olarak arttırarak yapabilirsiniz.

  3. Ben bu konularda daha çok yeniyim de size bir sorum olacaktı acaba ben arduino uno r3 yerine klon olanını kullansam sorun olur mu acaba cevap verirseniz sevinirim

    • Klon ürünler, orijinal ürünlerin farklı fabrikalar tarafından daha uygun maliyetlerde üretilmiş versiyonlarıdır. İşlevsel olarak hiçbir farkları yoktur. Gönül rahatlığıyla kullanabilirsiniz 🙂

  4. hocam iyi günler
    void renkAyarla(int kirmizi, int yesil, int mavi)

    {

    kirmizi = 255 – kirmizi;

    yesil = 255 – yesil;

    mavi = 255 – mavi;

    analogWrite(kirmiziPin, kirmizi);

    analogWrite(yesilPin, yesil);

    analogWrite(maviPin, mavi);

    } komutun buradaki işlevini çözemedim açıklayabilirmisiniz ?

    • Renk ayarlama; yani PWM çıkışına gerekli analog değeri yazma işlemini loop fonksiyonu yerine ayrı bir fonksiyon olarak yazdım. Böylelikle kodun loop kısmında gereksiz kalabalığın önüne geçerek daha net bir şekilde görülebileceğini düşündüm 🙂

  5. Hocam teşekkür ederim. Ancak anlamadığım bir nokta var. renkAyarla(255, 0, 0) verdiğimiz zaman,
    kirmizi = 0
    yesil = 255
    mavi = 255 oluyor.

    Bu durumda kirmiziPin’e 0V giderken diğerlerine 5V gidiyor. Sonuç olarak Mavi + Yeşil yanması gerekmiyor mu ? Neden kırmızı yanıyor ?

    • Malesef hayır. Her bir LED üzerinden yaklaşık olarak 20mA değerinde akım geçmesi gerekli olduğundan (sebebini detaylı bir şekilde LED Yakıp Söndürme dersinde açıkladım) RGB LED’in içindeki her bir rengi ayrı bir LED olarak almamız gerekli. RGB LED’imizi farklı renklerde yakmak istediğimizde her üç rengin parlaklık değeri farklı olacağından, sadece ortak bacağa bağlayacağımız tek bir direnç yeterli akım sınırlamayı yapamayacaktır.

  6. ben mesela arduino veya fpga üzerinde bir 8.055ms lik bir kare dalga üretip led yakmak istiyorum bunu 255 üzerinden hesaplayamadım yardımı olursanız ok sevirim

    • Üreteceğiniz kare dalganın açık kaldığı süreyi (duty cycle) değiştirerek hesaplayabilirsiniz: %50 duty cycle yaklaşık olarak 127/255, veya %20 duty cycle 51/255 yapacaktır.

    • Kodun tamamını kopyalamamış olabilir misiniz? 🙂 loop fonksiyonunun altında renkAyarla isimli bir fonksiyon daha var, belki atlamış olabilirsiniz.

    • void renkAyarla(int kirmizi, int yesil, int mavi) komutunu void setup()dan sonraki satırda göster düzelir.

      int kirmiziPin = 9;
      int yesilPin = 10;
      int maviPin = 11;

      void setup()
      {
      pinMode(kirmiziPin, OUTPUT);
      pinMode(yesilPin, OUTPUT);
      pinMode(maviPin, OUTPUT);
      }

      void renkAyarla(int kirmizi, int yesil, int mavi)

      {
      kirmizi = 255 – kirmizi;
      yesil = 255 – yesil;
      mavi = 255 – mavi;
      analogWrite(kirmiziPin, kirmizi);
      analogWrite(yesilPin, yesil);
      analogWrite(maviPin, mavi);
      }

      void loop()
      {
      renkAyarla(255, 0, 0); //kirmizi
      delay(1500);
      renkAyarla(0, 255, 0); //yesil
      delay(1500);
      renkAyarla(0, 0, 255); //mavi
      delay(1500);
      renkAyarla(255, 255, 0); //sari
      delay(1500);
      renkAyarla(80, 0, 80); //mor
      delay(1500);
      renkAyarla(0, 255, 255); //acik mavi
      delay(1500);
      renkAyarla(255, 255, 255); //beyaz
      delay(1500);
      }

  7. hocm merhabalar. benim anladığım konu şu. ortak ANOTlu RGB led’de kırmızı, yeşil ve mavi bacaklar eksi iken nasıl olurda bu bacaklara OUTPUT (5V) veriyorsunuz. Bu eksi olan bacaklara OUTPUT veriyorsunuz ve led yanıyor. BU NASIL OLUYOR? merakımdan çatlayacam

    • Ortak anot LED kullanıldığında, elektrik akımı anot bacağı (+) -> LED -> direnç ve en son olarak direnç üzerinden Arduino pini vasıtasıyla toprak (GND) yolunu izlemiş oluyor. Ortak katot (-) kullandığımızda akımı Arduino sağlamış oluyor (current source); ortak anotta ise akım Arduino üzerinden akıyor (current sink). Her bir mikrokontrolcü için giriş/çıkış pinlerine ait bu değerler datasheet’te belirtilir.

  8. rgb led ile ldr ve ses sensoru kullanımı nasıl olur bunla ilgili internette hic kaynak örnek yok örneğin gunduz ldr yandırmıyıcak rgb yi ama ses sensorunde tepki gelse bile yanmıyacak fakat gece olunca ldr ses sensorunden tepki bekliyicek sonra ldr rgb yi yakıcak bunu nasıl yapabiliriz yardımcı olursanız sevinirim.

  9. lojik VE kapısına ldr ve ses sensörü bağlarsanız çıkışıda ardunio a verirseniz devre çalışır.lojik VEYA kapısına bağlarsanızda sensörlerden biri aktif olunca ardunio çıkış verir ve rgb yanar.

    • 255 değeri, Arduino’nun PWM çıkışlarının hassasiyetinin 8-bit olmasından kaynaklıdır. 2^8 = 256 adım olduğundan, 0 değeri bize 0V, 255 değeri ise maksimum değer olan 5V’u verecektir. Aradaki değerler ise yazıda anlatıldığı gibi PWM sinyali olarak gerçekleşecektir.

  10. SA Kerem Bey
    Ben Arduino Kumanda ile RGB LED Kontrolü ödevim inernette bulduğum şu program ile;

    #define red_pin 6
    #define green_pin 5
    #define blue_pin 3
    #define RECV_PIN 11

    #include

    const int rgb_leds[] = { 6, 5, 3 };

    const long r_less = 16724175; // 1
    const long r_more = 16743045; // 3
    const long g_less = 16716015; // 4
    const long g_more = 16734885; // 6
    const long b_less = 16728765; // 7
    const long b_more = 16732845; // 9
    const long randcol = 16726215; //
    const long onoff = 16753245; //
    const long blinkrgb = 16718055; //

    const int interval = 10;

    int red = 255;
    int green = 255;
    int blue = 255;

    long ir_signal;
    boolean onoff_switch = true;
    boolean randcolor_switch = false;

    IRrecv irrecv(RECV_PIN);
    decode_results results;

    void blink_pin( int pin ) {
    analogWrite( pin, 100 );
    delay( 1000 );
    analogWrite( pin, 255 );
    delay( 1000 );
    }

    void blink_rgb() {
    for ( int led = 0; led <= 2; led++ ) {
    blink_pin( rgb_leds[ led ] );
    }
    }

    void dimm_all() {
    for ( int led = 0; led <= 2; led++ ) {
    analogWrite( rgb_leds[ led ], 255 );
    }
    }

    void random_color() {
    // Randomly draw a color each 500 ms
    int val;

    for ( int led = 0; led <= 2; led++ ) {
    val = random( 0, 255 );
    analogWrite( rgb_leds[ led ], val );
    }

    delay( 500 );
    }

    int inc_dec_val( char color, char action ) {
    int val = interval;
    if ( action == 'i' ) { val *= -1; }

    switch (color) {
    case 'r': val += red; break;
    case 'g': val += green; break;
    case 'b': val += blue; break;
    }

    if (val = 255 ) {
    val = 255;
    }

    switch (color) {
    case ‘r’: red = val; break;
    case ‘g’: green = val; break;
    case ‘b’: blue = val; break;
    }

    return val;
    }

    void setup() {
    pinMode( red_pin, OUTPUT );
    pinMode( green_pin, OUTPUT );
    pinMode( blue_pin, OUTPUT );

    dimm_all();

    Serial.begin(9600);
    irrecv.enableIRIn(); // Start the receiver
    }

    void loop() {
    if ( irrecv.decode(&results) ) {
    ir_signal = results.value;
    Serial.println( ir_signal );

    switch (ir_signal) {
    case r_less:
    analogWrite( red_pin, inc_dec_val( ‘r’, ‘d’ ) );
    break;
    case r_more:
    analogWrite( red_pin, inc_dec_val( ‘r’, ‘i’ ) );
    break;
    case g_less:
    analogWrite( green_pin, inc_dec_val( ‘g’, ‘d’ ) );
    break;
    case g_more:
    analogWrite( green_pin, inc_dec_val( ‘g’, ‘i’ ) );
    break;
    case b_less:
    analogWrite( blue_pin, inc_dec_val( ‘b’, ‘d’ ) );
    break;
    case b_more:
    analogWrite( blue_pin, inc_dec_val( ‘b’, ‘i’ ) );
    break;
    case randcol:
    randcolor_switch = ! randcolor_switch;
    break;
    case onoff:
    onoff_switch = ! onoff_switch;
    if (! onoff_switch) { dimm_all(); }
    break;
    case blinkrgb:
    blink_rgb();
    break;
    }

    ir_signal = 0;

    irrecv.resume(); // Receive the next value
    }

    if (randcolor_switch) { random_color(); }
    }
    Ödevi yapmaya çalışıyorum ama bir türlü bu programı arduino ya yükleyemiyorum IRremote.h kütüphanesini indirdim libary klasörüne attım bu sefer de

    Arduino:1.8.2 (Windows 7), Kart:”Arduino/Genuino Uno”

    Çalışmanız programın 1340 bayt (4 %) saklama alanını kullandı. Maksimum 32256 bayt.
    Global değişkenler belleğin 9 byte kadarını (0%) kullanıyor. Yerel değişkenler için 2039 byte yer kalıyor. En fazla 2048 byte kullanılabilir.
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x1c
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x1c
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x1c
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x1c
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x1c
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x1c
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x1c
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x1c
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x1c
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x1c
    Karta yüklenirken sorun oluştu. Tavsiyeler için http://www.arduino.cc/en/Guide/Troubleshooting#upload adresine göz atabilirsiniz.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    hatası alıyorum kafayı yiyecem sizce sorun nedir

    • Arduino’nuzda dijital 0 veya 1 numaralı pinlere herhangi bir bağlantı yaptınız mı? Yaptıysanız bu bağlantıları çıkartıp yükleme yapmayı deneyin.

    • Ayrı bir fonksiyon olarak yer alan renkAyarla’yı kullanabiliriz. Fonksiyon oluştururken Türkçe karakter kullanmadığımız sürece problem olmayacaktır.

  11. İyi Günler
    void renkAyarla(int kirmizi, int yesil, int mavi)

    {
    kirmizi = 255 – kirmizi;
    yesil = 255 – yesil;
    mavi = 255 – mavi;
    analogWrite(kirmiziPin, kirmizi);
    analogWrite(yesilPin, yesil);
    analogWrite(maviPin, mavi);
    }
    komutunun buradaki işlevini anlayamadım yardımcı olursanız sevinirim

    • Yazıda da belirttiğim gibi:
      “yazdığımız renkAyarla isimli fonksiyondaki analogWrite komutu, bize her bir PWM çıkış pininden alacağımız voltajın yüksekliğini ayarlamamızı sağlıyor. “

    • İki bacaklı RGB LED’ler genellikle güç verdiğinizde kendiliğinden farklı renklerde yanar. Renkleri kontrol etmeniz mümkün değildir.

  12. Ben devreyi kurdum ama çalışmadı. Belki de bağlantıda temassızlık oldu, sebebini bulamadım. Bağlantılar doğruydu, defalarca kontrol ettim ve bozup yeniden yaptım.Dirençleri çıkardım ve çalıştı. 5V yüksek diye 3.3V’a bağladım. Her iki durumda da aynı sonucu elde ettiğime göre, neden direnç ekliyoruz devreye?

  13. {
    kirmizi = 255 – kirmizi;
    yesil = 255 – yesil;
    mavi = 255 – mavi;
    }
    Bu satırların programdaki işlevini kısaca açıklar mısınız?

    • Ortak katotlu RGB LED’lerde maksimum parlaklığı ilgili pini GND seviyesine çektiğimizde alacağımız için, parlaklık değerini tersine çevirmek için bu satırları ekliyoruz.

    • Arduino üzerindeki 3.3V çıkışı maksimum 150mA civarında akım sağlayabilir ve yine de LED’lerinizi bozmamak için akım sınırlayıcı direnç kullanmanız gereklidir.

  14. Hocam merhaba ben daha çok yeni ve çok genç birisiyim 😀 (11 yaşındayım)
    Mesela diyelim yaptıkda biz bu kodu hangi programdan karta geçireceğiz?

    • Merhabalar, kodun tamamını kopyalamamış olabilir misiniz? loop fonksiyonunun alt kısmında bir de void renkAyarla() fonksiyonu bulunmaktadır, bu kısmı da kopyalamanız gerekir.

  15. “PWM, çıkışta aldığımız 5V gerilimi belirli bir zaman aralığında (Arduino’da genellikle saniyenin 1/500’ü) açıp kapatarak 0 ile 5V arasında istediğimiz gerilimi Arduino’nun çıkış pininden almamızı sağlar.” satırları hatalı yazılmıştır. Çünkü PWM ile 0-5v gerilim değil ortalaması 0-5v olan kare dalga elde edilmektedir.

  16. rgb_led:15:1: error: stray ‘\342’ in program

    kirmizi = 255 – kirmizi;

    ^

    rgb_led:15:1: error: stray ‘\200’ in program

    rgb_led:15:1: error: stray ‘\223’ in program

    rgb_led:16:1: error: stray ‘\342’ in program

    yesil = 255 – yesil;

    ^

    rgb_led:16:1: error: stray ‘\200’ in program

    rgb_led:16:1: error: stray ‘\223’ in program

    rgb_led:17:2: error: stray ‘\342’ in program

    mavi = 255 – mavi;

    ^

    rgb_led:17:2: error: stray ‘\200’ in program

    rgb_led:17:2: error: stray ‘\223’ in program

    C:\Users\ILGAZ\Documents\Arduino\rgb_led\rgb_led.ino: In function ‘void renkAyarla(int, int, int)’:

    rgb_led:15:19: error: expected ‘;’ before ‘kirmizi’

    kirmizi = 255 – kirmizi;

    ^

    rgb_led:16:17: error: expected ‘;’ before ‘yesil’

    yesil = 255 – yesil;

    ^

    rgb_led:17:17: error: expected ‘;’ before ‘mavi’

    mavi = 255 – mavi;

    ^

    exit status 1
    stray ‘\342’ in program

    Diye hata çıkıyor.
    Ne yapmalıyım?

  17. merhaba yazdığınız kodu kopyalayıp yapıştırdığımda ”renkAyarla’ was not declared in this scope’ hatasını veriyor. nerede hata yapıyorum

    • Merhaba, aşağıdaki kodu deneyip çalışıp çalışmadığını yazabilir misiniz?

      int kirmiziPin = 9;
      int yesilPin = 10;
      int maviPin = 11;

      void setup()
      {
      pinMode(kirmiziPin, OUTPUT);
      pinMode(yesilPin, OUTPUT);
      pinMode(maviPin, OUTPUT);
      }
      void loop()
      {
      renkAyarla(255, 0, 0); //kirmizi
      delay(1500);
      renkAyarla(0, 255, 0); //yesil
      delay(1500); renkAyarla(0, 0, 255); //mavi
      delay(1500);
      renkAyarla(255, 255, 0); //sari
      delay(1500);
      renkAyarla(80, 0, 80); //mor
      delay(1500);
      renkAyarla(0, 255, 255); //acik mavi
      delay(1500);
      renkAyarla(255, 255, 255); //beyaz
      delay(1500);
      }

      void renkAyarla(int kirmizi, int yesil, int mavi)
      {
      kirmizi = 255 – kirmizi;
      yesil = 255 – yesil;
      mavi = 255 – mavi;
      analogWrite(kirmiziPin, kirmizi);
      analogWrite(yesilPin, yesil);
      analogWrite(maviPin, mavi);
      }

  18. int kirmiziPin = 9;int yesilPin = 10;int maviPin = 11;void setup(){ pinMode(kirmiziPin, OUTPUT); pinMode(yesilPin, OUTPUT); pinMode(maviPin, OUTPUT);}void loop(){ renkAyarla(255, 0, 0); //kirmizi delay(1500); renkAyarla(0, 255, 0); //yesil delay(1500); renkAyarla(0, 0, 255); //mavi delay(1500); renkAyarla(255, 255, 0); //sari delay(1500); renkAyarla(80, 0, 80); //mor delay(1500); renkAyarla(0, 255, 255); //acik mavi delay(1500); renkAyarla(255, 255, 255); //beyaz delay(1500);}void renkAyarla(int kirmizi, int yesil, int mavi){ kirmizi = 255 – kirmizi; yesil = 255 – yesil; mavi = 255 – mavi; analogWrite(kirmiziPin, kirmizi); analogWrite(yesilPin, yesil); analogWrite(maviPin, mavi);}

    kodlar böyle görünüyor…

  19. hocam merhaba,
    tüm kodları denememize rağmen ardunio versiyonundan mı dır nedir (1.8.10)

    kodu ardunioya yükleyemiyorum.
    In function ‘void renkAyarla(int, int, int)’:

    4:30:19: error: expected ‘;’ before ‘kirmizi’

    kirmizi = 255 – kirmizi;

    ^~~~~~~

    4:31:17: error: expected ‘;’ before ‘yesil’

    yesil = 255 – yesil;

    ^~~~~

    4:32:16: error: expected ‘;’ before ‘mavi’

    mavi = 255 – mavi;

    ^~~~

    exit status 1
    stray ‘\342’ in program

    tüm satırları tek tek kontrol ettim kapanışlar ; ler vs

  20. Merhaba.
    Ben bir projede 60 adet RGB LED kullanacağım.
    Ortak anot.
    60 ma x 60 adet= 3.6amper yapıyor.
    Forumlarda arduino nun 500 ma maximum çıkış verebildiğini okudum.
    Benim sorunum harici beslemeyi nasıl yapacağım?

  21. Merhaba,ben ortak anodlu ledin kodundaki
    kirmizi = 255-kirmizi;
    yesil = 255-yesil;
    mavi = 255-mavi;
    kısmını anlamadım.Loop fonksiyonunun içinde renkayarla fonksiyonunu çağırdığımızda ilk satır için(255,0,0)yazmışsınız fakat bu değerleri yerine koyup fonksiyonu hesaplarsak
    kirmizi=255-255=0
    yesil=255-0=255
    mavi=255-0=255
    olmasını bekliyorum ben yani bana göre ilk renk kırmızı değil mavi ve yeşilin karışımı olmalı fakat led sizin yaptığınız gibi kırmızı yanıyor.Ben nereyi yanlış anlamışım?

  22. ardoino uno led yakma yazılımı için denedim önce (;) ü problem ediyordu sonra kod yazılımını sisteminizden kopyala yapıştır yaptım bu defada sadece hata oluştu diyor, alt cümlede kullanılabilir 2048 byt var diyor.Ne yapmam lazım, bendeki kit biraz eskidemi kalmış yoksa

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz