Hello, I am trying to add to my code a segment that allows me to dynamically change the on/off delay in real time through serial monitor. I am a novice to C++ but I have this written so far. These are basic on/off functions which I would like to keep, but I would like to add the option to the program to add timed delays for each pin along with this. I am stuck here and could use some pointers. Thank you!
String cmd; //Variable for storing incoming value
#define relayPin1 6
#define relayPin2 7
#define relayPin3 8
#define relayPin4 9 //Designates relayPin variable to pin
#define relayPin5 10
#define relayPin6 11
#define relayPin7 12
#define relayPin8 13
void setup()
{
//Sets relay control pins to output to sink supplied current and
//sets relays to OFF naturally to start the cycle
digitalWrite(relayPin1, HIGH);
digitalWrite(relayPin2, HIGH);
digitalWrite(relayPin3, HIGH);
digitalWrite(relayPin4, HIGH);
digitalWrite(relayPin5, HIGH);
digitalWrite(relayPin6, HIGH);
digitalWrite(relayPin7, HIGH);
digitalWrite(relayPin8, HIGH);
Serial.begin(9600); //Sets baud rate for bluetooth serial port
Serial.setTimeout(10); //Increases speed of output commands
pinMode(relayPin1, OUTPUT);
pinMode(relayPin2, OUTPUT);
pinMode(relayPin3, OUTPUT);
pinMode(relayPin4, OUTPUT);
pinMode(relayPin5, OUTPUT); //Sets output pins
pinMode(relayPin6, OUTPUT);
pinMode(relayPin7, OUTPUT);
pinMode(relayPin8, OUTPUT);
}
void loop()
{
if (Serial.available())
{
cmd = Serial.readString(); //Assign input command string to loop
if(cmd == "ON") // All relays ON command
{
digitalWrite(relayPin1, HIGH);
digitalWrite(relayPin2, HIGH);
digitalWrite(relayPin3, HIGH);
digitalWrite(relayPin4, HIGH);
digitalWrite(relayPin5, HIGH);
digitalWrite(relayPin6, HIGH);
digitalWrite(relayPin7, HIGH);
digitalWrite(relayPin8, HIGH);
Serial.println("All relays on");
}
if(cmd == "OFF") // All relays OFF command
{
digitalWrite(relayPin1, LOW);
digitalWrite(relayPin2, LOW);
digitalWrite(relayPin3, LOW);
digitalWrite(relayPin4, LOW);
digitalWrite(relayPin5, LOW);
digitalWrite(relayPin6, LOW);
digitalWrite(relayPin7, LOW);
digitalWrite(relayPin8, LOW);
Serial.println("All relays off");
}
// Individual relay on/off commands
if(cmd == "r1") //Relay 1 ON
{
digitalWrite(relayPin1, HIGH);
Serial.println("Relay 1 ON");
}
if(cmd == "R1") //Relay 1 OFF
{
digitalWrite(relayPin1, LOW);
Serial.println("Relay 1 OFF");
}
if(cmd == "r2") //Relay 2 ON
{
digitalWrite(relayPin2, HIGH);
Serial.println("Relay 2 ON");
}
if(cmd == "R2") //Relay 2 OFF
{
digitalWrite(relayPin2, LOW);
Serial.println("Relay 2 OFF");
}
if(cmd == "r3") //Relay 3 ON
{
digitalWrite(relayPin3, HIGH);
Serial.println("Relay 3 ON");
}
if(cmd == "R3") //Relay 3 OFF
{
digitalWrite(relayPin3, LOW);
Serial.println("Relay 3 OFF");
}
if(cmd == "r4") //Relay 4 ON
{
digitalWrite(relayPin4, HIGH);
Serial.println("Relay 4 ON");
}
if(cmd == "R4") //Relay 4 OFF
{
digitalWrite(relayPin4, LOW);
Serial.println("Relay 4 OFF");
}
if(cmd == "r5") //Relay 5 ON
{
digitalWrite(relayPin5, HIGH);
Serial.println("Relay 5 ON");
}
if(cmd == "R5") //Relay 5 OFF
{
digitalWrite(relayPin5, LOW);
Serial.println("Relay 5 OFF");
}
if(cmd == "r6") //Relay 6 ON
{
digitalWrite(relayPin6, HIGH);
Serial.println("Relay 6 ON");
}
if(cmd == "R6") //Relay 6 OFF
{
digitalWrite(relayPin6, LOW);
Serial.println("Relay 6 OFF");
}
if(cmd == "r7") //Relay 7 ON
{
digitalWrite(relayPin7, HIGH);
Serial.println("Relay 7 ON");
}
if(cmd == "R7") //Relay 7 OFF
{
digitalWrite(relayPin7, LOW);
Serial.println("Relay 7 OFF");
}
if(cmd == "r8") //Relay 8 ON
{
digitalWrite(relayPin8, HIGH);
Serial.println("Relay 8 ON");
}
if(cmd == "R8") //Relay 8 OFF
{
digitalWrite(relayPin8, LOW);
Serial.println("Relay 8 OFF");
}
}
}