Start Elkretssimulator


RGB Led



En RGB -lysdiod är alltså 3 stycken lysdioder i samma bygge. Röd, Grön och Blå därav namnet RGB.

Gemensam Anod eller Katod ?

Det finns 2 typer av RGB -lysdioder. Den ena har gemensam anod och den andra gemensam katod. Den praktiska skillnaden blir att man tänder en lysdiod i den ena modulen genom att ansluta en spänning till en lysdiod, medans den andra sorten tänds genom att man ansluter en lysdiod till 0 volt.


RGB -Modul

En RGB -modul innehåller en RGB -lysdiod med 3 stycken förmonterade resistanser på benen, för att begränsa strömmen genom lysdioderna, så att den enkelt går att ansluta till t.ex. en arduino. Den sorten jag har att leka med här verkar ha gemensam katod så i mitt fall skall den gemensamma anslutningen gå till GND. Det betyder att jag tänder en lysdiod med en positiv spänning ("HIGH").



Funktion

Den korta versionen hur det fungerar ser du nedan. Dvs, tänder vi den röda blir det såklart rött. Tänder vi den blå, blir det blått. Men tänder vi 2 av av färgerna samtidigt så blandas dessa och vi får en ny 3:e färg. Så fungerar pixlarna i våra mobiltelefoner eller våra datormonitorer eller TVn. Genom att blanda rött, grönt och blått kan vi framställa de flesta synliga färger.



I en enkel testversion av en RGB -lysdiod kan vi prova att tända olika kombinationer av dessa lysdioder. I en mer avancerad testversion kan vi prova vad som händer om vi blandar olika styrkor av de olika färgerna. Dvs, vi tänder den röda bara delvis med ger full styrka på grönt. Vad får vi då?

Uppkoppling

Obervera att du givetvis inte behöver en RGB -modul för att experimentera här. Går lika bra med en RGB -lysdiod och några förkopplingsmotstånd.

Med gemensam katod så ser uppkopplingen ut såhär.


Med gemensam anod så ser uppkopplingen ut såhär.


Den modul jag har, med gemensam katod, kan kopplas upp t.ex. såhär.


Kod

Följande kod ger då grönt ljus. Tänder vi iställer rött eller blått får vi såklart dessa färgerna istället.

#define RED 11
#define GREEN 9
#define BLUE 10

void setup() 
{
  Serial.begin(9600);
  pinMode(RED, OUTPUT);
  pinMode(GREEN, OUTPUT);
  pinMode(BLUE, OUTPUT);

  digitalWrite(GREEN, HIGH);
} 

void loop() 
{

}




Så vad händer om vi tänder röd och grön samtidigt?
#define RED 11
#define GREEN 9
#define BLUE 10

void setup() 
{
  Serial.begin(9600);
  pinMode(RED, OUTPUT);
  pinMode(GREEN, OUTPUT);
  pinMode(BLUE, OUTPUT);

  digitalWrite(RED, HIGH);
  digitalWrite(GREEN, HIGH);
} 

void loop() 
{

}

Det lyser gult.



Genom att använda analogWrite så kan vi välja att blanda nyanser av färger lite mer sofistikerat.

#define RED 11
#define GREEN 9
#define BLUE 10

void setup() 
{
  Serial.begin(9600);
  pinMode(RED, OUTPUT);
  pinMode(GREEN, OUTPUT);
  pinMode(BLUE, OUTPUT);

  analogWrite(RED, 100);
  analogWrite(GREEN, 5);
} 

void loop() 
{

}




Nedan kod skapar en effekt där färgerna vandrar över hela regnbågen i en evig loop...

#define RED 11
#define GREEN 9
#define BLUE 10

// 
// hue 0-1
// sat 0-1
// val 0-1
//
int *v;

float hue = 1;
float sat = 1;
float val = 1;

int * HSVtoRGB(float h, float s, float v) 
{
    static int vr[3];
    int i;
    float r,g,b,f,p,q,t;
    i=(int)(h*6);
    f=h*6-(float)i;
    p=v*(1-s);
    q=v*(1-f*s);
    t=v*(1-(1-f)*s);
    switch (i%6) 
    {
        case 0: r=v, g=t, b=p; break;
        case 1: r=q, g=v, b=p; break;
        case 2: r=p, g=v, b=t; break;
        case 3: r=p, g=q, b=v; break;
        case 4: r=t, g=p, b=v; break;
        case 5: r=v, g=p, b=q; break;
    }
    vr[0]=(int)(r*255);
    vr[1]=(int)(g*255);
    vr[2]=(int)(b*255);    
    return vr;
}

void setup() 
{
  Serial.begin(9600);
  pinMode(RED, OUTPUT);
  pinMode(GREEN, OUTPUT);
  pinMode(BLUE, OUTPUT);
} 

void loop() 
{

hue += 0.001;
if(hue>1)
{
  hue = 0.001;
}
v = HSVtoRGB(hue, sat, val);

int red = v[0];
int green = v[1];
int blue = v[2];

analogWrite(RED, red);
analogWrite(GREEN, green);
analogWrite(BLUE, blue);
delay(5);
}

Det ser tjusigare ut i verkligheten, men nedanstående animerade gif ger en vink hur ovan snurra blir.



Vill du styra många sådana här RGB -lysdioder så kan du snegla på följande projekt, en RGB-ljusstake styrd med WS2811

Lycka till!