#define DISTANCE 15

// defines pins numbers
const int trigPin = 2;  //D4
const int echoPin = 0;  //D3

// defines variables
long duration;
int distance;
int bool1 = 0;

void setup() {
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
  Serial.begin(9600); // Starts the serial communication
}

void loop() {
  // Clears the trigPin
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);

  // Sets the trigPin on HIGH state for 10 micro seconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);

  // Calculating the distance
  distance = duration * 0.034 / 2;
  // Prints the distance on the Serial Monitor
if (bool1 == 0) {
    //if ((distance != (DISTANCE - 1)) && (distance != (DISTANCE)) && (distance != (DISTANCE + 1))) { //+-1 
      if(((DISTANCE+2)<distance)|| ((DISTANCE-2)>distance)){    //darf +- 2 um festgelegte entfernung schwanken, um störungen herauszufiltern
      Serial.print("Motion detected: ");
      Serial.println(distance);
      bool1 = 1;
      
    }
  }
  else if(bool1==1){
    if(((DISTANCE+2)<distance)|| ((DISTANCE-2)>distance)){    //darf +- 2 um festgelegte entfernung schwanken, um störungen herauszufiltern
    Serial.print("Still motion detected: ");
      Serial.println(distance);
    }
      else{
        //Flag wieder auf 0
        bool1=0;
      }
  }
  delay(100);
}
