Hur du använder en RGB LED (2 / 3 steg)
Steg 2: Här är koden
/** Från Arduino kokbok, recept 7,4 (Open Source), Michael Margolis
* RGB_LEDs skiss
* RGB lysdioder driven från analog output portar
*/
CONST int redPin = 3; välja den PIN-kod för varje lysdiod
CONST int greenPin = 5;
CONST int bluePin = 6;
CONST booleska Invertera = false; Ange sant om gemensam anod, false om gemensam katod
int färg = 0; ett värde från 0 till 255 som representerar nyans
int R, G, B; de röd gröna och blå färgkomponenterna
void setup()
{
Pins drivs av analogWrite behöver inte deklareras som utgångar
}
void loop()
{
int ljusstyrka = 255; 255 är maximal ljusstyrka
hueToRGB (färg, ljusstyrka); anropa funktionen för att konvertera nyans till RGB
skriva de RGB-värdena till stiften
analogWrite (redPin, R);
analogWrite (greenPin, G);
analogWrite (bluePin, B);
färg ++; Increment färg
IF(Color > 255)
färg = 0;
Delay(50);
}
funktion för att konvertera en färg till dess röda, gröna och blå delar.
void hueToRGB (int nyans, int ljusstyrka)
{
unsigned int scaledHue = (nyans * 6);
unsigned int segmentet = scaledHue / 256; segmentera 0 5 runt den
färghjulet
unsigned int segmentOffset =
scaledHue - (segment * 256); position inom segmentet
unsigned int komplement = 0;
unsigned int prev = (ljusstyrka * (255 - segmentOffset)) / 256;
unsigned int nästa = (ljusstyrka * segmentOffset) / 256;
IF(Invert)
{
ljusstyrka = 255-ljusstyrka;
komplement = 255;
Prev = 255-föregående;
Nästa = 255-nästa;
}
Växla (segment) {
fall 0: / / röd
R = ljusstyrka;
G = nästa;
B = komplementet.
bryta;
fall 1: / / gul
R = föregående;
G = ljusstyrka;
B = komplementet.
bryta;
fall 2: / / grön
R = komplementet.
G = ljusstyrka;
B = nästa;
bryta;
fall 3: / / cyan
R = komplementet.
G = föregående;
B = ljusstyrka;
bryta;
fall 4: / / blå
R = nästa;
G = komplementet.
B = ljusstyrka;
bryta;
fall 5: / / magenta
standard:
R = ljusstyrka;
G = komplementet.
B = föregående;
bryta;
}
}