Aller au contenu

Changer la couleur d’une LED RVB (ou RGB) avec Arduino

Changer la couleur d’une LED RVB (ou RGB) avec Arduino

Objectif : contrôler une LED RVB (ou LED RGB en anglais) à l’aide d’un potentiomètre et d’une carte Arduino UNO.

Difficulté : 2/5

Temps d'exécution : 20 min

Matériel nécessaire :

Le kit débutant Arduino UNO comporte tous les composants utilisés dans ce tutoriel.

Dans un premier temps, pour réaliser ce mini-projet, nous devons d’abord réaliser un montage électronique, suivez les schémas de l’article.

Dans un second temps, nous donnerons une explication du code et ensuite récupérez le programme final pour l’exécuter sur la carte Arduino UNO.

Prérequis

Dans cette partie, Nous expliquerons ce que sont certains composants et ce qu’est un signal PWM afin que vous compreniez le montage électronique et le programme qui l’on va utiliser.

Potentiomètre

potentiometre

Appelé aussi « Résistance variable ». Le potentiomètre peut être considéré comme une résistance dont on peut faire varier la valeur ohmique en tournant l’axe rotatif. Il suffit d’appliquer une tension aux broches qui se trouvent aux extrémités et récupérer la tension qui sort sur la broche du milieu. Cette tension varie de 0 Volt à la tension appliquée sur le potentiomètre suivant l’angle de l’axe rotatif. Nous récupérons cette tension avec une des entrées analogiques de la carte Arduino UNO. Ainsi nous changerons la couleur de la LED RVB suivant l’angle du potentiomètre.

LED RVB

Une LED RVB pour Rouge-Vert-Bleu, n’est rien d’autre qu’un ensemble de 3 LEDs , une rouge une verte et une bleue rassemblées dans une seul et même boitier. On peut alors faire varier l’intensité de chacune de ces trois couleurs pour obtenir la couleur souhaité. Une LED RGB a 4 broches : une commune à l’ensemble des LEDs et une pour chaque couleur de la LED. La broche commune pourra, selon les modèles, être le + (anode commune) ou le (cathode commune). Ici la LED a pour broche commune la cathode.

led rvb

Fils monobrins

fils monobrins

Résistances 220 ohms

résistances 220 ohms

Signal PWM

Un signal PWM est un signal numérique, donc soit il est à l’état bas, soit à l’état haut. Un signal PWM appliqué à une tension fait varier la puissance moyenne, pas la tension. Le rapport cyclique (ou duty cycle en anglais) indique le pourcentage de l’état haut par rapport à l’état bas (voir schéma ci-dessous). Nous jouerons avec ce rapport pour envoyer plus ou moins de puissance à la LED afin de faire varier la luminosité de chaque couleur.

Réalisation du montage

Nous allons commencer par réaliser le montage électronique. Il suffit de relier chaque anode de la LED RVB à une résistance de 220Ω et la cathode commune à la masse (Attention au sens de la LED). Ensuite, il faut relier les résistances aux pins 3, 5 et 6. Enfin, reliez une extrémité du potentiomètre au 5V, l’autre à la masse et la broche du milieu au pin A0 comme le schéma qui suit :

Si la valeur analogique lue en sortie du map est de 0, on obtient du bleu, 

led rgb bleu

Si la valeur analogique lue en sortie du map est de 255, on obtient du vert,

led rgb vert

Si la valeur analogique lue en sortie du map est de 2*255, on obtient du rouge,

led rgb rouge

Et entre ces valeurs vous obtenez un jolie dégradé entre bleu et vert puis entre vert et rouge ! 

Avec ce code on peut donc obtenir du bleu turquoise ( mélange de vert et de bleu )

led rgb bleu vert

ou encore du jaune ( un mélange de vert et de jaune ) ! 

led rgb rouge vert

Maintenant que le montage est réalisé, nous allons présenter les différentes fonctions qui pourrez-vous être utile pour la compréhension du programme final.

Explication du code Arduino

Les entrées analogiques permettent de récupérer la valeur d’une tension. Pour récupérer cette valeur dans le programme, il faut utiliser la fonction analogRead() en lui donnant le pin qu’elle doit lire. Ensuite, elle renvoie une valeur comprise entre 0 et 1023 qui correspond à une tension comprise entre 0 et 5V.

Ensuite on utilise la fonction map() qui convertie la valeur « tension » comprise entre 0 et 1023 à une valeur proportionnel comprise entre 0 et 510. Il s’agit d’une valeur qui sera plus facilement exploitable pour la suite du programme.

Suivant la valeur que renvoie le potentiomètre, nous allumons plus ou moins certaines couleurs de la LED RVB à l’aide de la fonction ledRVBpwm(). On envoie une valeur comprise entre 0 et 255 pour chaque paramètre. 0 signifie que la couleur est éteinte et 255 qu’elle est allumé au maximum.

Regardons ce qu’il y a dans la fonction ledRVBpwm().

La fonction modifie le signal PWM de chaque pin qui est reliée à chaque couleur. La fonction analogWrite() reçoit 2 paramètres :

  • Le pin qui doit être modifié
  • Le rapport cyclique de la PWM (0 -> 0% et 255 -> 100%)

Plus le pourcentage du rapport cyclique est grand, plus le couleur aura une intensité importante.

Voici le code à téléverser :

void ledRVBpwm(int pwmRouge, int pwmVert, int pwmBleu);

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

int tension, val;
void setup() {

pinMode (ledVert,OUTPUT);
pinMode (ledRouge,OUTPUT);
pinMode (ledBleu,OUTPUT);

}

void loop(){

tension = analogRead(A0);

val = map(tension,0,1023,0,2*255);

if( val < 255)
ledRVBpwm(0,val,255-val);

if( val >= 255 && val <= 2*255)
ledRVBpwm(val-255, 255-(val-255),0);

}

void ledRVBpwm(int pwmRouge, int pwmVert, int pwmBleu) { // reçoit valeur 0-255 par couleur

analogWrite(ledRouge, pwmRouge);
analogWrite(ledVert, pwmVert);
analogWrite(ledBleu, pwmBleu);
}

Le résultat obtenu :

led rvb arduino jaune

led rvb arduino rouge

led rvb arduino vert

Vous savez utiliser une led RVB reliée à une carte Arduino et un potentiomètre

Vous pouvez maintenant modifier la couleur d’une LED RVB et récupérer la valeur d’un potentiomètre et plus généralement vous pouvez générer des signaux PWM et lire la valeur d’une tension analogique.

Maintenant à vous de jouer pour modifier ce code afin d'obtenir du rose ! 

( Petit indice, c'est un mélange de bleu et de rouge ! ) 

Cet article vous a plu ? Laissez-nous un commentaire !

Tous les champs sont obligatoires

Nom:
E-mail: (ne sera pas publié)
Commentaire:
Recopier le code