/*
Home Challange (Programmbeschreibung):
Durch einen Sensor wird der Servomotor angesteuert. 
Er startet in horizontaler Ebene. (Geschlossene Schranke )´
Durch eine Bewegung wird das Tor geöffnet. 
Der Geöffnete Zustand wird durch die LED angezeigt.
Mit einem Knopf lässt sich die Schranke nach unten fahren.
*/

#include <Servo.h>

// Pin-Zuweisung
const int Bewegungsmelder = 2; // PIR-Sensor
const int Taster = 3;          // Knopf
const int Schranke = 9;        // Servo
const int LED = 4;             // LED
Servo servo;
bool schrankeOben = false;     // Status der Schranke (oben oder unten)

void setup() {
  pinMode(Bewegungsmelder, INPUT);
  pinMode(Taster, INPUT_PULLUP); 
  pinMode(LED, OUTPUT);

  servo.attach(Schranke);
  servo.write(90); // Schranke startet geschlossen
  digitalWrite(LED, HIGH); 
}

void loop() {
  if (digitalRead(Bewegungsmelder)){
    digitalWrite(LED, LOW);
  }

  if (!digitalRead(Bewegungsmelder) && !digitalRead(Taster)){
    digitalWrite(LED, HIGH); 
  }
  
  if (!schrankeOben && digitalRead(Bewegungsmelder)) {
    servo.write(0);             
    schrankeOben = true;        
    delay(50);                 
  }
   
  if (schrankeOben && !digitalRead(Taster)) {
    servo.write(90);            
    schrankeOben = false;       
    delay(50);                 
  }
}
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
servo1:GND
servo1:V+
servo1:PWM
pir1:VCC
pir1:OUT
pir1:GND
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
r1:1
r1:2
r2:1
r2:2
led1:A
led1:C