#include <Adafruit_LiquidCrystal.h>
#include <Servo.h>
volatile int distance_1;
volatile int distance_2;
volatile int num;
volatile boolean flag;
Servo servo_9;
Adafruit_LiquidCrystal lcd_1(0);
float checkdistance_4_7() {
digitalWrite(4, LOW);
delayMicroseconds(2);
digitalWrite(4, HIGH);
delayMicroseconds(10);
digitalWrite(4, LOW);
float distance = pulseIn(7, HIGH) / 58.00;
delay(10);
return distance;
}
float checkdistance_10_11() {
digitalWrite(10, LOW);
delayMicroseconds(2);
digitalWrite(10, HIGH);
delayMicroseconds(10);
digitalWrite(10, LOW);
float distance = pulseIn(11, HIGH) / 58.00;
delay(10);
return distance;
}
void setup(){
distance_1 = 0;
distance_2 = 0;
num = 0;
flag = true;
servo_9.attach(9);
lcd_1.begin(16, 2);
servo_9.write(0);
delay(300);
pinMode(4, OUTPUT);
pinMode(7, INPUT);
pinMode(10, OUTPUT);
pinMode(11, INPUT);
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(12, OUTPUT);
}
void loop(){
distance_1 = checkdistance_4_7();
distance_2 = checkdistance_10_11();
if (distance_1 < 100) {
if (flag) {
num++;
servo_9.write(90);
delay(0);
delay(50);
flag = false;
}
lcd_1.setCursor(0, 0);
lcd_1.print(" 09200102");
lcd_1.setCursor(0, 1);
lcd_1.print(String("OPEN") + String(num) + String(" ") + String("back:") + String(distance_2));
} else {
servo_9.write(0);
delay(0);
flag = true;
lcd_1.setCursor(0, 0);
lcd_1.print(" 09200102");
lcd_1.setCursor(0, 1);
lcd_1.print(String("close") + String(" ") + String("back:") + String(distance_2) + String("cm"));
}
if (distance_2 > 320) {
digitalWrite(3,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
noTone(12);
}
if (distance_2 < 300 && distance_2 > 250) {
digitalWrite(3,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
tone(12,650);
delay(300);
noTone(12);
delay(300);
}
if (distance_2 < 250 && distance_2 > 150) {
digitalWrite(3,LOW);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
tone(12,690);
delay(200);
noTone(12);
delay(200);
}
if (distance_2 < 150) {
digitalWrite(3,LOW);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
tone(12,750);
delay(150);
noTone(12);
delay(50);
}
delay(100);
lcd_1.clear();
}