// *************************************************************** // // Project Name: Remote Operated Multifunctional Power Outputs (ROMPO) // Programming by Sartaj Singh Virdi // Copyright 2020 TechnoTaj // Free to use this code for non-commercial purpose only. // For more information please visit https://www.technotaj.com // Please give credit when using this code. // // Case statements in your code will depend on the remote that you procure. // You need to use the HEX code generated by your remote. The remote codes mentioned below may/may not work for your remote. // Please note this is the LITE version. For Timer and Load calculation features you will have to contact ssvirdi@technotaj.com // // *************************************************************** #include unsigned long time; int RECV_PIN = 3; int redPin = 4; int greenPin = 5; int yellowPin = 6; int bluePin = 7; int redrelay = 8; int greenrelay = 9; int yellowrelay = 10; int bluerelay = 11; int runlf = 0; int runrf = 0; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(yellowPin, OUTPUT); pinMode(bluePin, OUTPUT); pinMode(redrelay, OUTPUT); pinMode(greenrelay, OUTPUT); pinMode(yellowrelay, OUTPUT); pinMode(bluerelay, OUTPUT); digitalWrite(redrelay, HIGH); digitalWrite(greenrelay, HIGH); digitalWrite(yellowrelay, HIGH); digitalWrite(bluerelay, HIGH); } void loop() { if (irrecv.decode(&results)) { int value = results.value; switch (value) { case -8161: runlf = 0; runrf = 0; digitalWrite(redPin, HIGH); digitalWrite(redrelay, LOW); break; case 20655: digitalWrite(redPin, LOW); digitalWrite(redrelay, HIGH); break; case 4335: runlf = 0; runrf = 0; digitalWrite(greenPin, HIGH); digitalWrite(greenrelay, LOW); break; case -10201: digitalWrite(greenPin, LOW); digitalWrite(greenrelay, HIGH); break; case -28561: runlf = 0; runrf = 0; digitalWrite(yellowPin, HIGH); digitalWrite(yellowrelay, LOW); break; case -2041: digitalWrite(yellowPin, LOW); digitalWrite(yellowrelay, HIGH); break; case 12495: runlf = 0; runrf = 0; digitalWrite(bluePin, HIGH); digitalWrite(bluerelay, LOW); break; case 255: digitalWrite(bluePin, LOW); digitalWrite(bluerelay, HIGH); break; case 18615: digitalWrite(bluePin, LOW); digitalWrite(yellowPin, LOW); digitalWrite(greenPin, LOW); digitalWrite(redPin, LOW); digitalWrite(bluerelay, HIGH); digitalWrite(yellowrelay, HIGH); digitalWrite(greenrelay, HIGH); digitalWrite(redrelay, HIGH); runlf = 0; runrf = 0; break; case -32641: runlf = 0; runrf = 0; digitalWrite(bluePin, HIGH); digitalWrite(yellowPin, HIGH); digitalWrite(greenPin, HIGH); digitalWrite(redPin, HIGH); digitalWrite(bluerelay, LOW); digitalWrite(yellowrelay, LOW); digitalWrite(greenrelay, LOW); digitalWrite(redrelay, LOW); break; case 22695: // Turn On all LEDs slowly MODE digitalWrite(bluePin, HIGH); digitalWrite(bluerelay, LOW); delay(500); digitalWrite(yellowPin, HIGH); digitalWrite(yellowrelay, LOW); delay(500); digitalWrite(greenPin, HIGH); digitalWrite(greenrelay, LOW); delay(500); digitalWrite(redPin, HIGH); digitalWrite(redrelay, LOW); delay(500); break; case 30855: // Turn Off all LEDs slowly Speaker X digitalWrite(redPin, LOW); digitalWrite(redrelay, HIGH); delay(500); digitalWrite(greenPin, LOW); digitalWrite(greenrelay, HIGH); delay(500); digitalWrite(yellowPin , LOW); digitalWrite(yellowrelay, HIGH); delay(500); digitalWrite(bluePin, LOW); digitalWrite(bluerelay, HIGH); delay(500); break; case 16575: // >> Running Light towards right runrf = 0; runlf = 1; break; case -16321: // << Running Light towards left runlf = 0; runrf = 1; break; } Serial.println(value); irrecv.resume(); } if (runlf > 0) // Routine for sequentially running light - Left to Right { digitalWrite(bluePin, HIGH); digitalWrite(bluerelay, LOW); delay(100); digitalWrite(bluePin, LOW); digitalWrite(bluerelay, HIGH); delay(100); digitalWrite(yellowPin, HIGH); digitalWrite(yellowrelay, LOW); delay(100); digitalWrite(yellowPin , LOW); digitalWrite(yellowrelay, HIGH); delay(100); digitalWrite(greenPin, HIGH); digitalWrite(greenrelay, LOW); delay(100); digitalWrite(greenPin, LOW); digitalWrite(greenrelay, HIGH); delay(100); digitalWrite(redPin, HIGH); digitalWrite(redrelay, LOW); delay(100); digitalWrite(redPin, LOW); digitalWrite(redrelay, HIGH); delay(100); } if (runrf > 0) // Routine for sequentially running light - Right to Left { digitalWrite(redPin, HIGH); digitalWrite(redrelay, LOW); delay(100); digitalWrite(redPin, LOW); digitalWrite(redrelay, HIGH); delay(100); digitalWrite(greenPin, HIGH); digitalWrite(greenrelay, LOW); delay(100); digitalWrite(greenPin, LOW); digitalWrite(greenrelay, HIGH); delay(100); digitalWrite(yellowPin, HIGH); digitalWrite(yellowrelay, LOW); delay(100); digitalWrite(yellowPin , LOW); digitalWrite(yellowrelay, HIGH); delay(100); digitalWrite(bluePin, HIGH); digitalWrite(bluerelay, LOW); delay(100); digitalWrite(bluePin, LOW); digitalWrite(bluerelay, HIGH); delay(100); } /* Mobile Timer Function disabled for this LITE version. Please contact ssvirdi@technotaj.com to get the PRO version free of cost */ Serial.println(time); }