#include <Servo.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
Servo myServo;
Adafruit_MPU6050 mpu;
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define PIN_TRIG1 2
#define PIN_ECHO1 3
#define PIN_TRIG2 4
#define PIN_ECHO2 5
#define PIN_TRIG3 6
#define PIN_ECHO3 7
#define PIN_LED 13
#define PIN_SERVO 9
#define PIN_BTN 8
int getDis(int PIN_TRIG, int PIN_ECHO) {
  // Start a new measurement:
  digitalWrite(PIN_TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(PIN_TRIG, LOW);

  // Read the result:
  int duration = pulseIn(PIN_ECHO, HIGH)/58;
 // Serial.print("Distance in CM: ");
  //Serial.println(duration / 58);
  return duration;
}
void setup() {
  Serial.begin(115200);

  myServo.attach(PIN_SERVO);
   myServo.write(0); 
  pinMode(PIN_BTN, INPUT_PULLUP);
  pinMode(PIN_LED, OUTPUT);
  pinMode(PIN_TRIG1, OUTPUT);
  pinMode(PIN_ECHO1, INPUT);
  pinMode(PIN_TRIG2, OUTPUT);
  pinMode(PIN_ECHO2, INPUT);
  pinMode(PIN_TRIG3, OUTPUT);
  pinMode(PIN_ECHO3, INPUT);
  lcd.init();
  lcd.backlight();
  lcd.setCursor(1, 0);
  lcd.print("Hello, Wokwi!");
   while (!mpu.begin()) {
    Serial.println("MPU6050 not connected!");
    delay(1000);
  }
}

void loop() {
  mpu.getAccelerometerSensor()->getEvent(&event);

  Serial.print("[");
  Serial.print(millis());
  Serial.print("] X: ");
  Serial.print(event.acceleration.x);
  Serial.print(", Y: ");
  Serial.print(event.acceleration.y);
  Serial.print(", Z: ");
  Serial.print(event.acceleration.z);
  Serial.println(" m/s^2");
  //读取距离
  int dis1 = getDis(PIN_TRIG1, PIN_ECHO1);
  int dis2 = getDis(PIN_TRIG2, PIN_ECHO2);
  int dis3 = getDis(PIN_TRIG3, PIN_ECHO3);
  if (dis1 < 15 || dis2 < 15 || dis1 < 15) { //距离小于有障碍
    digitalWrite(PIN_LED, HIGH);
    delay(500);
    digitalWrite(PIN_LED, LOW);
  }else{
    
    if(digitalRead(PIN_BTN)==0){
      //Serial.print("ddddd");
      myServo.write(90);  //开门
      delay(1000);
      myServo.write(0);  //开门
    }
  }
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
lcd:GND
lcd:VCC
lcd:SDA
lcd:SCL
imu1:INT
imu1:AD0
imu1:XCL
imu1:XDA
imu1:SDA
imu1:SCL
imu1:GND
imu1:VCC
servo1:GND
servo1:V+
servo1:PWM
led1:A
led1:C
r1:1
r1:2
bz1:1
bz1:2
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND
ultrasonic2:VCC
ultrasonic2:TRIG
ultrasonic2:ECHO
ultrasonic2:GND
ultrasonic3:VCC
ultrasonic3:TRIG
ultrasonic3:ECHO
ultrasonic3:GND
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
r2:1
r2:2