Nouveau chapitre
Diode RGB
la LED multicolore RVB (ou RGB) Source Mr X. Hinault

Une LED RVB pour Rouge-Vert-Bleu (ou RGB pour Red Green Blue), n'est autre qu'un ensemble de 3 LEDs couleurs rassemblées dans un même boitier : si vous savez utiliser une LED, alors vous saurez utiliser une LED RVB !
Une LED RGB aura donc 4 broches : une commune à l'ensemble des LEDs et une pour chaque LED de couleur. La broche commune pourra, selon les modèles, être le + (anode commune) ou le - (cathode commune)

- Pour obtenir les couleurs unitaires, il suffira d'allumer la LED de la couleur voulue.
- Pour obtenir toutes les variétés de couleurs, on va mixer la proportion de couleur de chaque LED à l'aide d'une impulsion dite PWM, qui aura pour effet de fixer la proportion de chaque couleur :
100% des 3 couleurs donnera du BLANC
100% de rouge et 100% de vert donnera du JAUNE
100% de rouge et 100% de bleu donnera du VIOLET

Le brochage type d'une LED RGB est le suivant (la "patte" la plus longue est la broche commune, l'anode ou la cathode selon le modèle) :

Le matériel suivant pour réaliser le montage associé
- une LED RGB 5mm à cathode commune,
- 3 résistances 1/4w de 200 Ohms environ.
Instructions de montage


