Internetteki RGB Led Fade (Yumuşak geçiş) örnekleri genelde belirli bir düzende çalıştığı için farklı renkler görmek mümkün olmuyordu. Bu yüzden hedef rengi random (rasgele) belirleyen bir RGB Led Fade kodu oluşturdum. Çalışma mantığı çok basit; öncelikle hedef Red-Green-Blue değerlerini random fonksiyonu ile oluşturup, mevcut Red-Green-Blue değerlerimizle karşılaştırıp, her rengin hedef değerine göre mevcut renk değerimizi arttırıyor ya da eksiltiyor. Arduino kodundan anlayan arkadaşlar baktıklarında algoritmayı rahatlıkla kavrayabilirler.

RGB Led’i Arduino’ya bağlarken LED’in cinsine göre ortak Anode(+) veya Cathode(-) bağlantı yapacaksınız. Bununla ilgili ayrıntılı bilgi için Google veya Lezzetli Robot Tarifleri ‘ne danışabilirsiniz.

RGB Led’inizi bağladıktan sonra kodu yükleyerek çalışmasını inceleyebilirsiniz.

RGB Led Fader with Random Colours

#include <EEPROM.h>
int randNumber;

int redNew;
int greenNew; 
int blueNew;

int redTemp;
int greenTemp;
int blueTemp;

bool isCycle = false;

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


void setup(){
  randomSeed(analogRead(0));
}

void loop() {
 cycleColour();
 delay(100); 
}

void cycleColour() {

  if(isCycle == false)
  {
    redNew = random(255);
    greenNew = random(255); 
    blueNew = random(255);
    isCycle = true;
  }
  while(isCycle == true) {
    if(redTemp < redNew) redTemp++; 
    if(redTemp > redNew) redTemp--;
    if(greenTemp < greenNew) greenTemp++; 
    if(greenTemp > greenNew) greenTemp--;
    if(blueTemp < blueNew) blueTemp++; 
    if(blueTemp > blueNew) blueTemp--;
    setColourRgb(redTemp,greenTemp,blueTemp);
    if(redTemp == redNew && 
       greenTemp == greenNew && 
       blueTemp == blueNew) isCycle = false;
    delay(4);
  }
}

void setColourRgb(int red, int green, int blue) {
  analogWrite(redPin, red);
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue);
}

dfsh