Ir signals not intefering with the next ir signal?

Hi there,
so i'm creating an arduino car,and i'm gonna controll it with an ir reciever to recieve a remote signal,so what i'm trying to do is that i want it to recieve a specific signal like for example a signal to go forward and one to go backward and one to stop,and it does work when i send it specific signal,but when it recieves a signal to do something,and i try to give it another signal like stopping it stays on the ir signal it recieves FIRST,and i'm sure i put the "ir.resume()" function at the end this is my code

#include <IRremote.h>
//the defintions
#define irpin A0
#define led LED_BUILTIN
#define enable_1 5
#define enable_2 6
#define enable_3 9
#define enable_4 11
#define forward_1 4
#define forward_2 2
#define forward_3 8
#define forward_4 A2
#define backward_1 3
#define backward_2 7
#define backward_3 10
#define backward_4 A1
IRrecv ir(irpin);
decode_results results;
void setup() {
  // put your setup code here, to run once:
  pinMode(enable_1, OUTPUT);
  pinMode(enable_2, OUTPUT);
  pinMode(enable_3, OUTPUT);
  pinMode(enable_4, OUTPUT);
  pinMode(forward_1, OUTPUT);
  pinMode(forward_2, OUTPUT);
  pinMode(forward_3, OUTPUT);
  pinMode(forward_4, OUTPUT);
  pinMode(backward_1, OUTPUT);
  pinMode(backward_2, OUTPUT);
  pinMode(backward_3, OUTPUT);
  pinMode(backward_4, OUTPUT);
  Serial.begin(9600);
  ir.enableIRIn();
}
void stop() {
  analogWrite(enable_1, 0);
  analogWrite(enable_2, 0);
  analogWrite(enable_3, 0);
  analogWrite(enable_4, 0);
}
void loop() {
  // put your main code here, to run repeatedly
  unsigned long code = results.value;
  if (ir.decode(&results)) {
    Serial.println(ir.decodedIRData.decodedRawData, HEX);
  }
  if (code == 0xFF02FD) {
    //this is to go forward
    Serial.println(ir.decodedIRData.decodedRawData, HEX);
    void stop();
    digitalWrite(led, HIGH);
    analogWrite(enable_1, 255);
    analogWrite(enable_2, 255);
    analogWrite(enable_3, 255);
    analogWrite(enable_4, 255);
    digitalWrite(forward_1, HIGH);
    digitalWrite(forward_2, HIGH);
    digitalWrite(forward_3, HIGH);
    digitalWrite(forward_4, HIGH);
    digitalWrite(backward_1, LOW);
    digitalWrite(backward_2, LOW);
    digitalWrite(backward_3, LOW);
    digitalWrite(backward_4, LOW);
  }
  if (code == 0xFF22DD) {
    //this is to go backward
    Serial.println(ir.decodedIRData.decodedRawData, HEX);
    void stop();
    digitalWrite(led, HIGH);
    analogWrite(enable_1, 255);
    analogWrite(enable_2, 255);
    analogWrite(enable_3, 255);
    analogWrite(enable_4, 255);
    digitalWrite(forward_1, LOW);
    digitalWrite(forward_2, LOW);
    digitalWrite(forward_3, LOW);
    digitalWrite(forward_4, LOW);
    digitalWrite(backward_1, HIGH);
    digitalWrite(backward_2, HIGH);
    digitalWrite(backward_3, HIGH);
    digitalWrite(backward_4, HIGH);
    if (code == 0xFFC23D) {
      // and this is to stop
      void stop();
      analogWrite(enable_1, 0);
      analogWrite(enable_2, 0);
      analogWrite(enable_3, 0);
      analogWrite(enable_4, 0);
      digitalWrite(forward_1, LOW);
      digitalWrite(forward_2, LOW);
      digitalWrite(forward_3, LOW);
      digitalWrite(forward_4, LOW);
      digitalWrite(backward_1, HIGH);
      digitalWrite(backward_2, HIGH);
      digitalWrite(backward_3, HIGH);
      digitalWrite(backward_4, HIGH);
    }
  }
  ir.resume();
}

also Ramadan Mubarak everybody!

Check your use of braces. The following if clause is probably not terminated properly.

