[SOLVED] IRremote not changing variable based on IR Code

Hey there, sorry if my coding is not that efficient, because I am new to coding. I have an alarm project that I made. I am trying to get IR functionality, but for some reason, It only checks for the IR code once.

#include <IRremote.hpp>

int IR_RECEIVE_PIN = 8;
int onPin = A2; // On button
int offPin = A3; // Off Button
int resetPin = A1; // Reset Button
int relayPin = 5; // Alarm
int lightReader = A0; // Light Reader
int x = 0; // Light Sensor
int y = 0; // Reset Button
int z = 0; // On Button
int v = 0; // Off Button
int m = 0; // Alarm State
int n = 0; //IR Value


void setup() 
{
  IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
  Serial.begin(9600);
  pinMode(relayPin, OUTPUT);
  pinMode(lightReader, INPUT);
  pinMode(resetPin, INPUT);
  pinMode(onPin, INPUT);
  pinMode(offPin, INPUT);
  digitalWrite(relayPin, HIGH);
}


void loop() 
{
  if (IrReceiver.decode()) 
  {
    n = IrReceiver.decodedIRData.decodedRawData, HEX;
  }
  z = analogRead(onPin);
  v = analogRead(offPin);
  x = analogRead(lightReader); 
  y = analogRead(resetPin);
  Serial.print("Reading toggle: "); //For Debugging
  Serial.println(n); // For Debugging

  
  if (z > 1010 || n == 12320) // On Buttom Pressed
    {
      m = 1;
      IrReceiver.resume();
    }  
  if (v > 1010 || n == 12321) // Off Button Pressed
    {
      m = 0;
      digitalWrite(relayPin, HIGH);
      IrReceiver.resume();
    }
  if (m == 1) // If Alarm is Armed
    {
    if (x < 50) // Light Sensor Sensitivity      {
       
      }
    else
      {
        digitalWrite(relayPin, LOW); // Alarm On
      }
    if (y > 1010)
      {
        digitalWrite(relayPin, HIGH); //Alarm Off
      }
    }
}

What happens if you Serial.print the related values before doing anything with them ?

That is what

Serial.println(n);

is for.

This code fixed it:

#include <IRremote.hpp>

int IR_RECEIVE_PIN = 8;
int onPin = A2; // On button
int offPin = A3; // Off Button
int resetPin = A1; // Reset Button
int relayPin = 5; // Alarm
int lightReader = A0; // Light Reader
int x = 0; // Light Sensor
int y = 0; // Reset Button
int z = 0; // On Button
int v = 0; // Off Button
int m = 0; // Alarm State
int n = 0; //IR Value


void setup() 
{
  IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
  Serial.begin(9600);
  pinMode(relayPin, OUTPUT);
  pinMode(lightReader, INPUT);
  pinMode(resetPin, INPUT);
  pinMode(onPin, INPUT);
  pinMode(offPin, INPUT);
  digitalWrite(relayPin, HIGH);
}


void loop() 
{
  if (IrReceiver.decode()) 
  {
    n = IrReceiver.decodedIRData.decodedRawData, HEX;
  }
  z = analogRead(onPin);
  v = analogRead(offPin);
  x = analogRead(lightReader); 
  y = analogRead(resetPin);
  Serial.print("Reading toggle: "); //For Debugging
  Serial.println(n); // For Debugging

  if (IrReceiver.decode()) 
  {
    n = IrReceiver.decodedIRData.decodedRawData, HEX;
  }
  
  if (z > 1010 || n == 12320) // On Buttom Pressed
    {
      m = 1;
      IrReceiver.resume();
    }  
  if (v > 1010 || n == 12321) // Off Button Pressed
    {
      m = 0;
      digitalWrite(relayPin, HIGH);
      IrReceiver.resume();
    }
  if (m == 1) // If Alarm is Armed
    {
      IrReceiver.resume();
    if (x < 50) // Light Sensor Sensitivity      
      {
       
      }
    else
      {
        digitalWrite(relayPin, LOW); // Alarm On
        IrReceiver.resume();
      }
    if (y > 1010)
      {
        digitalWrite(relayPin, HIGH); //Alarm Off
      }
    }
}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.