Allumer mes Led en meme temps

Bonsoir,

Je dispose d’un récepteur IR (Infrarouge), que j’ai bien branché et que selon le code reçu; allume un led différente (au niveau de la couleur et donc de la sortie). Lorsque j’appuie sur ma télécommande sur plusieurs touches en meme temps et que je voudrais donc allumer les différents led en meme temps, uniquement une led par une ne s’allume. En esperant que vous avez compris mon problème, voici mon code :

#include <IRremote.h>

const int RECV_PIN = 11;

const int LedVerte = 7;
const int LedRouge = 6;
const int LedBleu = 5;
const int LedBlanche = 8;
const int LedJaune = 4;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
pinMode(LedVerte, OUTPUT);
pinMode(LedRouge, OUTPUT);
pinMode(LedBleu, OUTPUT);
pinMode(LedBlanche, OUTPUT);
pinMode(LedJaune, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn();
}

void Red_Led(){
  digitalWrite(LedRouge,HIGH);
  delay(500);
  digitalWrite(LedRouge,LOW);
}

void Yellow_Led(){
  digitalWrite(LedJaune,HIGH);
  delay(500);
  digitalWrite(LedJaune,LOW);
}

void Green_Led(){
    digitalWrite(LedVerte,HIGH);
    delay(500);
    digitalWrite(LedVerte,LOW); 
}

void Blue_Led(){
    digitalWrite(LedBleu,HIGH);
    delay(500);
    digitalWrite(LedBleu,LOW); 
}

void White_Led(){
    digitalWrite(LedBlanche,HIGH);
    delay(500);
    digitalWrite(LedBlanche,LOW); 
}

void loop() {
  if (irrecv.decode(&results)) {
       
    switch (results.value) {
      case 1931:
       Red_Led();
        break;
        case 3979:
        Red_Led();
        break;
        case 1966:
      Green_Led();
        break;
        case 4014:
        Green_Led();
        break;
        case 1976:
        Yellow_Led();
        break;
        case 4024:
        Yellow_Led();
        break;
        case 1961:
        Blue_Led();
        break;
        case 4009:
        Blue_Led();
        break;
      default: 
        White_Led();
    }

    irrecv.resume();
  }
  //delay(100);
}

Cordialement,
KoRo.

Est-ce que la télécommande le permet ?

Bonjour, Tu utilises la fonction delay qui est une fonction bloquante. Jacques

Ce que je veut dire c’est que même si j’utilise une autre télécommande (donc 2 télécommandes en tout) et que sur la première j’appuie sur le bouton pour afficher la led rouge et que la deuxième la led bleu par exemple, et bien tant que la led rouge ne se s’éteint pas, la led bleu ne s’allumera pas.

Pour essayer d’expliquer ce problème, je dirais que l’arduino ne serais pas a “l’écoute” de signaux IR quand une led est allumée et ne reprend “l’écoute” qu’après l’extinction de la led.

Cela viendrais-t-il effectivement de mes delay ?

En tout cas merci pour vos réponses, et pepe je n’es pas encore eu l’occasion de pouvoir tester votre code, ce que je vais effectuer sous peu (d’ici demain ou après demain).

Re, Les delay() sont bloquant le processeur attend et ne fait rien. Pour des delay() non bloquants, on peut utiliser la fonction millis(). @+

bonjour, un peu normal ton problème. dans tes "routines" d'allumage de led, tu n'implémente pas le fait de recevoir un signal IR. dans le principe ca donnerait ca on allume la led X tant que l'on ne recoit pas d'autre instruction=>led allumée si on recoit une commande IR on quitte la routine pour repasser dans le loop et décoder la touche appuyée.

if(irrecv.decode(&results))
    {
      break;
    }