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