int C1_1 = 3; int C1_2 = 4; int C2_1 = 5; int C2_2 = 6; int Act = 7; int Green_Light = 8; int Red_Light = 9; int Fan = 10; int S1 = 12; int Heater = 13; int Start_Button = A0; int Stop_Button = A1; int S2 = A2; int S3 = A3; int S4 = A4; int S5 = A5; int StartState; int StopState; int S1State; int S2State; int S3State; int S4State; int S5State; int Task3Cycle = 0; int Time; int a = 0; int b = 0; int Blink= 0; int toggle; unsigned long StartTime; void setup(){ pinMode(C1_1, OUTPUT); pinMode(C1_2, OUTPUT); pinMode(C2_1, OUTPUT); pinMode(C2_2, OUTPUT); pinMode(Act, OUTPUT); pinMode(Green_Light, OUTPUT); pinMode(Red_Light, OUTPUT); pinMode(Fan, OUTPUT); pinMode(Heater, OUTPUT); pinMode(S1, INPUT_PULLUP); pinMode(S2, INPUT_PULLUP); pinMode(S3, INPUT_PULLUP); pinMode(S4, INPUT_PULLUP); pinMode(S5, INPUT_PULLUP); pinMode(Start_Button, INPUT_PULLUP); pinMode(Stop_Button, INPUT_PULLUP); } void loop(){ Reset: InitialState(); StopState = digitalRead(Stop_Button); S1State = digitalRead(S1); S2State = digitalRead(S2); S3State = digitalRead(S3); S4State = digitalRead(S4); S5State = digitalRead(S5); Restart: StartState = digitalRead(Start_Button); while(StartState==LOW) //Task 1 { a = 0; digitalWrite(Green_Light, HIGH); digitalWrite(Red_Light, LOW); Conveyor1(); StopState = digitalRead(Stop_Button); while(StopState==LOW) //Emergency Stop for Task 1 { StartState = digitalRead(Start_Button); goto Reset; } S1State = digitalRead(S1); if (S1State==LOW) { StartState = digitalRead(Start_Button); } while (S1State==LOW) { digitalWrite(C1_1, LOW); digitalWrite(C1_2, LOW); digitalWrite(Act, HIGH); S2State = digitalRead(S2); if (S2State==LOW) { S1State = digitalRead(S1); } } while (S2State==LOW) //Task 2 { digitalWrite(Act, LOW); Conveyor2F(); StopState = digitalRead(Stop_Button); while(StopState==LOW) //Emergency Stop for Task 2 { S2State = digitalRead(S2); goto Reset; } S3State = digitalRead(S3); if (S3State==LOW) { S2State = digitalRead(S2); } } while (S3State==LOW) //Task 3 { while (Task3Cycle <3) //Repeat Task 3 if Cycle is < 3 { HeaterSeq(); a = a + 1; { while (a==1) { Conveyor2F(); S4State = digitalRead(S4); while (S4State==LOW) { FanSeq(); a = 0; b = b + 1; Task3Cycle = Task3Cycle + 1; while (b==1) { S3State = digitalRead(S3); if (S3State==LOW || Task3Cycle==3) //If Task 3 done and Cycle = 3 { S4State = digitalRead(S4); b = 0; } Conveyor2R(); StopState = digitalRead(Stop_Button); while (StopState==LOW) //Emergency Stop after Fan Sequence { a = 0; b = 0; Task3Cycle = 0; //Reset the Task 3 Cycle S3State = digitalRead(S3); S4State = digitalRead(S4); S1State = digitalRead(S1); goto Reset; } } } StopState = digitalRead(Stop_Button); while (StopState==LOW) //Emergency Stop Heater Sequence { a = 0; b = 0; Task3Cycle = 0; //Reset the Task 3 Cycle S3State = digitalRead(S3); S4State = digitalRead(S4); S1State = digitalRead(S1); goto Reset; } } } while(Task3Cycle==3) //End of the cycle comes here { Conveyor2F(); S5State = digitalRead(S5); if(S5State == LOW) { StartTime = millis(); //Start Time for millis Task3Cycle = 0; } StopState = digitalRead(Stop_Button); while(StopState == LOW) { a=0; Task3Cycle=0; S1State = digitalRead(S1); S2State = digitalRead(S2); S3State = digitalRead(S3); S4State = digitalRead(S4); S5State = digitalRead(S5); goto Reset; } S5State = digitalRead(S5); while (S5State==LOW) //Task 4 { digitalWrite(C2_1, LOW); digitalWrite(C2_2, LOW); StartState = digitalRead(Start_Button); if (StartState==LOW) { if (millis() - StartTime < 5000) { for (Blink=0;Blink<3;Blink=Blink+1) { digitalWrite(Green_Light, LOW); delay(500); digitalWrite(Green_Light, HIGH); delay(500); } goto Restart; } } else if (millis() - StartTime > 5000) { for (Blink=0;Blink<3;Blink=Blink+1) { digitalWrite(Red_Light, LOW); delay(500); digitalWrite(Red_Light, HIGH); delay(500); } goto Restart; } } } } } } } void InitialState(){ digitalWrite(Red_Light, HIGH); digitalWrite(Green_Light, LOW); digitalWrite(C1_1, LOW); digitalWrite(C1_2, LOW); digitalWrite(C2_1, LOW); digitalWrite(C2_2, LOW); digitalWrite(Fan, LOW); digitalWrite(Heater, LOW); digitalWrite(Act, LOW); } void OffState(){ digitalWrite(Red_Light, LOW); digitalWrite(Green_Light, HIGH); digitalWrite(C1_1, LOW); digitalWrite(C1_2, LOW); digitalWrite(C2_1, LOW); digitalWrite(C2_2, LOW); digitalWrite(Fan, LOW); digitalWrite(Heater, LOW); digitalWrite(Act, LOW); } void Conveyor1(){ digitalWrite(C1_1, HIGH); digitalWrite(C1_2, HIGH); delay(5); digitalWrite(C1_1, HIGH); digitalWrite(C1_2, LOW); delay(5); digitalWrite(C1_1, LOW); digitalWrite(C1_2, LOW); delay(5); digitalWrite(C1_1, LOW); digitalWrite(C1_2, HIGH); delay(5); } void Conveyor2F(){ digitalWrite(C2_1, HIGH); digitalWrite(C2_2, HIGH); delay(5); digitalWrite(C2_1, HIGH); digitalWrite(C2_2, LOW); delay(5); digitalWrite(C2_1, LOW); digitalWrite(C2_2, LOW); delay(5); digitalWrite(C2_1, LOW); digitalWrite(C2_2, HIGH); delay(5); } void Conveyor2R(){ digitalWrite(C2_1, HIGH); digitalWrite(C2_2, HIGH); delay(5); digitalWrite(C2_1, LOW); digitalWrite(C2_2, HIGH); delay(5); digitalWrite(C2_1, LOW); digitalWrite(C2_2, LOW); delay(5); digitalWrite(C2_1, HIGH); digitalWrite(C2_2, LOW); delay(5); } void HeaterSeq(){ digitalWrite(C2_1, LOW); digitalWrite(C2_2, LOW); digitalWrite(Heater, HIGH); delay(3000); digitalWrite(Heater, LOW); } void FanSeq(){ digitalWrite(C2_1, LOW); digitalWrite(C2_2, LOW); digitalWrite(Fan, HIGH); delay(5000); digitalWrite(Fan, LOW); }