|
// --- Programme Arduino --- // Trame de code générée par le générateur de code Arduino // du site www.mon-club-elec.fr // Auteur du Programme : X. HINAULT - Tous droits réservés // Programme écrit le : 22/2/2012. // ------- Licence du code de ce programme ----- // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, // or any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. // //////////////////// PRESENTATION DU PROGRAMME //////////////////// // -------- Que fait ce programme ? --------- /* Ce programme teste simplement l'affichage des couleurs sur une LED RVB 5mm à cathode commune (- commun) La RVB dispose de 4 broches : * une broche de 0V * une broche de commande du ROUGE * une broche de commande du VERT * une broche de commande du BLEU Chaque broche peut recevoir une impulsion PWM (0-255) pour doser l'intensité de chacune des couleurs. */ // --- Fonctionnalités utilisées --- // -------- Circuit à réaliser --------- // Broche 3 : La broche Rouge de la LED RGB // Broche 5 : La broche Vert de la LED RGB // Broche 6 : La broche Bleu de la LED RGB // /////////////////////////////// 1. Entête déclarative /////////////////////// // A ce niveau sont déclarées les librairies incluses, les constantes, les variables, les objets utiles... // --- Déclaration des constantes --- // --- Inclusion des librairies --- // --- Déclaration des constantes utiles --- const int R=1; const int V=1; const int B=1; // --- Déclaration des constantes des broches E/S numériques --- const int ledRouge=3; // Constante pour la broche 3 const int ledVert=5; // Constante pour la broche 5 const int ledBleu=6; // Constante pour la broche 6 // --- Déclaration des constantes des broches analogiques --- //const int Voie[6]={0,1,2,3,4,5}; //declaration constante de broche analogique // --- Déclaration des variables globales --- // --- Déclaration des objets utiles pour les fonctionnalités utilisées --- // ////////////////////////// 2. FONCTION SETUP = Code d'initialisation ////////////////////////// // La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme void setup() { // debut de la fonction setup() // --- ici instructions à exécuter 1 seule fois au démarrage du programme --- // ------- Initialisation fonctionnalités utilisées ------- // ------- Broches en sorties numériques ------- pinMode (ledVert,OUTPUT); // Broche ledVert configurée en sortie pinMode (ledRouge,OUTPUT); // Broche ledRouge configurée en sortie pinMode (ledBleu,OUTPUT); // Broche ledBleu configurée en sortie // ------- Broches en entrées numériques ------- // ------- Activation si besoin du rappel au + (pullup) des broches en entrées numériques ------- // ------- Initialisation des variables utilisées ------- // ------- Codes d'initialisation utile ------- } // fin de la fonction setup() // ******************************************************************************** ////////////////////////////////// 3. FONCTION LOOP = Boucle sans fin = coeur du programme ////////////////// // la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension void loop(){ // debut de la fonction loop() //---- vert --- digitalWrite(ledVert,HIGH); // allume la couleur voulue delay(1000); // pause digitalWrite(ledVert,LOW); // éteint la couleur voulue delay(1000); // pause //---- rouge --- digitalWrite(ledRouge,HIGH); // allume la couleur voulue delay(1000); // pause digitalWrite(ledRouge,LOW); // éteint la couleur voulue delay(1000); // pause //---- bleu --- digitalWrite(ledBleu,HIGH); // allume la couleur voulue delay(1000); // pause digitalWrite(ledBleu,LOW); // éteint la couleur voulue delay(1000); // pause //----- test des couleurs au format RVB ---- //---- violet --- ledRVB(R,0,B); // allume R ouge et Bleu => violet delay(1000); // pause ledRVB(0,0,0); // éteint toutes les couleurs delay(1000); // pause //---- jaune --- ledRVB(R,V,0); // allume R ouge et Vert => jaune delay(1000); // pause ledRVB(0,0,0); // éteint toutes les couleurs delay(1000); // pause //---- bleu clair --- ledRVB(0,V,B); // allume Vert et Bleu => bleu clair delay(1000); // pause ledRVB(0,0,0); // éteint toutes les couleurs delay(1000); // pause //---- blanc --- ledRVB(R,V,B); // allume Rouge Vert et Bleu => blanc delay(1000); // pause ledRVB(0,0,0); // éteint toutes les couleurs delay(1000); // pause //----- variation de couleur // variation de rouge for (int i=0; i<=255; i++) { // défile valeur 0 à 255 ledRVBpwm(i,0,0); // génère impulsion largeur voulue pour la couleur delay(10); //pause } //ledRVB(0,0,0); // éteint toutes les couleurs // variation de bleu - rouge dégressif for (int i=0; i<=255; i++) { // défile valeur 0 à 255 ledRVBpwm(255-i,0,i); // génère impulsion largeur voulue pour la couleur delay(10); //pause } //ledRVB(0,0,0); // éteint toutes les couleurs // variation de vert - bleu dégressif for (int i=0; i<=255; i++) { // défile valeur 0 à 255 ledRVBpwm(0,i,255-i); // génère impulsion largeur voulue pour la couleur delay(10); //pause } // variation de jaune for (int i=0; i<=255; i++) { // défile valeur 0 à 255 ledRVBpwm(i,255,0); // génère impulsion largeur voulue pour la couleur delay(10); //pause } //etc... ledRVB(0,0,0); // éteint toutes les couleurs delay(1000); //while(1); // stop loop } // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin // ******************************************************************************** // ////////////////////////// FONCTIONS DE GESTION DES INTERRUPTIONS //////////////////// // ////////////////////////// AUTRES FONCTIONS DU PROGRAMME //////////////////// //---- fonction pour combiner couleurs ON/OFF ---- void ledRVB(int Rouge, int Vert, int Bleu) { if (Rouge==1) digitalWrite(ledRouge,HIGH); // allume couleur if (Rouge==0) digitalWrite(ledRouge,LOW); // éteint couleur if (Vert==1) digitalWrite(ledVert,HIGH); // allume couleur if (Vert==0) digitalWrite(ledVert,LOW); // éteint couleur if (Bleu==1) digitalWrite(ledBleu,HIGH); // allume couleur if (Bleu==0) digitalWrite(ledBleu,LOW); // éteint couleur } //---- fonction pour variation progressive des couleurs ---- void ledRVBpwm(int pwmRouge, int pwmVert, int pwmBleu) { // reçoit valeur 0-255 par couleur //--- attention - avec une LED RGB anode commune : la LED s'allume sur niveau BAS ! analogWrite(ledRouge, pwmRouge); // impulsion largeur voulue sur la broche 0 = 0% et 255 = 100% haut analogWrite(ledVert, pwmVert); // impulsion largeur voulue sur la broche 0 = 0% et 255 = 100% haut analogWrite(ledBleu, pwmBleu); // impulsion largeur voulue sur la broche 0 = 0% et 255 = 100% haut } // ////////////////////////// Fin du programme //////////////////// |
Vincent Escot Version du 31 mars 2012 (Version 2.0)
Created with the Freeware Edition of HelpNDoc: Easy CHM and documentation editor
Créé avec HelpNDoc Personal Edition: Créez sans effort une documentation d'aide de haute qualité avec un outil de création d'aide