/*
Author:DS coding
----------naming---------------------
Machine_Breakdown=============mb
Quality_Technical_Downtime====qi
Production_IE_Downtime========pi
Cutting_Downtime==============ci
Stores_Downtime===============si
-----------OUTPUT-------------------
D13=mb_led
D12=qi_led
D11=pi_led
D10=ci_led
D9=si_led
D3=bz_led (Buzzer_On_Off)
---------INPUT--------------------
D8==mb_sw
D7==qi_sw
D6=pi_sw
D5=ci_sw
D4=si_sw
A1=mb_att_sw
A2=qi_att_sw
A3=pi_att_sw
A4=ci_att_sw
A5=si_att_sw
*/
int mb_status,qi_status,pi_status,ci_status,si_status;
int mb_att_status,qi_att_status,pi_att_status,ci_att_status,si_att_status;
int mb_led=13,qi_led=12,pi_led=11,ci_led=10,si_led=9;
int bz_led=3;int bz_chk_delay=2000;
int mb_sw=8,qi_sw=7,pi_sw=6,ci_sw=5,si_sw=4;
int mb_att_sw=15,qi_att_sw=16,pi_att_sw=17,ci_att_sw=18,si_att_sw=19;
void setup() {
// put your setup code here, to run once:
mb_status=qi_status=pi_status=ci_status=si_status=0;
mb_att_status=qi_att_status=pi_att_status=ci_att_status=si_att_status=0;
func_pinmode_setter();
func_bootup_led();
}
void loop() {
// put your main code here, to run repeatedly:
//delay(10000);
delay(1000);
func_mb();
//delay(1000);
func_qi();
//delay(1000);
func_pi();
//delay(1000);
func_ci();
//delay(1000);
func_si();
//delay(2000);
func_att_check();
}
void func_pinmode_setter(){
pinMode(mb_led,OUTPUT);
pinMode(qi_led, OUTPUT);
pinMode(pi_led, OUTPUT);
pinMode(ci_led, OUTPUT);
pinMode(si_led, OUTPUT);
pinMode(bz_led, OUTPUT);
pinMode(mb_sw, INPUT);
pinMode(qi_sw, INPUT);
pinMode(pi_sw, INPUT);
pinMode(ci_sw, INPUT);
pinMode(si_sw, INPUT);
pinMode(mb_att_sw, INPUT_PULLUP);
pinMode(qi_att_sw, INPUT_PULLUP);
pinMode(pi_att_sw, INPUT_PULLUP);
pinMode(ci_att_sw, INPUT_PULLUP);
pinMode(si_att_sw, INPUT_PULLUP);
}
void func_bootup_led(){
int dl=100;
for(int i=0;i<2;i++){
for(int i2=9;i2<14;i2++){
digitalWrite(i2, HIGH);
delay(dl);
digitalWrite(i2, LOW);
delay(dl);
}
for(int i2=12;i2>8;i2--){
digitalWrite(i2, HIGH);
delay(dl);
digitalWrite(i2, LOW);
delay(dl);
}
}
for(int i=0;i<3;i++){
for(int i2=9;i2<14;i2++){
digitalWrite(i2, HIGH);
}
delay(500);
for(int i2=9;i2<14;i2++){
digitalWrite(i2, LOW);
}
delay(500);
}
}
/*----machine breakdown--------------------------------------------------*/
void func_mb(){
/*-----for operator-------------*/
if(digitalRead(mb_sw)==HIGH && mb_status==0){
mb_status=1;
mb_att_status=0;
digitalWrite(mb_led, HIGH);
digitalWrite(bz_led, HIGH);
//send command to wifi api(open breakdown complain)
}else if(digitalRead(mb_sw)==LOW && mb_status==1){
mb_status=0;
mb_att_status=0;
//send command to wifi api(close the breakdown complain)
digitalWrite(mb_led, LOW);
digitalWrite(bz_led, LOW);
delay(bz_chk_delay);
}
/*------for responder----------*/
else if(digitalRead(mb_att_sw)==LOW && mb_status==1 && mb_att_status==0){
mb_status=1;
mb_att_status=1;
//send command to wifi api(responder attend to the breakdown)
digitalWrite(mb_led, HIGH);
digitalWrite(bz_led, LOW);
delay(bz_chk_delay);
}
}
/*----quality & technical downtime--------------------------------------------------*/
void func_qi(){
/*-----for operator-------------*/
if(digitalRead(qi_sw)==HIGH && qi_status==0){
qi_status=1;
qi_att_status=0;
digitalWrite(qi_led, HIGH);
digitalWrite(bz_led, HIGH);
//send command to wifi api(open breakdown complain)
}else if(digitalRead(qi_sw)==LOW && qi_status==1){
qi_status=0;
qi_att_status=0;
//send command to wifi api(close the breakdown complain)
digitalWrite(qi_led, LOW);
digitalWrite(bz_led, LOW);
delay(bz_chk_delay);
}
/*------for responder----------*/
else if(digitalRead(qi_att_sw)==LOW && qi_status==1 && qi_att_status==0){
qi_status=1;
qi_att_status=1;
//send command to wifi api(responder attend to the breakdown)
digitalWrite(qi_led, HIGH);
digitalWrite(bz_led, LOW);
delay(bz_chk_delay);
}
}
/*----production & IE downtime--------------------------------------------------*/
void func_pi(){
/*-----for operator-------------*/
if(digitalRead(pi_sw)==HIGH && pi_status==0){
pi_status=1;
pi_att_status=0;
digitalWrite(pi_led, HIGH);
digitalWrite(bz_led, HIGH);
//send command to wifi api(open breakdown complain)
}else if(digitalRead(pi_sw)==LOW && pi_status==1){
pi_status=0;
pi_att_status=0;
//send command to wifi api(close the breakdown complain)
digitalWrite(pi_led, LOW);
digitalWrite(bz_led, LOW);
delay(bz_chk_delay);
}
/*------for responder----------*/
else if(digitalRead(pi_att_sw)==LOW && pi_status==1 && pi_att_status==0){
pi_status=1;
pi_att_status=1;
//send command to wifi api(responder attend to the breakdown)
digitalWrite(pi_led, HIGH);
digitalWrite(bz_led, LOW);
delay(bz_chk_delay);
}
}
/*----cutting downtime--------------------------------------------------*/
void func_ci(){
/*-----for operator-------------*/
if(digitalRead(ci_sw)==HIGH && ci_status==0){
ci_status=1;
ci_att_status=0;
digitalWrite(ci_led, HIGH);
digitalWrite(bz_led, HIGH);
//send command to wifi api(open breakdown complain)
}else if(digitalRead(ci_sw)==LOW && ci_status==1){
ci_status=0;
ci_att_status=0;
//send command to wifi api(close the breakdown complain)
digitalWrite(ci_led, LOW);
digitalWrite(bz_led, LOW);
delay(bz_chk_delay);
}
/*------for responder----------*/
else if(digitalRead(ci_att_sw)==LOW && ci_status==1 && ci_att_status==0){
ci_status=1;
ci_att_status=1;
//send command to wifi api(responder attend to the breakdown)
digitalWrite(ci_led, HIGH);
digitalWrite(bz_led, LOW);
delay(bz_chk_delay);
}
}
/*----stores downtime--------------------------------------------------*/
void func_si(){
/*-----for operator-------------*/
if(digitalRead(si_sw)==HIGH && si_status==0){
si_status=1;
si_att_status=0;
digitalWrite(si_led, HIGH);
digitalWrite(bz_led, HIGH);
//send command to wifi api(open breakdown complain)
}else if(digitalRead(si_sw)==LOW && si_status==1){
si_status=0;
si_att_status=0;
//send command to wifi api(close the breakdown complain)
digitalWrite(si_led, LOW);
digitalWrite(bz_led, LOW);
delay(bz_chk_delay);
}
/*------for responder----------*/
else if(digitalRead(si_att_sw)==LOW && si_status==1 && si_att_status==0){
si_status=1;
si_att_status=1;
//send command to wifi api(responder attend to the breakdown)
digitalWrite(si_led, HIGH);
digitalWrite(bz_led, LOW);
delay(bz_chk_delay);
}
}
/*----------attendance check & turn on buzzer-------*/
void func_att_check(){
if(mb_status==1 && mb_att_status==0){
digitalWrite(bz_led, HIGH);
}else if(qi_status==1 && qi_att_status==0){
digitalWrite(bz_led, HIGH);
}else if(pi_status==1 && pi_att_status==0){
digitalWrite(bz_led, HIGH);
}else if(ci_status==1 && ci_att_status==0){
digitalWrite(bz_led, HIGH);
}else if(si_status==1 && si_att_status==0){
digitalWrite(bz_led, HIGH);
}
}