Kolorowe jarmarki, czyli 3 w 1

Podłączenie i wysterowanie diody RGB

Trzy w jednym, dioda RGB

Zacznijmy od końca, czyli krótki filmik. Dzieło nie jest pasjonujące, ale dobrze oddaje to czego się dziś nauczymy, czyli kontrolowania diody RGB.

Działanie diody RGB podłączonej do Arduino

Zdjęcie zmontowanego układu:

RGB LED

Dioda RGB

Teraz już wiadomo co to za ustrojstwo – dioda RGB – czyli tytułowe trzy diody w jednej – Red, Green, Blue. Czerwona, Zielona, Niebieska. Z Arduino będzie łatwo taką diodą sterować – wystarczy wyjście cyfrowe podłączyć (przez rezystor 220 Ohm) do odpowiedniej nóżki i już można sterować jednym kolorem.

Która nożka jest która? Pomocny będzie ten obrazek:

Wyprowadzenia diody RGB

Licząc od lewej mamy niebieski, zielony, masa, czerwony. Najdłuższa nóżka to właśnie masa i to pozwala się nam zorientować jak podłączyć diodę.

Taka mała uwaga - ta dioda w Starter Kicie jest tak zwaną wspólna katoda, czyli ta najdłuższa nóżka oznacza wspólną masę dla naszych trzech-diod-w-jednej. Możecie spotkać diody z wspólną anodą gdzie ta najdłuższa nóżka oznacza wspólne zasilanie. Zasada działania jest taka sama, taką diodę się inaczej podłącza. I na teraz więcej o niej nie musicie wiedzieć :)

Co nam daje dioda RGB? Otóż można nią uzyskać światło innych barw mieszając trzy kolory w różnym stopniu. Dla zilustrowania tego kod programu użytego w filmie na początku. Idea jest taka, że każdy z kolorów jest zapalany z różną intensywnością (korzystając z PWM) i różną częstotliwością. Uzyskujemy w ten sposób efekt mieszania się kolorów:

int LED1 = 9;
int s1 = 255;
int LED2 = 10;
int s2 = 255;
int LED3 = 11;
int s3 = 255;

unsigned long int tme;

void setup() {
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
};

void loop() {

  analogWrite(LED1, s1);
  s1 = sin(tme*tme/50000.0)*128+128;

analogWrite(LED3, s3);
  s3 = sin(tme*tme/100000.0)*128+128;
  analogWrite(LED2, s2);
  s2 = sin(tme*tme/70000.0)*128+128;

  delay(15);

  tme++;
};

tme jest zmienną reprezentującą upływ czasu. Dzielimy kwadrat tej zmiennej w loop przez różne wartości i z nich obliczamy sinus. Dzięki temu mamy trzy różne fale (o różnej częstotliwości) każda z nich służy do sterowania jednym kolorem. Ponieważ funkcja kwadrat jest funkcją rosnącą nieliniowo więc przesunięcie w fazie poszczególnych fal powinno się zmieniać z czasem (tak sądzę, choć pewnie sprawdzić by to trzeba dokładniej). Dzięki temu kolory mieszają się różnie a nie w jednym cyklu.

Skutek uboczny jest taki, że z czasem cykle zmiany stają się coraz krótsze i dioda zaczyna migać coraz szybciej…