Skip to main content
Replace msTime % 5000 with (msTime - startTime) >= 5000
Source Link
user31481
user31481

EDIT: Modify the code according @Edgar's comment.

Check this alternative. The idea is executing code every 5 and 1 seconds. The blink is true when you need the LED blinking. I don't know how long will you need to keep it blinking, but this keeps it as long as results.value keep being equals to 0xFF6897.

#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int led = 12;
const int inPin = 0;

void setup() {
  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);
  Serial.begin(9600);
  irrecv.enableIRIn();
}

void loop() {
  static boolean blink = false;
  static unsigned long startTemp = 0;
  static unsigned long startBlink = 0;
  unsigned long msTime = millis();

  //  Check for room temp every 5 seconds.
  if (msTime %- 5000startTemp ==>= 05000) {
    startTemp = msTime;
    int value = analogRead(inPin);
    float millivolts = (value / 1024.0 ) * 5000;
    float celsius = millivolts / 10;
    Serial.println(celsius, 1);
  }

  //  Blink every 1 second
  if (msTime %- 1000startBlink ==>= 01000 && blink) {
    startBlink = msTime;
    int state = digitalRead(led);
    digitalWrite(led, !state);
    //  Change blink to stop blinking after one pass (HIGH/LOW).
    //  Modify if you need to keep blinking for longer time.
    blink = (state == LOW);    
  }
  
  if(irrecv.decode(&results)) {
    blink = (results.value == 0xFF6897);        
    irrecv.resume(); //receive the next value
  }
}

Check this alternative. The idea is executing code every 5 and 1 seconds. The blink is true when you need the LED blinking. I don't know how long will you need to keep it blinking, but this keeps it as long as results.value keep being equals to 0xFF6897.

#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int led = 12;
const int inPin = 0;

void setup() {
  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);
  Serial.begin(9600);
  irrecv.enableIRIn();
}

void loop() {
  static boolean blink = false;
  unsigned long msTime = millis();

  //  Check for room temp every 5 seconds.
  if (msTime % 5000 == 0) {
    int value = analogRead(inPin);
    float millivolts = (value / 1024.0 ) * 5000;
    float celsius = millivolts / 10;
    Serial.println(celsius, 1);
  }

  //  Blink every 1 second
  if (msTime % 1000 == 0 && blink) {
    int state = digitalRead(led);
    digitalWrite(led, !state);
    //  Change blink to stop blinking after one pass (HIGH/LOW).
    //  Modify if you need to keep blinking for longer time.
    blink = (state == LOW);    
  }
  
  if(irrecv.decode(&results)) {
    blink = (results.value == 0xFF6897);        
    irrecv.resume(); //receive the next value
  }
}

EDIT: Modify the code according @Edgar's comment.

Check this alternative. The idea is executing code every 5 and 1 seconds. The blink is true when you need the LED blinking. I don't know how long will you need to keep it blinking, but this keeps it as long as results.value keep being equals to 0xFF6897.

#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int led = 12;
const int inPin = 0;

void setup() {
  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);
  Serial.begin(9600);
  irrecv.enableIRIn();
}

void loop() {
  static boolean blink = false;
  static unsigned long startTemp = 0;
  static unsigned long startBlink = 0;
  unsigned long msTime = millis();

  //  Check for room temp every 5 seconds.
  if (msTime - startTemp >= 5000) {
    startTemp = msTime;
    int value = analogRead(inPin);
    float millivolts = (value / 1024.0 ) * 5000;
    float celsius = millivolts / 10;
    Serial.println(celsius, 1);
  }

  //  Blink every 1 second
  if (msTime - startBlink >= 1000 && blink) {
    startBlink = msTime;
    int state = digitalRead(led);
    digitalWrite(led, !state);
    //  Change blink to stop blinking after one pass (HIGH/LOW).
    //  Modify if you need to keep blinking for longer time.
    blink = (state == LOW);    
  }
  
  if(irrecv.decode(&results)) {
    blink = (results.value == 0xFF6897);        
    irrecv.resume(); //receive the next value
  }
}
Source Link
user31481
user31481

Check this alternative. The idea is executing code every 5 and 1 seconds. The blink is true when you need the LED blinking. I don't know how long will you need to keep it blinking, but this keeps it as long as results.value keep being equals to 0xFF6897.

#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int led = 12;
const int inPin = 0;

void setup() {
  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);
  Serial.begin(9600);
  irrecv.enableIRIn();
}

void loop() {
  static boolean blink = false;
  unsigned long msTime = millis();

  //  Check for room temp every 5 seconds.
  if (msTime % 5000 == 0) {
    int value = analogRead(inPin);
    float millivolts = (value / 1024.0 ) * 5000;
    float celsius = millivolts / 10;
    Serial.println(celsius, 1);
  }

  //  Blink every 1 second
  if (msTime % 1000 == 0 && blink) {
    int state = digitalRead(led);
    digitalWrite(led, !state);
    //  Change blink to stop blinking after one pass (HIGH/LOW).
    //  Modify if you need to keep blinking for longer time.
    blink = (state == LOW);    
  }
  
  if(irrecv.decode(&results)) {
    blink = (results.value == 0xFF6897);        
    irrecv.resume(); //receive the next value
  }
}