samedi 9 avril 2011

LED RGB

Les LED RGB sont des LED ayant 4 pattes : 1 cathode reliée à la masse et 3 anodes pour les couleurs Rouge Vert Bleu. Il s'agit en quelque sorte d'une LED 3 en 1. Il est ainsi possibles d'émettre toutes les couleurs.




Une LED de ce type est dispo dans le kit Arduino Flex (voir le site Sparkfun), pour l'utiliser on passe par les sorties analogiques afin de régler le niveau des couleurs.

Un exemple est disponible sur le site Wiring.

Réalisation
J'ai fait un programme qui passe d'une couleur à l'autre aléatoirement et de manière fluide.





Principe
On va garder, diminuer ou augmenter une des 3 couleurs de base. On change de choix dès qu'on est à la moitié de la valeur maximum (127/255).  De cette façon, on parcourt les couleurs aléatoirement.

Code source


int LED_BLEU = 3;
int LED_ROUGE = 6;
int LED_VERT = 5;
int bleu = 0;
int rouge = 0;
int vert = 0;
int deltaBleu = 0; 
int deltaRouge = 0; 
int deltaVert = 0; 
int boucle = 0;
void setup() {
  pinMode(LED_BLEU, OUTPUT);
  pinMode(LED_VERT, OUTPUT);
  pinMode(LED_ROUGE, OUTPUT);
  // BLEU + VERT = CYAN
  // BLEU + ROUGE = VIOLET
  // VERT + ROUGE = JAUNE
  
  randomSeed(analogRead(A0));
  
  bleu = random(2) * 255;
  rouge = random(2) * 255;
  vert = random(2) * 255;
  
  Serial.begin(9600);
}
void loop() {
  if(boucle == 127) {
    deltaBleu = random(3) - 1;
    deltaRouge = random(3) - 1;
    deltaVert = random(3) - 1;
    boucle = 0;
  }
  
  bleu += deltaBleu;
  rouge += deltaRouge;
  vert += deltaVert;
  
  bleu = constrain(bleu,0,255);
  rouge = constrain(rouge,0,255);
  vert = constrain(vert,0,255);
  
  analogWrite(LED_BLEU, bleu);
  analogWrite(LED_ROUGE, rouge);
  analogWrite(LED_VERT, vert);
  
  delay(1);
  boucle++;
}

Ce composant donne des idées pour d'autres projets comme une lampe d'ambiance, ou un cube de LED.

Aucun commentaire:

Enregistrer un commentaire