I have a remote where there are 3 buttons and 8 relay module. I want such a condition where when 1st button is pressed then 1st relay should get energize and when 2nd button is pressed within 3 sec then 2nd relay should get energize.
But for 2nd button if it exceeds more than 3 sec, the 1st relay should get deenergize.
I am using millis() but it is not working.
//1st button===33444015
//2nd button===33478695
//3rd button===33486855
#include <IRremote.h>
const int RPIN = 7;
const unsigned int interval = 3000;
unsigned long mm = 0;
const byte Relay1Pin = 3;
const byte Relay2Pin = 4;
const byte Relay3Pin = 5;
IRrecv irrecv(RPIN);
decode_results results;
void setup()
{
pinMode(Relay1Pin, OUTPUT);
pinMode(Relay2Pin, OUTPUT);
pinMode(Relay3Pin, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop()
{
unsigned long currentTime = millis();
if (irrecv.decode(&results))
{
Serial.println(results.value);
delay(10);
if (results.value == 33444015)
{
digitalWrite(Relay1Pin, LOW);
mm = currentTime;
if (currentTime - mm <= interval)
{
if (results.value == 33478695)
{
digitalWrite(Relay2Pin, LOW);
}
}
}
digitalWrite(Relay1Pin, HIGH);
digitalWrite(Relay2Pin, HIGH);
if (results.value == 33444015)
{
digitalWrite(Relay1Pin, LOW);
mm = currentTime;
if (currentTime - mm <= interval)
{
if (results.value == 33486855)
{
digitalWrite(Relay3Pin, LOW);
}
}
}
digitalWrite(Relay1Pin, HIGH);
digitalWrite(Relay3Pin, HIGH);
irrecv.resume();
}
}
Please let me know if any solution for this.