Arduino UNO qui "plante"

Salut !

j'essaye de faire un système avec un récepteur IR et un relais. Lorsqu'on appuie sur les deux bons boutons de la télécommande à la suite, le relais s'active.
je mets ce code dans la carte :

/*
 * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
 * An IR detector/demodulator must be connected to the input RECV_PIN.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */

#include <IRremote.h>

int RECV_PIN = 9;

int resultatIR;

int flag = 0;

IRrecv Capteur_IR(RECV_PIN);

decode_results Valeur_IR;

void setup()
{ pinMode(7, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  Serial.begin(9600);
  // In case the interrupt driver crashes on setup, give a clue
  // to the user what's going on.
  Serial.println("Enabling IRin");
  Capteur_IR.enableIRIn(); // Start the receiver
  Serial.println("Enabled IRin");
}

void loop()
{
  resultatIR = Valeur_IR.value;
  
  
  if(Capteur_IR.decode(&Valeur_IR)&&flag == 1)
  {
    if(resultatIR == -15811)
    {
      flag = 2;
      Serial.println("Play OK");
      Serial.print("flag = ");
      Serial.println(flag);
      Capteur_IR.resume(); 
    }
    else if(resultatIR != -1)
    {
      flag = 0;
      Capteur_IR.resume();
      Serial.print("flag = ");
      Serial.println(flag);
    }
  }

  if(Capteur_IR.decode(&Valeur_IR)&&flag == 0)
  {
    if(resultatIR == 23205)
    {
      flag = 1;
      Serial.println("6 OK");
      Serial.print("flag = ");
      Serial.println(flag);
      Capteur_IR.resume(); 
    }
    else if(resultatIR != -1)
    {
      flag = 0;
      Capteur_IR.resume();
      Serial.print("flag = ");
      Serial.println(flag);
    }
  }
   
  if(flag == 2)
  {
    Serial.println("Ouverture porte");
    digitalWrite(7, HIGH);
    delay(3000);
    digitalWrite(7, LOW);
    flag = 0;
  }
}

Les premières fois, ça marche super, le relais s'active, et si on fait un mauvais code , rien.
Mais, au bout de quelques essais, la carte "plante" et plus rien ne se passe, bon ou mauvais code. Le terminal série n'affiche plus rien, le relais ne fonctionne plus.
Est-ce une (probable) erreur dans le code ou peut-être ma télécommande qui n'est pas assez "précise" (souvent des faux numéros de bouton) ?

Merci de vos réponses !

Salut.
Ceci serait déjà plus normal :

  if(Capteur_IR.decode(&Valeur_IR)&&flag == 1)
  {
    resultatIR = Valeur_IR.value;

@+

ah, donc changer la variable seulement quand il y a un résultat ?

j'essaye

merci, c'est nickel

(j'avoue que souvent je me précipite pour poster ici au moindre bug sans réfléchir à pourquoi ce bug arrive :slight_smile:

Capteur_IR.decode() renseigne la structure Valeur_IR.
Si tu lis l'élément value de la structure avant que Capteur_IR.decode() l'ait renseignée, cela pose un problème, non ?

@+