int sw1 = 5;
int sw2 = 6;
int motorRight = 7 ;
int motorLeft = 8 ;
int sens = 9 ;
int Custom_delay = 5000;
bool interrup_occured = false;
void setup() {
Serial.begin(9600);
pinMode(sens, INPUT);
pinMode(sw1, INPUT);
pinMode(sw2, INPUT);
pinMode(motorLeft, OUTPUT);
pinMode(motorRight, OUTPUT);
}
void loop() {
while (digitalRead(sw1) == HIGH and digitalRead(sens) == HIGH ) {
Serial.println("object sens");
door_open();
}
if (digitalRead(sw1) == LOW and digitalRead(sw2) == HIGH) {
unblockingDelay(Custom_delay);
}
while (digitalRead(sw2) == HIGH) {
while (digitalRead(sw1) == LOW or interrup_occured == true) {
Serial.println(interrup_occured);
if (interrup_occured == true) {
unblockingDelay(Custom_delay);
digitalWrite(motorRight, HIGH);
interrup_occured = false;
}
if (digitalRead(sens) == HIGH) {
interrup_occured = true;
Serial.println("object sens 1" );
digitalWrite(motorRight, LOW);
delay(500);
door_open();
}
if (interrup_occured == false) {
digitalWrite(motorRight, HIGH);
}
}
digitalWrite(motorRight, LOW);
}
}
void door_open() {
while (digitalRead(sw2) == LOW) {
digitalWrite(motorLeft, HIGH);
}
digitalWrite(motorLeft, LOW);
delay(500);
}
void unblockingDelay(unsigned long mseconds) {
unsigned long timeout = millis();
while ((millis() - timeout) < mseconds) {
Serial.println((millis() - timeout));
if (digitalRead(sens) == HIGH and digitalRead(sw2) == HIGH) {
timeout = millis();
}
delay(1);
}
}