Hint: use CRTL-T in the Arduino IDE editor to auto-format the code, and look at the indentation.

  if (code == 0xFF22DD) {
  • You might be needing a brace here:
    digitalWrite(backward_3, HIGH);
    digitalWrite(backward_4, HIGH);
    }    // <——-<<<<<

     if (code == 0xFFC23D) {
      // and this is to stop
      void stop();
      analogWrite(enable_1, 0);

  • Suggest you place { and } on lines by themselves.

i added it but still no difference

Show us what you have now, place { and } on lines by themselves.

i did this:

  if (code == 0xFF22DD) {
    //this is to go backward
    Serial.println(ir.decodedIRData.decodedRawData, HEX);
    void stop();
    digitalWrite(led, HIGH);
    analogWrite(enable_1, 255);
    analogWrite(enable_2, 255);
    analogWrite(enable_3, 255);
    analogWrite(enable_4, 255);
    digitalWrite(forward_1, LOW);
    digitalWrite(forward_2, LOW);
    digitalWrite(forward_3, LOW);
    digitalWrite(forward_4, LOW);
    digitalWrite(backward_1, HIGH);
    digitalWrite(backward_2, HIGH);
    digitalWrite(backward_3, HIGH);
    digitalWrite(backward_4, HIGH);
    }

Try this code:

#include <IRremote.h>
//the defintions
#define irpin A0
#define led LED_BUILTIN
#define enable_1 5
#define enable_2 6
#define enable_3 9
#define enable_4 11
#define forward_1 4
#define forward_2 2
#define forward_3 8
#define forward_4 A2
#define backward_1 3
#define backward_2 7
#define backward_3 10
#define backward_4 A1
IRrecv ir(irpin);
decode_results results;
//----------------------------------------------------------------------
void setup() {
  // put your setup code here, to run once:
  pinMode(enable_1, OUTPUT);
  pinMode(enable_2, OUTPUT);
  pinMode(enable_3, OUTPUT);
  pinMode(enable_4, OUTPUT);
  pinMode(forward_1, OUTPUT);
  pinMode(forward_2, OUTPUT);
  pinMode(forward_3, OUTPUT);
  pinMode(forward_4, OUTPUT);
  pinMode(backward_1, OUTPUT);
  pinMode(backward_2, OUTPUT);
  pinMode(backward_3, OUTPUT);
  pinMode(backward_4, OUTPUT);
  Serial.begin(9600);
  ir.enableIRIn();
}
//----------------------------------------------------------------------
void stop() {
  analogWrite(enable_1, 0);
  analogWrite(enable_2, 0);
  analogWrite(enable_3, 0);
  analogWrite(enable_4, 0);
}
//----------------------------------------------------------------------
void loop() {
  // put your main code here, to run repeatedly
  unsigned long code = results.value;
  if (IrReceiver.decode()) {
    code = IrReceiver.decodedIRData.decodedRawData;
    Serial.println(code, HEX);
  }
  //if (code == 0x9768FF00 ) { // Debug
  if (code == 0xFF02FD) {   // original
    //this is to go forward
    Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
    stop();
    digitalWrite(led, HIGH);
    analogWrite(enable_1, 255);
    analogWrite(enable_2, 255);
    analogWrite(enable_3, 255);
    analogWrite(enable_4, 255);
    digitalWrite(forward_1, HIGH);
    digitalWrite(forward_2, HIGH);
    digitalWrite(forward_3, HIGH);
    digitalWrite(forward_4, HIGH);
    digitalWrite(backward_1, LOW);
    digitalWrite(backward_2, LOW);
    digitalWrite(backward_3, LOW);
    digitalWrite(backward_4, LOW);
  }
  //if (code == 0xCF30FF00 ) { // Debug
  if (code == 0xFF22DD) {   // original
    //this is to go backward
    Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
    stop();
    digitalWrite(led, HIGH);
    analogWrite(enable_1, 255);
    analogWrite(enable_2, 255);
    analogWrite(enable_3, 255);
    analogWrite(enable_4, 255);
    digitalWrite(forward_1, LOW);
    digitalWrite(forward_2, LOW);
    digitalWrite(forward_3, LOW);
    digitalWrite(forward_4, LOW);
    digitalWrite(backward_1, HIGH);
    digitalWrite(backward_2, HIGH);
    digitalWrite(backward_3, HIGH);
    digitalWrite(backward_4, HIGH);
  }
  //if (code == 0xE718FF00 ) { // Debug
  if (code == 0xFFC23D) {   // original
    Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
    // and this is to stop
    stop();
    analogWrite(enable_1, 0);
    analogWrite(enable_2, 0);
    analogWrite(enable_3, 0);
    analogWrite(enable_4, 0);
    digitalWrite(forward_1, LOW);
    digitalWrite(forward_2, LOW);
    digitalWrite(forward_3, LOW);
    digitalWrite(forward_4, LOW);
    digitalWrite(backward_1, HIGH);
    digitalWrite(backward_2, HIGH);
    digitalWrite(backward_3, HIGH);
    digitalWrite(backward_4, HIGH);
  }
  ir.resume();
}

  • You do not need void when you call the function.

  if (code == 0xFF02FD) {
    //this is to go forward
    Serial.println(ir.decodedIRData.decodedRawData, HEX);
    void stop();

Use:

  if (code == 0xFF02FD) {
    //this is to go forward
    Serial.println(ir.decodedIRData.decodedRawData, HEX);
    stop();  //   <———<<<<<

i did it and still no difference!

for some reeason your code started to recieve codes that are not even emitted by the remote,like it randomly recieves a signal without the remote?

You probably have other mistakes. Post the revised code (ALL of it), using code tags.

Look your code at simulator:
I modified this line --> unsigned long code = results.value;
to unsigned long code = 0;

it worked fine in the simulation

#include <IRremote.h>
//the defintions
#define irpin A0
#define led LED_BUILTIN
#define enable_1 5
#define enable_2 6
#define enable_3 9
#define enable_4 11
#define forward_1 4
#define forward_2 2
#define forward_3 8
#define forward_4 A2
#define backward_1 3
#define backward_2 7
#define backward_3 10
#define backward_4 A1
IRrecv ir(irpin);
decode_results results;
void setup() {
  // put your setup code here, to run once:
  pinMode(enable_1, OUTPUT);
  pinMode(enable_2, OUTPUT);
  pinMode(enable_3, OUTPUT);
  pinMode(enable_4, OUTPUT);
  pinMode(forward_1, OUTPUT);
  pinMode(forward_2, OUTPUT);
  pinMode(forward_3, OUTPUT);
  pinMode(forward_4, OUTPUT);
  pinMode(backward_1, OUTPUT);
  pinMode(backward_2, OUTPUT);
  pinMode(backward_3, OUTPUT);
  pinMode(backward_4, OUTPUT);
  Serial.begin(9600);
  ir.enableIRIn();
}
void stop() {
  analogWrite(enable_1, 0);
  analogWrite(enable_2, 0);
  analogWrite(enable_3, 0);
  analogWrite(enable_4, 0);
}
void loop() {
  // put your main code here, to run repeatedly
  unsigned long code = results.value;
  if (ir.decode(&results)) {
    Serial.println(ir.decodedIRData.decodedRawData, HEX);
  }
  if (code == 0xFF02FD) {
    //this is to go forward
    Serial.println(ir.decodedIRData.decodedRawData, HEX);
    stop();
    digitalWrite(led, HIGH);
    analogWrite(enable_1, 255);
    analogWrite(enable_2, 255);
    analogWrite(enable_3, 255);
    analogWrite(enable_4, 255);
    digitalWrite(forward_1, HIGH);
    digitalWrite(forward_2, HIGH);
    digitalWrite(forward_3, HIGH);
    digitalWrite(forward_4, HIGH);
    digitalWrite(backward_1, LOW);
    digitalWrite(backward_2, LOW);
    digitalWrite(backward_3, LOW);
    digitalWrite(backward_4, LOW);
  }
  if (code == 0xFF22DD) {
    //this is to go backward
    Serial.println(ir.decodedIRData.decodedRawData, HEX);
     stop();
    digitalWrite(led, HIGH);
    analogWrite(enable_1, 255);
    analogWrite(enable_2, 255);
    analogWrite(enable_3, 255);
    analogWrite(enable_4, 255);
    digitalWrite(forward_1, LOW);
    digitalWrite(forward_2, LOW);
    digitalWrite(forward_3, LOW);
    digitalWrite(forward_4, LOW);
    digitalWrite(backward_1, HIGH);
    digitalWrite(backward_2, HIGH);
    digitalWrite(backward_3, HIGH);
    digitalWrite(backward_4, HIGH);
    }
    if (code == 0xFFC23D) {
      // and this is to stop
       stop();
      analogWrite(enable_1, 0);
      analogWrite(enable_2, 0);
      analogWrite(enable_3, 0);
      analogWrite(enable_4, 0);
      digitalWrite(forward_1, LOW);
      digitalWrite(forward_2, LOW);
      digitalWrite(forward_3, LOW);
      digitalWrite(forward_4, LOW);
      digitalWrite(backward_1, HIGH);
      digitalWrite(backward_2, HIGH);
      digitalWrite(backward_3, HIGH);
      digitalWrite(backward_4, HIGH);
    }
    ir.resume();
  }