Attribut d'une classe qui passe à false après avoir été mis à true

Bonjour.
Je suis en train de programmer un allumage de diode à partir d'un bouton poussoir: quand on appuie dessus, la diode s'allume et doit rester allumée pendant 1 minute.
J'ai créé une classe LedEclairage et une classe BoutonPoussoir (avec un attribut qui s'appelle led et qui permet d'exécuter la méthode allumerLed de la led qui a été créée dans le programme principal).
J'ai un problème avec l'attribut allumee de la led. Quand on appuie sur le bouton, il passe bien à true (j'ai 1 qui s'affiche dans le moniteur série lors de l'appel de allumerLed). Mais aux deux affichages suivants (appel de ledEclairage.miseAJour et Serial.println(ledEclairage.allumee) dans le loop), elle repasse à false (il y a deux 0 affichés dans le moniteur série).
Je ne comprends pas pourquoi ça devient false.

Voici la partie du code concernée:

class LedEclairage
{
   
   
    unsigned long previousMillis;
    int pinLed;
  public:
   bool allumee; //Vrai si la led est allumée, faux sinon
    LedEclairage(int pinLedBlanche)
    {
      previousMillis = 0;
      allumee = false;
      pinLed = pinLedBlanche;
      pinMode(pinLed, OUTPUT);
    };
    void allumerLed()
    {
      digitalWrite(pinLed, HIGH);
      previousMillis = millis();
      allumee = true;
      Serial.println(allumee);
    };
    void miseAJour()
    {
      Serial.println(allumee);
      if (allumee)
      {
        //Serial.println("ouiiiiiiiiiiiiiii");
        unsigned long currentMillis = millis();
        if (currentMillis - previousMillis >= 60000) {
          digitalWrite(pinLed, LOW);
          allumee = false;
        }
      }
    };
};

//**************************************************************************************

class BoutonPoussoir
{
    int pinBouton;
    LedEclairage led;
  public:
    BoutonPoussoir(int pinBoutonPoussoir, LedEclairage &ledEclair): led(ledEclair)
    {
      pinBouton = pinBoutonPoussoir;
      pinMode(pinBouton, INPUT_PULLUP);
    };

    void miseAJour()
    {
      boolean etatBouton = digitalRead(pinBouton);
      if (etatBouton == 0) { //0 correspond au bouton enfoncé
        led.allumerLed();
      }
    };
};

//***********************************************************************************************************************
//Programme principal

LedEclairage ledEclairage(3); //3=pin de la led d'éclairage
BoutonPoussoir bouton(2, ledEclairage); //2 = pin du bouton poussoir 

void setup()
{

  Serial.begin(9600);
}

void loop()
{

  bouton.miseAJour();
  ledEclairage.miseAJour();
  Serial.println(ledEclairage.allumee);

}

Je viens du java où tous les objets sont manipulés avec des références (c'est peut-être ça le problème ?) et je ne connais pas trop le c++.
Merci de m'indiquer pourquoi l'attribut allumee est à false alors qu'il a été mis à true juste avant.
:slight_smile: