/* 3 color LED Multi Fade Chaque LEDs s'allument & s'éteignent une par une et progressivement Voir : http://www.chouffy.net/post/Arduino%20-%20LED%203%20Couleurs pour plus de détails A noter que la LED est en sortie "inverse" : Une sortie à 1 sur une couleur donnera donc aucune lumière, et inversement Tri-color LED multi Please note that the LED is "reversed" : a 1 output on a color pin will NOT light the LED. LICENCE : This code is in the public domain. */ // Définition des variables : int pinLEDBleu = 3; // Bleu : pin 3 (sorties PWM) int pinLEDVert = 5; // Vert : pin 5 int pinLEDRouge = 6; // Rouge: pin 6 int nbLEDs = 3; // Nombre de LEDs int pinLEDs[3]; // Tableau permettant de contenir les pins des leds int intensite = 1; // Intensitée (rapidité) de la brillance // Routine de démarrage void setup() { // Copie des n° de pin dans le tableau pinLEDs pinLEDs[0] = pinLEDBleu; pinLEDs[1] = pinLEDVert; pinLEDs[2] = pinLEDRouge; // Configuration des sorties for (int i=0; i < nbLEDs; i++){ pinMode(pinLEDs[i], OUTPUT); analogWrite(pinLEDs[i], 255); // Eteindre les LEDs au cas où } } // Boucle d'exécution void loop() { int noLED[3]; int nbSequence = 0; // N° de séquence, de 0 à 2 int brillance = 0; // Boucle infinie nécessaire, sinon perte du contenu des variables while (1) { // Attribution des couleurs aux LEDs A, B et C noLED[0] = nbSequence; noLED[1] = nbSequence+1; noLED[2] = nbSequence+2; // "Correction" des calculs : si dépassement du nombre de LEDs, soustraction pour revenir "au début" for (int i=0; i < nbLEDs; i++) { if (noLED[i] > 2) noLED[i] = noLED[i] - nbLEDs; } // Gestion de la brillance brillance = 0; // Remise à zéro ! for (int i=0; i < 255; i++) { // si i < 256 : la LED s'éteind brillance = brillance + intensite; // intensite = 1 (dans la définition des variables) analogWrite(pinLEDs[noLED[0]], 255-brillance); // allumage progressif analogWrite(pinLEDs[noLED[1]], brillance); // extinction progressive delay(25); } // Mise à jour du compteur, mise à zéro si dépassement nbSequence++; if (nbSequence >= nbLEDs) nbSequence = 0; } }