Cet article vous guidera à travers les bases de l’utilisation d’une LED RGB avec Arduino, afin que vous puissiez créer vos propres couleurs à l’aide de potentiomètres.
Je vous montrerai étape par étape les schémas de câblage et expliquerai le code pour que vous compreniez parfaitement comment utiliser ce composant.
Après ce tutoriel, vous devriez avoir un circuit qui éclaire dans la couleur de votre choix en utilisant des valeurs RGB, contrôlées par des potentiomètres et affichées dans le Moniteur Série.
Fournitures
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Matériel
- x1 Arduino Uno Rev3 (Amazon)
- x1 LED RGB, cathode commune (Amazon)
- x3 Résistances 220 Ohm (Amazon)
- x3 Potentiomètres 10k Ohm (Amazon)
- x1 Breadboard (Amazon)
- x~17 Fils de connexion (Amazon)
- x1 Câble USB B (Amazon)
Logiciel
- Arduino IDE
Vous pouvez aussi trouver des LEDs RGB dans des KY-016 modules, qui intègrent la LED et les résistances nécessaires sur un seul PCB.
Ces modules ne permettent pas de flexibilité lors du montage du circuit, mais ils sont plus plug-and-play que leurs alternatives.
Je ne les recommande pas, je préfère la flexibilité d’utiliser des résistances, et certains retours signalent une mauvaise reproduction des couleurs avec les valeurs RGB.
Instructions
Étape 1 – Connexion de la LED RGB
Ce schéma de câblage vous montre comment connecter une LED RGB à la carte Arduino.
Notez qu’il s’agit d’une LED à cathode commune, où la broche la plus longue est reliée à la masse, je vous expliquerai plus loin ce que signifie cathode commune.

Les connexions sont aussi indiquées dans le tableau ci-dessous.
| Composant | Broche Arduino |
| LED – Rouge | 11 |
| LED – Cathode | GND |
| LED – Vert | 10 |
| LED – Bleu | 9 |
Assurez-vous d’inclure une résistance de 220Ω entre les broches rouge, verte et bleue de la LED et les sorties pour éviter d’endommager la LED et l’Arduino.
Bases de la LED RGB
Une LED RGB peut être vue comme trois LEDs — une rouge, une verte et une bleue — dans un seul boîtier, cette LED unique émet une lumière combinant les intensités rouge, verte et bleue.
Les LEDs RGB ressemblent à des LEDs normales avec quatre broches, la plus longue étant la broche commune.

LED RGB à cathode commune et à anode commune
J’ai mentionné précédemment les LEDs à cathode commune et à anode commune. Les LEDs RGB existent en deux types : cathode commune et anode commune.
Dans les LEDs à cathode commune, la broche la plus longue est connectée à la masse (GND) et ses composants s’allument avec un signal 5V, dans les LEDs à anode commune c’est l’inverse : la broche longue va au 5V, un signal 0V allume les composants.
Dans cet exemple, nous utiliserons des LEDs à cathode commune, si vous avez une LED RGB à anode commune, le câblage et les sorties devront être inversés.
La seule façon de savoir si votre LED RGB est à cathode commune ou à anode commune est de la tester, je recommande d’utiliser un multimètre en mode diode.
Pour tester, placez la sonde négative sur la broche commune et la sonde positive sur une autre broche, si la LED s’allume c’est une cathode commune.
Sinon, placez la sonde positive sur la broche commune et la sonde négative sur une autre broche, la LED devrait s’allumer, ce qui signifie qu’elle est à anode commune.
Si vous n’avez pas de multimètre, vous pouvez faire ce test avec les broches 5V et GND de l’Arduino, en vous assurant d’avoir une résistance de 220Ω dans votre circuit.
Contrôler la luminosité de la LED avec le PWM
La luminosité d’une LED dépend du courant qui la traverse, mais nous ne pouvons pas contrôler directement le courant car l’Arduino Uno n’a pas de sorties analogiques pures, pour contrôler la luminosité nous utiliserons la modulation de largeur d’impulsion (PWM).
Le PWM allume et éteint la sortie périodiquement, et la durée pendant laquelle la sortie reste allumée détermine la luminosité de la LED.
Le PWM allume et éteint la sortie périodiquement, et la durée pendant laquelle la sortie reste allumée détermine la luminosité de la LED.
L’intensité de la LED est déterminée par le cycle de service du PWM, c’est le temps pendant lequel la sortie reste allumée. Un cycle de service de 50 % signifie que la sortie est haute 50 % du temps et basse 50 % du temps.
Ce cycle se produit à 490 Hz, 490 fois par seconde, et vous pouvez contrôler ce cycle avec AnalogWrite.
Le PWM allume et éteint la sortie périodiquement, et la durée pendant laquelle la sortie reste allumée détermine la luminosité de la LED.

