This is a bit above my paygrade in terms of code writting. Here is the arduino sketch that I have. The interesting thing is that it was working just fine previously which makes me think that it is something on the app side and not the sketch. Can you kindly take a look at the code below and let me know what you think?
int Actuator_A_Extend = 2;
int Actuator_A_Contract = 3;
int Actuator_B_Extend = 4;
int Actuator_B_Contract = 5;
int Actuator_C_Extend = 6;
int Actuator_C_Contract = 7;
int Actuator_D_Extend = 8;
int Actuator_D_Contract = 9;
int Actuator_E_Extend = 14;
int Actuator_E_Contract = 15;
int del = 4500;
int tdel;
bool change = false;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
digitalWrite(Actuator_A_Extend, HIGH);
digitalWrite(Actuator_A_Contract, HIGH);
digitalWrite(Actuator_B_Extend, HIGH);
digitalWrite(Actuator_B_Contract, HIGH);
digitalWrite(Actuator_C_Extend, HIGH);
digitalWrite(Actuator_C_Contract, HIGH);
digitalWrite(Actuator_D_Extend, HIGH);
digitalWrite(Actuator_D_Contract, HIGH);
digitalWrite(Actuator_E_Extend, HIGH);
digitalWrite(Actuator_E_Contract, HIGH);
pinMode(Actuator_A_Extend, OUTPUT);
pinMode(Actuator_A_Contract, OUTPUT);
pinMode(Actuator_B_Extend, OUTPUT);
pinMode(Actuator_B_Contract, OUTPUT);
pinMode(Actuator_C_Extend, OUTPUT);
pinMode(Actuator_C_Contract, OUTPUT);
pinMode(Actuator_D_Extend, OUTPUT);
pinMode(Actuator_D_Contract, OUTPUT);
pinMode(Actuator_E_Extend, OUTPUT);
pinMode(Actuator_E_Contract, OUTPUT);
}
void loop() {
if(!Serial.available())
if(change){
change = false;
del = tdel;
}
if(Serial.available() > 0){
char data;
data = Serial.read();
Serial.print(data);
if(data == 'X')
{
change = true;
while(!Serial.available()){delay(5);}
tdel = 0;
int count = 0;
while(count<4){
count++;
if(Serial.available()>0)
{
data = Serial.read();
tdel *=10;
tdel += data - '0';
delay(5);
}
else
break;
}
}
else
switch (data)
{
case '1': //ACTUATOR B Contract
digitalWrite(Actuator_B_Extend, HIGH);
digitalWrite(Actuator_B_Contract, LOW);
break;
case '2': //ACTUATOR B Extend
digitalWrite(Actuator_B_Contract, HIGH);
digitalWrite(Actuator_B_Extend, LOW);
break;
case '3': //ACTUATOR B Extend Delay Variable Actuator D Extend Actuator A+C Contract Delay 4500
digitalWrite(Actuator_A_Extend, HIGH);
digitalWrite(Actuator_A_Contract, LOW);
digitalWrite(Actuator_B_Extend, LOW);
digitalWrite(Actuator_B_Contract, HIGH);
digitalWrite(Actuator_C_Extend, HIGH);
digitalWrite(Actuator_C_Contract, LOW);
digitalWrite(Actuator_D_Extend, LOW);
digitalWrite(Actuator_D_Contract, HIGH);
delay(del);
digitalWrite(Actuator_B_Extend, HIGH);
delay((4500)-(del));
digitalWrite(Actuator_D_Extend, HIGH);
digitalWrite(Actuator_A_Contract, HIGH);
digitalWrite(Actuator_C_Contract, HIGH);
break;
case '4': //ACTUATOR A Extend Delay Variable Actuator C Extend Actuator B+D Contract Delay 4500
digitalWrite(Actuator_A_Extend, LOW);
digitalWrite(Actuator_A_Contract, HIGH);
digitalWrite(Actuator_B_Extend, HIGH);
digitalWrite(Actuator_B_Contract, LOW);
digitalWrite(Actuator_C_Extend, LOW);
digitalWrite(Actuator_C_Contract, HIGH);
digitalWrite(Actuator_D_Extend, HIGH);
digitalWrite(Actuator_D_Contract, LOW);
delay(del);
digitalWrite(Actuator_A_Extend, HIGH);
delay((4500)-(del));
digitalWrite(Actuator_B_Contract, HIGH);
digitalWrite(Actuator_C_Extend, HIGH);
digitalWrite(Actuator_D_Contract, HIGH);
break;
case '5': //ACTUATOR A Contract
digitalWrite(Actuator_A_Extend, HIGH);
digitalWrite(Actuator_A_Contract, LOW);
break;
case '6': //ACTUATOR A Extend
digitalWrite(Actuator_A_Extend, LOW);
digitalWrite(Actuator_A_Contract, HIGH);
break;
case '7': //ACTUATOR A+B+C+D Contract
digitalWrite(Actuator_A_Extend, HIGH);
digitalWrite(Actuator_A_Contract, LOW);
digitalWrite(Actuator_B_Extend, HIGH);
digitalWrite(Actuator_B_Contract, LOW);
digitalWrite(Actuator_C_Extend, HIGH);
digitalWrite(Actuator_C_Contract, LOW);
digitalWrite(Actuator_D_Extend, HIGH);
digitalWrite(Actuator_D_Contract, LOW);
delay(4500);
digitalWrite(Actuator_A_Contract, HIGH);
digitalWrite(Actuator_B_Contract, HIGH);
digitalWrite(Actuator_C_Contract, HIGH);
digitalWrite(Actuator_D_Contract, HIGH);
break;
case '8': //Actuator Stop on Button Release
digitalWrite(Actuator_A_Extend, HIGH);
digitalWrite(Actuator_A_Contract, HIGH);
digitalWrite(Actuator_B_Extend, HIGH);
digitalWrite(Actuator_B_Contract, HIGH);
break;
case '9': //ACTUATOR A and B Extend
digitalWrite(Actuator_A_Contract, HIGH);
digitalWrite(Actuator_A_Extend, LOW);
digitalWrite(Actuator_B_Extend, LOW);
digitalWrite(Actuator_B_Contract, HIGH);
break;
case 'A': //ACTUATOR A and B Contract No Delay
digitalWrite(Actuator_A_Contract, LOW);
digitalWrite(Actuator_A_Extend, HIGH);
digitalWrite(Actuator_B_Extend, HIGH);
digitalWrite(Actuator_B_Contract, LOW);
break;
case 'B': //ACTUATOR A Contract B Extend No Delay
digitalWrite(Actuator_A_Extend, HIGH);
digitalWrite(Actuator_A_Contract, LOW);
digitalWrite(Actuator_B_Extend, LOW);
digitalWrite(Actuator_B_Contract, HIGH);
break;
case 'C': //ACTUATOR A Extend B Contract No Delay
digitalWrite(Actuator_A_Extend, LOW);
digitalWrite(Actuator_A_Contract, HIGH);
digitalWrite(Actuator_B_Extend, HIGH);
digitalWrite(Actuator_B_Contract, LOW);
break;
case 'D': //ACTUATOR A and B Contract
digitalWrite(Actuator_A_Extend, HIGH);
digitalWrite(Actuator_A_Contract, LOW);
digitalWrite(Actuator_B_Extend, HIGH);
digitalWrite(Actuator_B_Contract, LOW);
delay(4500);
digitalWrite(Actuator_A_Contract, HIGH);
digitalWrite(Actuator_B_Contract, HIGH);
break;
case 'E': //ACTUATOR A+B Extend C+D Contract
digitalWrite(Actuator_A_Extend, LOW);
digitalWrite(Actuator_A_Contract, HIGH);
digitalWrite(Actuator_B_Extend, LOW);
digitalWrite(Actuator_B_Contract, HIGH);
digitalWrite(Actuator_C_Extend, HIGH);
digitalWrite(Actuator_C_Contract, LOW);
digitalWrite(Actuator_D_Extend, HIGH);
digitalWrite(Actuator_D_Contract, LOW);
delay(4500);
digitalWrite(Actuator_A_Extend, HIGH);
digitalWrite(Actuator_B_Extend, HIGH);
digitalWrite(Actuator_C_Contract, HIGH);
digitalWrite(Actuator_D_Contract, HIGH);
break;
case 'F': //ACTUATOR A Contract D Extend Delay 4500 B Contract Delay 4500-Del
digitalWrite(Actuator_A_Extend, HIGH);
digitalWrite(Actuator_A_Contract, LOW);
digitalWrite(Actuator_B_Extend, HIGH);
digitalWrite(Actuator_B_Contract, LOW);
digitalWrite(Actuator_D_Extend, LOW);
digitalWrite(Actuator_D_Contract, HIGH);
delay((4500)-(del));
digitalWrite(Actuator_B_Contract, HIGH);
delay(del);
digitalWrite(Actuator_A_Contract, HIGH);
digitalWrite(Actuator_D_Extend, HIGH);
break;
case 'G': //ACTUATOR B Contract C Extend Delay 4500 A Contract Delay 4500-Del
digitalWrite(Actuator_A_Extend, HIGH);
digitalWrite(Actuator_A_Contract, LOW);
digitalWrite(Actuator_B_Extend, HIGH);
digitalWrite(Actuator_B_Contract, LOW);
digitalWrite(Actuator_C_Extend, LOW);
digitalWrite(Actuator_C_Contract, HIGH);
delay((4500)-(del));
digitalWrite(Actuator_A_Contract, HIGH);
delay(del);
digitalWrite(Actuator_B_Contract, HIGH);
digitalWrite(Actuator_C_Extend, HIGH);
break;
case 'H': //ACTUATOR E Contract
digitalWrite(Actuator_E_Extend, HIGH);
digitalWrite(Actuator_E_Contract, LOW);
break;
case 'J': //ACTUATOR E Contract
digitalWrite(Actuator_E_Extend, HIGH);
digitalWrite(Actuator_E_Contract, HIGH);
break;
case 'L': //ACTUATOR E Extend
digitalWrite(Actuator_E_Extend, LOW);
digitalWrite(Actuator_E_Contract, HIGH);
break;
digitalWrite(Actuator_C_Contract, HIGH);
digitalWrite(Actuator_D_Extend, HIGH);
digitalWrite(Actuator_D_Contract, HIGH);
digitalWrite(Actuator_E_Extend, HIGH);
digitalWrite(Actuator_E_Contract, HIGH);
}
}
}