#include "IRremote.h"
boolean fFar=0;
boolean fPL=0;
boolean fPR=0;
boolean fSalon=0;
const int Far=3;
const int PL=4;
const int PR=5;
const int Salon=6;
int flag=0;
unsigned long previousMillisPL = 0;
unsigned long previousMillisPR = 0;
const long period = 1000;
IRrecv irrecv(2);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(Far,OUTPUT);
pinMode(PL,OUTPUT);
pinMode(PR,OUTPUT);
pinMode(Salon,OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
if ( irrecv.decode( &results )) {
switch ( results.value ) {
case 0xFF0CF3:
fFar = !fFar;
break;
case 0xFF18E7:
fSalon = !fSalon;
break;
case 0xFF5EA1:
fPL = !fPL;
if (fPR) fPR = false;
break;
case 0xFF08F7:
fPR = !fPR;
if (fPL) fPL = false;
break;
default:
Serial.println( results.value, HEX );
}
if (fFar) {Serial.println("Svet enables");}
else {Serial.println("Svet disable");}
if (fPL) {Serial.println("Pulse left enables");}
else {Serial.println("Pulse left disable");}
if (fPR) {Serial.println("Pulse right enables");}
else {Serial.println("Pulse right disable");}
if (fSalon) {Serial.println("Salon enables");}
else {Serial.println("Salon disable");}
Serial.println("\n");
irrecv.resume();
}
if (fFar) digitalWrite(Far,HIGH); else digitalWrite(Far,LOW);
if (fSalon) digitalWrite(Salon,HIGH); else digitalWrite(Salon,LOW);
if (fPL) {
if(currentMillis - previousMillisPL > period) {
previousMillisPL = currentMillis;
digitalWrite(PL, !digitalRead(PL));
}
}
else digitalWrite(PL,LOW);
if (fPR) {
if(currentMillis - previousMillisPR > period) {
previousMillisPR = currentMillis;
digitalWrite(PR, !digitalRead(PR));
}
}
else digitalWrite(PR,LOW);
}