/*
* Schrankensteuerung
* - ist der Hauptschalter aus, soll das eine LED durch Blinken (1s an, 1s aus) signalisieren
* - ist der Hauptschalter an und Licht trifft auf den LDR, soll sich die Schranke öffnen
*/
// Festlegung der Anschluesse
int LED=8; // Ausgang für LED (Kathode mit 120Ohm an GND)
int sensor=A0; // analoger Eingang für LDR (LDR an 5V, Widerstand 1k an GND)
int schalter=2; // Eingang für Hauptschalter (Schalter an GND)
int servoPin=4; // Signalanschluss für Servo
#include <Servo.h> // Einbinden der Bibliothek zur Servo-Ansteuerung
Servo servoblau; // Anlegen eines Servos
int sensorwert; // Zwischenspeicher für eingelesenen Sensorwert (>200 bedeutet hell)
int schalterstatus; // Zwischenspeicher für eingelesenen Hauptschalter (LOW bedeutet EIN)
void setup(){
Serial.begin(9600); // seriellen Monitor mit einer Geschwindigkeit von 9600 bit/s aktivieren
pinMode(LED, OUTPUT); // Ausgang für LED konfigurieren
pinMode(schalter, INPUT_PULLUP); // Eingang mit internem Widerstand gegen 5V
servoblau.attach(servoPin); // Servo Pin konfigurieren
}
void loop() {
schalterstatus = digitalRead (schalter); // Einlesen des Hauptschalters
if (schalterstatus == LOW) { // ist dieser eingeschaltet, wird die Schranke bei Licht autom. geöffnet
sensorwert=analogRead(sensor); // Einlasen des Lichtsensors
Serial.println(sensorwert); // Ausgeben des Sensorwertes auf dem seriellen Monitor
delay (200); // Programm etwas bremsen, damit der Monitor nicht überläuft
while (sensorwert > 200 && schalterstatus == LOW) { // Solange ausreichend Licht auf den Sensor fällt und Automatikbetrieb aktiv
servoblau.write(90); // Schranke öffnen
sensorwert = analogRead(sensor); // Helligkeit neu einlesen
schalterstatus = digitalRead(schalter); // Hauptschalter neu einlesen
Serial.println(sensorwert); // Ausgeben des Sensorwertes auf dem seriellen Monitor
delay (200); // Programm etwas bremsen, damit der Monitor nicht überläuft
}
servoblau.write( 0 ); // Schranke wieder schließen
} else { // Hauptschalter ist aus, LED blinken lassen
digitalWrite (LED, HIGH);
delay ( 1000 );
digitalWrite (LED, LOW);
delay ( 1000 );
}
}