#include <IRremote.
h>
int redPin= 9;
int greenPin= 5;
int bluePin= 10;
int RECV_PIN = 11; // define input pin on Arduino
void setup()
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
[Link](115200);
[Link]("IR Receive test");
[Link](RECV_PIN , ENABLE_LED_FEEDBACK);
// fonction de "translation"
void colorTransition(int delayTime) {
// Rouge -> Vert
for (int i = 0; i <= 255; i++) {
analogWrite(redPin, 255 - i);
analogWrite(greenPin, i);
analogWrite(bluePin, 0);
delay(delayTime);
// Vert -> Bleu
for (int i = 0; i <= 255; i++) {
analogWrite(redPin, 0);
analogWrite(greenPin, 255 - i);
analogWrite(bluePin, i);
delay(delayTime);
// Bleu -> Rouge
for (int i = 0; i <= 255; i++) {
analogWrite(redPin, i);
analogWrite(greenPin, 0);
analogWrite(bluePin, 255 - i);
delay(delayTime);
void loop()
if ([Link]())
[Link]([Link], HEX);
[Link]();
//BOUTTON OFF
if ([Link]==0x0){
digitalWrite(redPin, LOW);
digitalWrite(greenPin,LOW);
digitalWrite(bluePin, LOW);}
//BOUTTON 1
if ([Link]==0x10){
digitalWrite(redPin, HIGH);
digitalWrite(greenPin,LOW );
digitalWrite(bluePin, LOW);}
//BOUTTON 2
else if ([Link]==0x11){
digitalWrite(redPin, LOW);
digitalWrite(greenPin,HIGH);
digitalWrite(bluePin, LOW);}
//BOUTTON 3
else if ([Link]==0x12){
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, HIGH);}
//BOUTTON 4
else if ([Link]==0x14){
digitalWrite(redPin, HIGH);
digitalWrite(greenPin,HIGH );
digitalWrite(bluePin, LOW);}
//BOUTTON 5
else if ([Link]==0x15){
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, HIGH);}
//BOUTTON 6
else if ([Link]==0x16){
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, HIGH);}
//BOUTTON 7
else if ([Link]==0x18){
colorTransition(10);}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
include <IRremote.h>
int redPin = 9;
int greenPin = 5;
int bluePin = 10;
int RECV_PIN = 11;
int intensity = 128; // Valeur initiale de l’intensité (0 à 255)
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
[Link](115200);
[Link]("IR Receive test");
[Link](RECV_PIN , ENABLE_LED_FEEDBACK);
// Fonction de "translation" automatique entre les couleurs
void colorTransition(int delayTime) {
// Rouge -> Vert
for (int i = 0; i <= 255; i++) {
analogWrite(redPin, 255 - i);
analogWrite(greenPin, i);
analogWrite(bluePin, 0);
delay(delayTime);
// Vert -> Bleu
for (int i = 0; i <= 255; i++) {
analogWrite(redPin, 0);
analogWrite(greenPin, 255 - i);
analogWrite(bluePin, i);
delay(delayTime);
// Bleu -> Rouge
for (int i = 0; i <= 255; i++) {
analogWrite(redPin, i);
analogWrite(greenPin, 0);
analogWrite(bluePin, 255 - i);
delay(delayTime);
void loop() {
if ([Link]()) {
[Link]([Link], HEX);
uint8_t command = [Link];
[Link]();
static uint8_t lastColor = 0xFF; // Stocke le dernier bouton de couleur utilisé
// BOUTON OFF
if (command == 0x0) {
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
lastColor = 0xFF; // Aucune couleur
// COULEURS
else if (command == 0x10) { // Rouge
analogWrite(redPin, intensity);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
lastColor = 0x10;
else if (command == 0x11) { // Vert
analogWrite(redPin, 0);
analogWrite(greenPin, intensity);
analogWrite(bluePin, 0);
lastColor = 0x11;
else if (command == 0x12) { // Bleu
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, intensity);
lastColor = 0x12;
else if (command == 0x14) { // Jaune
analogWrite(redPin, intensity);
analogWrite(greenPin, intensity);
analogWrite(bluePin, 0);
lastColor = 0x14;
else if (command == 0x15) { // Cyan
analogWrite(redPin, 0);
analogWrite(greenPin, intensity);
analogWrite(bluePin, intensity);
lastColor = 0x15;
else if (command == 0x16) { // Magenta
analogWrite(redPin, intensity);
analogWrite(greenPin, 0);
analogWrite(bluePin, intensity);
lastColor = 0x16;
// TRANSITION AUTOMATIQUE
else if (command == 0x18) {
colorTransition(10);
}
// BOUTON UP
else if (command == 0xA) {
intensity = min(intensity + 25, 255);
[Link]("Intensité + : ");
[Link](intensity);
// BOUTON DOWN
else if (command == 0x8) {
intensity = max(intensity - 25, 0);
[Link]("Intensité - : ");
[Link](intensity);
// Réappliquer la dernière couleur après un changement d’intensité
if (command == 0xA || command == 0x8) {
switch (lastColor) {
case 0x10: // Rouge
analogWrite(redPin, intensity);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
break;
case 0x11: // Vert
analogWrite(redPin, 0);
analogWrite(greenPin, intensity);
analogWrite(bluePin, 0);
break;
case 0x12: // Bleu
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, intensity);
break;
case 0x14: // Jaune
analogWrite(redPin, intensity);
analogWrite(greenPin, intensity);
analogWrite(bluePin, 0);
break;
case 0x15: // Cyan
analogWrite(redPin, 0);
analogWrite(greenPin, intensity);
analogWrite(bluePin, intensity);
break;
case 0x16: // Magenta
analogWrite(redPin, intensity);
analogWrite(greenPin, 0);
analogWrite(bluePin, intensity);
break;
}
Explication de code :
✅ 1. Bibliothèque utilisée
cpp
CopyEdit
#include <IRremote.h>
C’est la bibliothèque qui permet à l’Arduino de recevoir des signaux infrarouges (IR) d’une
télécommande.
Elle permet de lire les codes envoyés par chaque bouton de ta télécommande.
Tu utilises ici :
o [Link](...) pour initialiser le récepteur.
o [Link]() pour détecter si un signal IR est reçu.
o [Link] pour récupérer la commande envoyée.
o [Link]() pour réactiver le récepteur IR après une lecture.
✅ 2. Variables
cpp
CopyEdit
int redPin = 9;
int greenPin = 5;
int bluePin = 10;
int RECV_PIN = 11;
int intensity = 128; // Intensité initiale
redPin, greenPin, bluePin : les broches qui contrôlent les trois couleurs RGB de ta LED.
RECV_PIN : broche de réception IR (branchée au capteur).
intensity : niveau de luminosité (0 = éteint, 255 = puissance maximale).
✅ 3. Fonctions importantes
setup()
cpp
CopyEdit
void setup() {
pinMode(...);
[Link](...);
[Link](...);
}
Initialise les broches.
Lance la communication série pour débogage.
Active la réception IR.
loop()
C’est la boucle principale :
Si une commande IR est détectée, elle est lue et analysée.
En fonction de la commande, la LED change de couleur ou modifie son intensité.
✅ 4. Fonctionnement du programme
Action Description
Bouton couleur Allume la LED dans une couleur (avec l’intensité actuelle)
Bouton UP Augmente la luminosité
Bouton DOWN Diminue la luminosité
Bouton OFF Éteint tout
Bouton 7 Lance une transition de couleurs automatique
✅ 5. Codes IR utilisés
Chaque bouton de la télécommande envoie un code unique. Tu as assigné ceux-ci :
Bouton Code (Hex) Action
Power 0x00 OFF
1 0x10 Rouge
2 0x11 Vert
3 0x12 Bleu
4 0x14 Jaune
5 0x15 Cyan
6 0x16 Magenta
7 0x18 Transition de couleur
UP 0x1A + Intensité
Bouton Code (Hex) Action
DOWN 0x1B - Intensité
✅ 6. Fonction colorTransition()
cpp
CopyEdit
void colorTransition(int delayTime)
Crée une animation où la LED passe progressivement :
1. Du rouge au vert
2. Du vert au bleu
3. Du bleu au rouge
Cela se fait en augmentant ou diminuant les valeurs PWM (via analogWrite) des broches RGB.
✅ 7. Variation d’intensité
cpp
CopyEdit
intensity = min(intensity + 25, 255); // UP
intensity = max(intensity - 25, 0); // DOWN
Ensuite, on réapplique la dernière couleur avec la nouvelle intensité, en utilisant un switch selon la
dernière couleur mémorisée (lastColor).
✅ Résumé simple
Ton projet fait une commande IR d’une LED RGB :
Tu choisis la couleur avec la télécommande.
Tu règles l’intensité lumineuse avec UP/DOWN.
Tu peux lancer un effet de dégradé automatique (transition).