I need a stop button that will work only when the motor which are the C 1.1 -c2.2 as i cannot use interrupt to call the stop button anytime i would have to use function call to check the stop so i need some idea on how to do it ?
//c1_1 --c2_2 are the motors
int c1_1 = 3;
int c1_2 =4;
int c2_1 =5;
int c2_2 = 6;
int act =7;
int green =8;
int red =9``;
int fan =10;
int buzzer =11;
int s1 =12;
int htr =13;
int start =A0;
int stop =A1;
int s2 = A2;
int s3 =A3;
int s4 =A4;
int s5 = A5;
int state1= 0;
int state2 = 0;
int state3 = 0;
int state4 = 0;
int startstate = 0;
int stopstate =0;
int state5 =0;
int c=0;
int time =0;
unsigned long previousMillis = 0;
unsigned long interval = 50;
void setup()
{
pinMode(c1_1,OUTPUT);
pinMode(c1_2,OUTPUT);
pinMode(c2_1,OUTPUT);
pinMode(c2_2,OUTPUT);
pinMode(act,OUTPUT);
pinMode(green,OUTPUT);
pinMode(red,OUTPUT);
pinMode(fan,OUTPUT);
pinMode(s1,INPUT_PULLUP);
pinMode(htr,OUTPUT);
pinMode(start,INPUT_PULLUP);
pinMode(stop,INPUT_PULLUP);
pinMode(s2,INPUT_PULLUP);
pinMode(s3,INPUT_PULLUP);
pinMode(s4,INPUT_PULLUP);
pinMode(s5,INPUT_PULLUP);
pinMode(buzzer,OUTPUT);
digitalWrite(red,HIGH);
digitalWrite(green,LOW);
digitalWrite(buzzer,LOW);
digitalWrite(c1_1,LOW);
digitalWrite(c1_2,LOW);
digitalWrite(c2_1,LOW);
digitalWrite(c2_2,LOW);
digitalWrite(act,LOW);
digitalWrite(htr,LOW);
digitalWrite(fan,LOW);
Serial.begin(9600);
}
void loop()
{
state1= digitalRead(s1);
state2 = digitalRead(s2);
state3 = digitalRead(s3);
state4 = digitalRead(s4);
state5 = digitalRead(s5);
startstate = digitalRead(start);
stopstate = digitalRead(stop);
if(startstate ==LOW && time ==0 ){
digitalWrite(red,LOW);
digitalWrite(green,HIGH);
digitalWrite(c1_1,HIGH);
digitalWrite(c1_2,LOW);
}
if(state1 == LOW){
digitalWrite(c1_1,LOW);
digitalWrite(c1_2,LOW);
digitalWrite(act,HIGH);
}
if(state2 ==LOW){
digitalWrite(c2_1,HIGH);
digitalWrite(act,LOW);
}
if(c<4) {
if(state3==LOW){
cooking(11,1000,13,5);
c++;
}
if(state4==LOW){
cooking(23,1000,10,6);
}
}
if(state5==LOW){
while(true){
startstate = digitalRead(start);
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
time += interval;
Serial.println(time);
digitalWrite(c2.2,LOW);
digitalWrite(buzzer,HIGH);
if(startstate ==LOW){
inspect(11,3,500,500);
break;
}
if(time >=5000){
inspect(10,3,500,500);
break;
}
}
}
}
}
void cooking(int i,int time,int system,int motor){
int z=0;
for(;z<i;z++){
digitalWrite(c2_1,LOW);
digitalWrite(c2_2,LOW);
digitalWrite(system,HIGH);
delay(time);
}
digitalWrite(system,LOW);
digitalWrite(motor,HIGH);
}
void inspect(int led, int m, int ontime1 ,int offtime1){
int n=0;
digitalWrite(buzzer,LOW);
for(;n<m;n++){
digitalWrite(led,HIGH);
delay(ontime1);
digitalWrite(led,LOW);
delay(offtime1);
}
time =0;
digitalWrite(green,HIGH);
}