Hello
Its my first post hire because i cant find solution for my problem
So I make IR receiver with 4 relay who control my lights in home and i use remote from my TV Samsung and everything work just fine (switch on off lights) but problem is I have only four buttons free from my remote and i whant with same knob to make on\off and toggle one channel . How to make for example first channel when i press knob once to switch on , second turn off but if i press for 4-5 sec. to toggle?
Thanks
Hire is my code
const int irPin = 4;
const int Relay1 = 0;
const int Relay2 = 1;
const int Relay3 = 2;
const int Relay4 = 3;
boolean Relay1State = false;
boolean Relay2State = false;
boolean Relay3State = false;
boolean Relay4State = false;
void setup() {
//Serial.begin(115200);
pinMode(irPin, INPUT);
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
pinMode(Relay3, OUTPUT);
pinMode(Relay4, OUTPUT);
}
void loop() {
int key = getIrKey();
if(key == 17845)
{
Relay1State = !Relay1State;
if(Relay1State == true)
digitalWrite(Relay1, HIGH);
else
digitalWrite(Relay1, LOW);
}
if(key == 18355)
{
Relay2State = !Relay2State;
if(Relay2State == true)
digitalWrite(Relay2, HIGH);
else
digitalWrite(Relay2, LOW);
}
if(key == 19120)
{
Relay3State = !Relay3State;
if(Relay3State == true)
digitalWrite(Relay3, HIGH);
else
digitalWrite(Relay3, LOW);
}
if(key == 18610)
{
Relay4State = !Relay4State;
if(Relay4State == true)
digitalWrite(Relay4, HIGH);
else
digitalWrite(Relay4, LOW);
}
}
int getIrKey(){
int len = pulseIn(irPin,LOW);
int key, temp;
key = 0;
//Serial.print("len=");
//Serial.println(len);
if(len > 3500) {
for(int i=1;i<=32;i++){
temp = pulseIn(irPin,HIGH);
if(temp > 1000)
key = key + (1<<(i-17));
}
}
if(key < 0 )
key = -key;
//if(key)
//Serial.println(key);
delay(250);
return key;
}