Hi everyone, I am working on the project but I am stuck with the code. The logic is to create a sequence to control the relay sequentially and the 5V DC relay can control the 4 channel solenoid valves. For example, In second 1, the relay 1 will go from HIGH to LOW, In second 2, the relay 2 will go from HIGH to LOW, In second 3, the relay 3will go from HIGH to LOW. Then, in second 4, the relay 1 will go from LOW to HIGH, until in second 6, when the relay 3 goes from LOW to HIGH. The sequence is done. Can anyone help me out of this? Really appreciate it, thank you.
The code.
// set pin numbers:
int relayPin1=7;
int relayPin2=6;
int relayPin3=5;
//const int relayPin4=4
int buttonPin = 2; //add button boolean for true false operation
int ledPin = 22;
//boolean on = false;
int buttonState = LOW;
int ledState = -1;
int State = -1;
unsigned long lastDebounceTime = 0; // the last time the output pin was toggled
unsigned long debounceDelay = 200; // the debounce time; increase if the output flickers
unsigned long currentTime;
unsigned long relayTime_1 = 1000 ;
unsigned long relayTime_2 = 2000;
unsigned long relayTime_3 = 3000;
unsigned long relayTime_1_1 = 4000;
unsigned long relayTime_2_1 = 5000;
unsigned long relayTime_3_1 = 6000;
unsigned long previous_relayTime_1 = 0;
unsigned long previous_relayTime_2 = 0;
unsigned long previous_relayTime_3 = 0;
// initialize the LED pin as an output:
void setup (){
//Serial.begin(9600);
pinMode(buttonPin,INPUT);
pinMode(ledPin,OUTPUT);
pinMode(relayPin1, OUTPUT);
pinMode(relayPin2, OUTPUT);
pinMode(relayPin3, OUTPUT);
digitalWrite(relayPin1,HIGH);
digitalWrite(relayPin2,HIGH);
digitalWrite(relayPin3,HIGH);
//pinMode(relayPin4, OUTPUT);
}
void loop(){
//unsigned long currentTime = millis();
//int Start = currentTime;
buttonState = digitalRead(buttonPin); // read the state of the pushbutton value:
//filter out any noise by setting a time buffer
if ( (millis() - lastDebounceTime) > debounceDelay) {
//if the button has been pressed, lets toggle the LED from "off to on" or "on to off"
if ( (buttonState == HIGH) && (ledState < 0) ) {
digitalWrite(ledPin, HIGH); //turn LED on
//digitalWrite(relayPin, HIGH);
ledState = -ledState; //now the LED is on, we need to change the state
State = -State;
lastDebounceTime = millis(); //set the current time
if ((ledState >0) && (State > 0)){
currentTime = millis();
if ((digitalRead(relayPin1) == HIGH) && (currentTime - previous_relayTime_1 >= relayTime_1)){
digitalWrite(relayPin3,LOW);
previous_relayTime_1 = millis();
}
if ((digitalRead(relayPin2) == HIGH) && (currentTime - previous_relayTime_2 >= relayTime_2)){
digitalWrite(relayPin2,LOW);
previous_relayTime_2 = millis();
}
if ((digitalRead(relayPin3) == HIGH) && (currentTime - previous_relayTime_3 >= relayTime_3)){
digitalWrite(relayPin3,LOW);
previous_relayTime_3 = millis();
}
if((digitalRead(relayPin1) == LOW) && (currentTime - previous_relayTime_1 >= relayTime_1_1)){
digitalWrite(relayPin1,HIGH);
previous_relayTime_1 = millis();
}
if((digitalRead(relayPin2) == LOW) && (currentTime - previous_relayTime_2 >= relayTime_2_1)){
digitalWrite(relayPin2,LOW);
previous_relayTime_2 = millis();
}
if((digitalRead(relayPin3) == LOW) && (currentTime - previous_relayTime_3 >= relayTime_3_1)){
digitalWrite(relayPin3,HIGH);
previous_relayTime_3 = millis();
}
if (millis() > previous_relayTime_3){
State = -State;
}
}
}
else if ( (buttonState == HIGH) && (ledState > 0)){
digitalWrite(ledPin, LOW); //turn LED off
digitalWrite(relayPin1,HIGH);
digitalWrite(relayPin2,HIGH);
digitalWrite(relayPin3,HIGH);
ledState = -ledState; //now the LED is off, we need to change the state
lastDebounceTime = millis(); //set the current time
State = -State;
}
}
}
(Code tags added by moderator)