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.
Zdjęcie zmontowanego układu:
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:
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…