Poblems in this Programming
For this Programming I have to have 3 sequences for which I used three While, the problem I have in this programming is that what (If) in Sequence 2 and Sequence 3 are not working in the correct way since without sending a pass or a fail enters the if and they go to the next sequences without having had a HIGH in that digitalRead. I would be grateful if you could tell me what is the problem I have in this programming Thank you very much.
Program Operation
- The Start button is pressed and the first sequence begins.
- Enter the First If and wait if the test is fail or pass.
- If it is Fail no matter in which sequence it should go to the first sequence again.
- If you send a pass it sends me to the second sequence, but importantly the pass stays stuck until I do not start Start (High) and then Start Program (LOW) .When it goes off I should wait for test two to send me the pass again to enter sequence 3 and do the same after finishing sequence 3 either pass or fail as we do the same steps again.
// set pin numbers:
int Start = 2;// Start button I/O-2
int PASS = 3; // PASS send to the Arduino I/O-3
int FAIL = 4; // FAIL send to the Arduino I/O-4
int S1=5; //Switch 1 I/O-5
int S2 =6;//switch 2 I/O-6
int S3 =7;//switch 3 I/O-7
int S4 =8;//switch 4 I/O-8
int S1_Supervisor =9; //Led Indication I/O-9
int S2_Main = 10;//Led Indication I/O-10
int S3_Data=11;//Led Indication I/O-11
int PASS_LED = 12;//Led Indication I/O-12
int FAIL_LED = 13;//Led Indication I/O-13
int Start_Program =22;//Start Program I/O-14
int S4_1 =23;//switch 4 I/O-15
int x;
int j;
int k;
void setup()
{
// set the digital pins as outputs:
pinMode(Start, INPUT);
pinMode(Start_Program,OUTPUT);
pinMode(PASS, INPUT);
pinMode(FAIL, INPUT);
pinMode(PASS_LED, OUTPUT);
pinMode(FAIL_LED, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(S4, OUTPUT);
pinMode(S4_1, OUTPUT);
pinMode(S1_Supervisor, OUTPUT);
pinMode(S2_Main, OUTPUT);
pinMode(S3_Data, OUTPUT);
}
void loop()
{
if(digitalRead(Start)==HIGH)
{
x=0;
j=0;
k=0;
}
for( x=0 ; x>=0 ; x++)
{
if(digitalRead(Start)==HIGH)
{
delay (1000);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH); // state:ON of the sequency for the supevisor
digitalWrite(S3, HIGH);
digitalWrite(S4, HIGH);
digitalWrite(S4_1, HIGH);
delay (2000);
digitalWrite(Start_Program, HIGH);
delay (2000);
digitalWrite(Start_Program, LOW);
digitalWrite(S1_Supervisor, HIGH);
digitalWrite(PASS_LED,LOW);
digitalWrite(FAIL_LED,LOW);
delay (5000);
}
if (digitalRead(PASS)==HIGH && digitalRead(S1_Supervisor)==HIGH)
{
delay (300);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW); // state:ON of the sequency for the supevisor
digitalWrite(S3, LOW);
digitalWrite(S4, LOW);
digitalWrite(S4_1, LOW);
digitalWrite(S1_Supervisor,LOW);
digitalWrite(PASS_LED,HIGH);
delay (2000);
digitalWrite(Start_Program,LOW);
j=10;
delay (3000);
break;
}
if (digitalRead(FAIL)==HIGH && digitalRead(S1_Supervisor)==HIGH)
{
delay (300);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW); // state:ON of the sequency for the supevisor
digitalWrite(S3, LOW);
digitalWrite(S4, LOW);
digitalWrite(S4_1, LOW);
digitalWrite(S1_Supervisor,LOW);
digitalWrite(FAIL_LED,HIGH);
delay (2000);
digitalWrite(Start_Program,LOW);
x=0;
delay (1000);
break;
}
}
for( j=10 ; x>=10 ; x++)
{
if (digitalRead(PASS)==HIGH && digitalRead(S2_Main)== LOW) //&& digitalRead(S3_Data)== LOW)
{
delay (300);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW); // state:ON of the sequency for the supevisor
digitalWrite(S3, LOW);
digitalWrite(S4, HIGH);
digitalWrite(S4_1, HIGH);
delay (2000);
digitalWrite(Start_Program, HIGH);
delay (2000);
digitalWrite(Start_Program, LOW);
delay (3000);
digitalWrite(S2_Main, HIGH);
delay (2000);
digitalWrite(PASS_LED,LOW);
digitalWrite(FAIL_LED,LOW);
delay (2000);
}
if (digitalRead(PASS)==HIGH && digitalRead(S2_Main)== HIGH && digitalRead(PASS_LED)==LOW && digitalRead(Start_Program)==LOW)
{
delay (300);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW); // state:ON of the sequency #1 for the supevisor
digitalWrite(S3, LOW);
digitalWrite(S4, LOW);
digitalWrite(S4_1, LOW);
digitalWrite(S2_Main,LOW);
digitalWrite(PASS_LED,HIGH);
delay (800);
digitalWrite(Start_Program,LOW);
k=10;
delay (800);
}
if (digitalRead(FAIL)==HIGH && digitalRead(S2_Main)== HIGH)// && digitalRead(FAIL_LED)== LOW)) //&& digitalRead(Start_Program)==LOW)
{
delay (300);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW); // state:ON of the sequency #2 for the MAIN
digitalWrite(S3, LOW);
digitalWrite(S4, LOW);
digitalWrite(S4_1, LOW);
digitalWrite(S2_Main,LOW);
digitalWrite(FAIL_LED,HIGH);
delay (800);
digitalWrite(Start_Program,LOW);
x=0;
j=0;
delay (800);
break;
}
}
for( k=10 ; x>=10 ; x++)
{
if(digitalRead(PASS)==HIGH && digitalRead(S3_Data)== LOW)
{
delay (300);
digitalWrite(S1, HIGH);
digitalWrite(S2, LOW); // sequency#3
digitalWrite(S3, LOW);
digitalWrite(S4, LOW);
digitalWrite(S4_1,LOW);
delay (2000);
digitalWrite(Start_Program, HIGH);
delay (2000);
digitalWrite(Start_Program, LOW);
digitalWrite(S3_Data, HIGH);
delay (1000);
digitalWrite(PASS_LED,LOW);
digitalWrite(FAIL_LED,LOW);
delay (2000);
}
if (digitalRead(PASS)==HIGH && digitalRead(S3_Data)==HIGH) // && digitalRead(PASS_LED)==LOW) //&& digitalRead(Start_Program)==LOW )
{
delay (300);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW); // state:ON of the sequency for the supevisor
digitalWrite(S3, LOW);
digitalWrite(S4, LOW);
digitalWrite(S4_1,LOW);
digitalWrite(S3_Data,LOW);
digitalWrite(PASS_LED,HIGH);
delay (1000);
digitalWrite(Start_Program,HIGH);
delay (1000);
digitalWrite(Start_Program,LOW);
x=0;
delay (3000);
break;
}
if (digitalRead(FAIL)==HIGH && digitalRead(S3_Data)== HIGH) // && digitalRead(FAIL_LED)== LOW) //&& digitalRead(Start_Program)==LOW)
{
x=0;
delay (300);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW); // state:ON of the sequency for the supevisor
digitalWrite(S3, LOW);
digitalWrite(S4, LOW);
digitalWrite(S4_1,LOW);
digitalWrite(S3_Data,LOW);
digitalWrite(FAIL_LED,HIGH);
delay (1000);
digitalWrite(Start_Program,HIGH);
delay (1000);
digitalWrite(Start_Program,LOW);
delay (3000);
break;
}
}
return;
}