#define ausloeser 7
#define led 13
#define lichtschranke A0
// Lichtschranken-Schwellenwert festlegen
int lichtschranke_messwert;
int lichtschranke_maximum;
int schwelle;
float lichtschranke_schwellenwertfaktor = 0.85; // Faktor, mit dem der maximale Messwert der Lichtschranke multipliziert wird, um den Schwellenwert zu errechnen, muss unbedingt kleiner als 1 sein!
void setup() {
pinMode(led, OUTPUT);
pinMode(ausloeser, OUTPUT);
digitalWrite(ausloeser, LOW);
Serial.begin(9600);
// Serial.println("Lichtschranke wird kalibiert...");
// Die ersten zwei Sekunden die Lichtschranke kalibrieren
while (millis() < 2000) {
lichtschranke_messwert = analogRead(lichtschranke);
// Maximalwert speichern
if (lichtschranke_messwert > lichtschranke_maximum) {
lichtschranke_maximum = lichtschranke_messwert;
}
}
schwelle = lichtschranke_maximum * lichtschranke_schwellenwertfaktor;
}
void loop() {
int verzoegerung = 120; // Auslöseverzögerung in ms festlegen
int sensorValue = analogRead(lichtschranke);
Serial.println(sensorValue, DEC); // Daten der Lichtschranke auf dem Computer ausgeben => darüber Schwellenwert festlegen
if (sensorValue < schwelle)
{
delay(verzoegerung); // Kameraauslösung verzögern
digitalWrite(ausloeser, HIGH); // Kameraauslöser betätigen
digitalWrite(led, HIGH); // LED anmachen zur Bestätigung, dass die Kamera ausgelöst hat
delay(500); // Kameraauslöser loslassen verzögern
digitalWrite(ausloeser, LOW); // Kameraauslöser wieder loslassen
delay(10000); // 10 Sekunden warten, bevor der Trigger wieder "scharf" ist
digitalWrite(led, LOW); // nach 10 Sekunden auch die LED wieder abschalten
}
}