Étape 2 – Connexion des trois potentiomètres
Pour cette étape, vous devez connecter trois potentiomètres au 5V, à la masse (GND) et aux broches analogiques A0, A1 et A2.
Les broches extérieures seront connectées au 5V et à la masse, la broche centrale se connecte aux broches analogiques selon cette figure :

Sous forme de tableau :
| Composant | Broche Arduino |
| Broche la plus à droite (n’importe laquelle) | 5V |
| Broche la plus à gauche (n’importe laquelle) | GND |
| Broche centrale (rouge) | A0 |
| Broche centrale (vert) | A1 |
| Broche centrale (bleu) | A2 |
Utiliser un potentiomètre comme entrée analogique
Pour contrôler les valeurs de la LED RGB, vous utiliserez les sorties des potentiomètres (broche centrale) comme entrées analogiques.
L’Arduino Uno dispose de 6 entrées analogiques, étiquetées de A0 à A5 ; elles utilisent un convertisseur analogique-numérique (ADC) 10 bits avec 6 canaux.
Ce convertisseur analogique-numérique renverra un nombre de 0 à 1023 (1024 valeurs = 2¹⁰ = 10 bits), selon la tension mesurée sur un canal.
Nous modifierons le cycle de service PWM des composants LED en fonction de cette valeur.
Vous pouvez considérer un potentiomètre dans ce circuit comme un diviseur de tension : en tournant le bouton, la résistance de la broche centrale change, tout comme la tension.
Cela “divisera” la tension de 5V en deux parties si vous mesurez la tension entre la sortie et le 5V, et entre la sortie et la masse.
Étape 3 : Exemple de code Arduino RGB LCD
Maintenant que le câblage est terminé, il ne reste plus qu’à connecter l’Arduino à votre PC et téléverser le sketch.
Vous pouvez téléverser le code suivant via l’Arduino IDE, vous pouvez copier le code en cliquant sur le bouton en haut à droite du champ de code.
/*Example sketch to control an RGB LED with Arduino using potentiometers
More info: https://www.makerguides.com */
//Definition of pins: outputs
#define redPin 11
#define greenPin 10
#define bluePin 9
//Definition of pins: analog inputs
#define redPot A0
#define greenPot A1
#define bluePot A2
int redVal, greenVal, blueVal; // RGB component values
void setup() {
//Pin definitions
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(redPot, INPUT);
pinMode(greenPot, INPUT);
pinMode(bluePot, INPUT);
Serial.begin(9600);
}
void loop() {
//Reading potentiometer values
//When the pot is in the leftmost position, the voltage reading is 0
redVal = analogRead(redPot)/4;
greenVal = analogRead(greenPot)/4;
blueVal = analogRead(bluePot)/4;
//Sets the individual colors with the pot values
analogWrite(redPin, redVal);
analogWrite(greenPin, greenVal);
analogWrite(bluePin, blueVal);
delay(50);
//Printing the values of Red, Green and Blue in a single line
Serial.print("R: "); Serial.print(redVal);
//The \t character creates a tab space between colors
Serial.print("\tG: "); Serial.print(greenVal);
//Final value is Serial.println to create a new line between readings
Serial.print("\tB: "); Serial.println(blueVal);
}
Comment fonctionne le code
La première étape est de définir les broches concernées, cela se fait avec la directive #define qui remplacera le mot-clé défini par la valeur souhaitée lors de la compilation du programme.
Ainsi, nous définissons les sorties LED rouge, verte et bleue comme les broches 11, 10 et 9 respectivement.
Nous faisons ensuite la même chose pour les entrées des potentiomètres, en utilisant les broches analogiques A0, A1 et A2.
J’ai aussi défini trois variables globales, une pour chaque broche RGB. Ces valeurs sont des entiers, à utiliser chaque fois que vous manipulez des nombres entiers.
La valeur d’un entier peut aller de -2 147 483 648 à 2 147 483 647. Si vous souhaitez être plus efficace avec la mémoire de l’Arduino, vous pouvez utiliser le type de données byte , qui va de 0 à 255.
Ce n’est pas nécessaire dans cet exemple simple, mais c’est utile à garder en tête pour des sketches plus complexes.
//Definition of pins: outputs #define redPin 11 #define greenPin 10 #define bluePin 9 int redVal, greenVal, blueVal; //RGB component values
Dans la fonction setup() du sketch, nous définissons les broches LED comme sorties, et les broches des potentiomètres comme entrées avec la fonction pinMode().
Ensuite, nous lançons le buffer série à 9600 bauds avec Serial.begin(9600), cette fonction vous permettra de lire les valeurs de couleur que vous afficherez dans une section ultérieure du sketch.
void setup() {
//Pin definitions
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(redPot, INPUT);
pinMode(greenPot, INPUT);
pinMode(bluePot, INPUT);
Serial.begin(9600);
Passons maintenant à la fonction loop(). D’abord, nous lisons les valeurs des potentiomètres.
Cela se fait avec la fonction analogRead(), où vous spécifiez la broche et elle renvoie une valeur entre 0 et 1023, comme mentionné précédemment.
Malheureusement, pour contrôler les LEDs avec la fonction analogWrite(), il faut lui fournir des valeurs entre 0 et 255, pour cela nous divisons la valeur lue par 4 et l’assignons à nos entiers.
//Reading potentiometer values //When the pot is in the leftmost position, the voltage reading is 0V redVal = analogRead(redPot)/4; greenVal = analogRead(greenPot)/4; blueVal = analogRead(bluePot)/4;
À cette étape, j’utilise les sorties PWM de l’Arduino pour allumer les broches rouge, verte et bleue de la LED RGB avec les valeurs entières obtenues des potentiomètres, il suffit de spécifier la broche et un nombre entre 0 et 255.
//Sets the individual colors with the pot values analogWrite(redPin, redVal); analogWrite(greenPin, greenVal); analogWrite(bluePin, blueVal);
Ensuite, j’introduis un petit délai dans le code, cela évite que le moniteur série défile trop vite tout en gardant la LED RGB réactive aux entrées.
Ce délai dure 50 millisecondes : 50 millièmes de seconde ou 0,05 seconde.
Vous pouvez ajuster ce délai à votre convenance, notez simplement qu’un délai trop long ralentira aussi la mise à jour des valeurs RGB.
delay(50);
Enfin, pour vérifier les valeurs RGB affichées sur la LED, nous les afficherons dans le moniteur série.
Pour plus de clarté, elles seront affichées sur une seule ligne. Pour cela, nous utiliserons la fonction Serial.print().
Ici, j’affiche la lettre correspondant à chaque composant de la LED RGB et sa valeur écrite. J’ai utilisé le caractère d’échappement \t pour créer un espacement tabulation entre chaque couleur, escape characters suivi d’un antislash, ces caractères n’apparaissent pas dans la chaîne affichée, car ils ont des fonctions spéciales.
De plus, la dernière fonction série est Serial.println(), qui assure que le message suivant s’affiche sur une nouvelle ligne.
Serial.print("R: "); Serial.print(redVal);
Serial.print("\\tG: "); Serial.print(greenVal);
Serial.print("\\tB: "); Serial.println(blueVal);
Pour voir les messages dans le moniteur série, appuyez sur Ctrl+Shift+M dans l’IDE Arduino, ou cliquez sur l’icône de loupe. Assurez-vous que le débit en bauds est réglé sur 9600 pour lire correctement les messages.
Vous devriez voir quelque chose de similaire à l’image suivante :

Voilà ! Si vous avez suivi les étapes correctement, vous devriez pouvoir contrôler la LED RGB et produire toutes sortes de couleurs avec les potentiomètres.
Couleur additive
La propriété des lumières de différentes couleurs qui se combinent pour créer une nouvelle couleur s’appelle la couleur additive.
Cette propriété permet aux écrans d’afficher environ 16 millions de nuances de couleur : en réglant les lumières rouge, verte et bleue sur une valeur de 0 à 255, comme dans notre projet.
Vous pouvez essayer quelques combinaisons de base montrées dans l’image ci-dessous, ou aller sur un color picker et créer la vôtre !
Les résultats peuvent varier cependant : certains composants des LEDs RGB sont plus puissants que d’autres et peuvent nécessiter un ajustement.

Conclusion
Dans cet article, je vous ai montré comment utiliser une LED RGB avec Arduino : son câblage, les sorties analogiques nécessaires, et un circuit simple qui montre comment personnaliser facilement la couleur de la LED.
Si vous avez des questions ou des suggestions pour ce tutoriel, laissez un commentaire ci-dessous.
Je serais ravi de vous aider !

