"if" qui transforme une variable

Bonjour !
j’ai fais un petit montage tout simple avec un Arduino UNO, un VS1838B (récépteur IR) et un relais. Lorsqu’on appuie sur le bon bouton de la télécommande, le relais s’active pendant une demi-seconde.
J’ai mis ce code dedans :

/*
 * 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;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  pinMode(4, 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");
  irrecv.enableIRIn(); // Start the receiver
  Serial.println("Enabled IRin");
}

void loop() {
  if (irrecv.decode(&results)) 
  {
    resultatIR = results.value;
    if(resultatIR = -15811)
    {
      digitalWrite(4, HIGH);
      delay(500);
      digitalWrite(4, LOW);
    }
    Serial.println(resultatIR);
    irrecv.resume(); // Receive the next value
  }
  delay(100);
}

mais, quel que soit le bouton pressé, le relais s’active et le Serial affiche -15811 à chaque fois.
Pourtant, si je commente la partie du if qui active le relais (donc pour avoir la valeur de chaque bouton), tous les boutons ont une valeur différente (celui qui m’interesse renvoie -15811).
en remplacent resultatIR par directement results.value dans le if, même chose.

Merci d’avance pour votre aide

Un test c'est == :

    if(resultatIR == -15811)

:confused: :confused: :confused: Oups...

Merci !

Notez que results.value n’est pas un int (c’est pour cela que vous avez à utiliser des valeurs négatives..) vous tronquez / modifiez la vraie valeur lue en faisantresultatIR = results.value;