#define OK 2
const int STOP = 3;
const int DOOR = 18;
const int OPTIC = 19;
int push = 0;
int oldpush = 0;
int door1 = 0;
int door2 = 0;
int door3 = 0;
int text = 0;
void setup() {
Serial.begin(9600);
pinMode(OK, INPUT_PULLUP);
pinMode(STOP, INPUT_PULLUP);
pinMode(DOOR, INPUT_PULLUP);
pinMode(OPTIC, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(STOP), Stop, CHANGE);
attachInterrupt(digitalPinToInterrupt(DOOR), Door, CHANGE);
attachInterrupt(digitalPinToInterrupt(OPTIC), Optic, CHANGE);
}
void loop() {
Ok();
Stop();
Door();
Optic();
switch (push){
case 0:
ok();
break;
case 1:
stop();
break;
case 2:
door();
break;
case 3:
optic();
break;
}
}
void Ok(){
if(!digitalRead(OK) && (push == 1 || push == 3)){
text = 0;
delay(10);
push = 0;
}
}
void ok(){
if(text == 0){
Serial.println("Vše je OK");
text = 1;
}
}
void Stop(){
if(!digitalRead(STOP) && push == 0){
text = 0;
delay(10);
push = 1;
}
}
void stop(){
if(text == 0){
Serial.println("--->STOP<---");
text = 1;
}
}
void Door(){
if(!digitalRead(DOOR) && push != 2 && door2 == 0){
if(door1 == 0){
oldpush = push;
}
delay(20);
push = 2;
door2 = 1;
door3 = 0;
}
if(digitalRead(DOOR) && push == 2 && door3 == 0){
push = oldpush;
delay(20);
door3 = 1;
door2 = 0;
}
}
void door(){
Serial.println("box je otevren");
text = 0;
}
void Optic(){
if(!digitalRead(OPTIC) && push == 0){
text = 0;
delay(10);
push = 3;
}
}
void optic(){
if(text == 0){
Serial.println("chybí stříhaný vodič");
text = 1;
}
}