0% ont trouvé ce document utile (0 vote)
0 vues12 pages

Programme Led RBG

Le document présente un code Arduino utilisant la bibliothèque IRremote pour contrôler une LED RGB via une télécommande infrarouge. Il permet de changer la couleur de la LED, d'ajuster son intensité, et d'activer une transition automatique entre les couleurs. Les commandes IR spécifiques sont associées à des actions précises, comme allumer ou éteindre la LED, ou modifier l'intensité lumineuse.

Transféré par

Fâ Tï
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
0 vues12 pages

Programme Led RBG

Le document présente un code Arduino utilisant la bibliothèque IRremote pour contrôler une LED RGB via une télécommande infrarouge. Il permet de changer la couleur de la LED, d'ajuster son intensité, et d'activer une transition automatique entre les couleurs. Les commandes IR spécifiques sont associées à des actions précises, comme allumer ou éteindre la LED, ou modifier l'intensité lumineuse.

Transféré par

Fâ Tï
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

#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).

Vous aimerez peut-être aussi