Arduino Remote control ON while pushing button

Hi everyone. I'm doing a project for control de movement of 2 Linear actuators (up and down) Together or separated, with a Ir remote control.
The idea is only go up or down while someone is pressing the respective remote button.
this is the code i have so far:

#include <IRremote.h>
#define IR_RECEIVE_PIN 8
#define PIN_RELAY_1  9 // the relay makes the actuator 1 go up
#define PIN_RELAY_2  10 // the relay makes the actuator 1 go down
#define PIN_RELAY_3  11 // the relay makes the actuator 2 go up
#define PIN_RELAY_4  12 // the relay makes the actuator 2 go down

#define IR_BUTTON_1 12 // actuator 1 up
#define IR_BUTTON_3 94 // actuator 1 downp
#define IR_BUTTON_4 8 // actuator 2 up
#define IR_BUTTON_6 90 // actuator 2 down
#define IR_BUTTON_7 66 // actuator 1 and 2 up
#define IR_BUTTON_9 74 // actuator 1 and 2 down

void setup() {
  Serial.begin(9600);
  IrReceiver.begin(IR_RECEIVE_PIN);

    // initialize digital pin as an output.
  pinMode(PIN_RELAY_1, OUTPUT);
  pinMode(PIN_RELAY_2, OUTPUT);
  pinMode(PIN_RELAY_3, OUTPUT);
  pinMode(PIN_RELAY_4, OUTPUT);
}

void loop() {
  if (IrReceiver.decode()) {
    IrReceiver.resume();
    int command = IrReceiver.decodedIRData.command;
    switch (command) {
      case IR_BUTTON_1: {
        digitalWrite(PIN_RELAY_1, HIGH);
        digitalWrite(PIN_RELAY_2, LOW);
        digitalWrite(PIN_RELAY_3, LOW);
        digitalWrite(PIN_RELAY_4, LOW);
        delay(500);
        digitalWrite(PIN_RELAY_1, LOW);
        break;
      }
      case IR_BUTTON_3: {
        digitalWrite(PIN_RELAY_2, HIGH);
        digitalWrite(PIN_RELAY_1, LOW);
        digitalWrite(PIN_RELAY_3, LOW);
        digitalWrite(PIN_RELAY_4, LOW);
        delay(500);
        digitalWrite(PIN_RELAY_2, LOW);
        break;
      }
      case IR_BUTTON_4: {
        digitalWrite(PIN_RELAY_3, HIGH);
        digitalWrite(PIN_RELAY_1, LOW);
        digitalWrite(PIN_RELAY_2, LOW);
        digitalWrite(PIN_RELAY_4, LOW);
        delay(500);
        digitalWrite(PIN_RELAY_3, LOW);
        break;
      }
      case IR_BUTTON_6: {
        digitalWrite(PIN_RELAY_4, HIGH);
        digitalWrite(PIN_RELAY_1, LOW);
        digitalWrite(PIN_RELAY_2, LOW);
        digitalWrite(PIN_RELAY_3, LOW);
        delay(500);
        digitalWrite(PIN_RELAY_4, LOW);
        break;
      }
      case IR_BUTTON_7: {
        digitalWrite(PIN_RELAY_1, HIGH);
        digitalWrite(PIN_RELAY_3, HIGH);
        digitalWrite(PIN_RELAY_2, LOW);
        digitalWrite(PIN_RELAY_4, LOW);
        delay(500);
        digitalWrite(PIN_RELAY_3, LOW);
        digitalWrite(PIN_RELAY_1, LOW);
        break;
      }
      case IR_BUTTON_9: {
        digitalWrite(PIN_RELAY_2, HIGH);
        digitalWrite(PIN_RELAY_4, HIGH);
        digitalWrite(PIN_RELAY_1, LOW);
        digitalWrite(PIN_RELAY_3, LOW);
        delay(500);
        digitalWrite(PIN_RELAY_2, LOW);
        digitalWrite(PIN_RELAY_4, LOW);
        break;
      }

      default: {
        digitalWrite(PIN_RELAY_1, LOW);
        digitalWrite(PIN_RELAY_2, LOW);
        digitalWrite(PIN_RELAY_3, LOW);
        digitalWrite(PIN_RELAY_4, LOW);
        digitalWrite(PIN_RELAY_5, LOW);
        digitalWrite(PIN_RELAY_6, LOW);
        digitalWrite(PIN_RELAY_7, LOW);
        digitalWrite(PIN_RELAY_8, LOW);
        break;
      }
    }
  }
}

Right now i have it working fine, but i would like to know if is anything i could do to improve it

First answer is No. Any working code is a good code. Your code looks like well organized. Tricky built code using advanced and hard to read constructions is no good when it doesn't work.
Use the code You have!

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.