Étape 2: Voici le code
/** De l’Arduino Cookbook, recette 7,4 (Open Source), Michael Margolis
* Croquis de RGB_LEDs
* RGB LEDs chassés d’analog ports de sortie
*/
const int redPin = 3 ; Choisissez la goupille pour chacune des LEDs
const int greenPin = 5 ;
const int bluePin = 6 ;
const inverti booléen = false ; la valeur true si commun anode, cathode false si commun
couleur int = 0 ; une valeur comprise entre 0 et 255 représentant la teinte
int R, G, B ; les composants de couleur rouge vert et bleu
void setup()
{
broches pilotées par analogWrite n’ont pas besoin d’être déclarées comme sorties
}
void loop()
{
int luminosité = 255 ; 255 est la luminosité maximale
hueToRGB (couleur, luminosité) ; appel de fonction pour convertir teinte en RVB
écrire les valeurs RVB dans les broches
analogWrite (redPin, R) ;
analogWrite (greenPin, G) ;
analogWrite (bluePin, B) ;
couleur ++ ; incrémenter la couleur
if(Color > 255)
couleur = 0 ;
Delay(50) ;
}
fonction pour convertir une couleur en ses composantes rouge, vert et bleu.
void hueToRGB (int teinte, luminosité int)
{
unsigned int scaledHue = (teinte * 6) ;
unsigned int segment = scaledHue / 256 ; segment de 0 à 5 autour de la
roue chromatique
unsigned int segmentOffset =
scaledHue - (segment * 256) ; position dans le segment
unsigned int complément = 0 ;
unsigned int prev = (luminosité * (255 - segmentOffset)) / 256 ;
unsigned int = next (luminosité * segmentOffset) / 256 ;
if(Invert)
{
luminosité = 255-luminosité ;
complément = 255 ;
PREV = 255-prev ;
Next = 255-suivant ;
}
commutateur (segment) {}
case 0: / / rouge
R = luminosité ;
G = next ;
B = complément ;
rupture ;
cas 1: / / jaune
R = prev ;
G = luminosité ;
B = complément ;
rupture ;
case 2: / / vert
R = complément ;
G = luminosité ;
B = next ;
rupture ;
case 3: / / cyan
R = complément ;
G = prev ;
B = luminosité ;
rupture ;
case 4: / / bleu
R = next ;
G = complément ;
B = luminosité ;
rupture ;
cas 5: / / magenta
par défaut :
R = luminosité ;
G = complément ;
B = prev ;
rupture ;
}
}