blackscorpion371:
Dann dürfte aber ldr 2 nicht schalten wenn ich einen Schwellwert von 50 oder kleiner eingebe?!
Ja, genau, das Relais 2 schaltet nie, wenn du 50 als Schwellwert für LDR2 eingibst.
Edit: Nein, Relais 2 schaltet IMMER, wenn du so einen niedrigen Wert als Schwellwert einträgst.
Edit 2: Nein, nein, nein: Du hast recht, Relais 2 schaltet nie, wenn du 50 als Schwellwert für LDR2 eingibst.
Aber mir ist eigentlich der aktuelle Stand des Codes nicht ganz klar.
Hier eine Variante die (zumindest bei mir) funktioniert.
Du musst für dein Projekt wahrrscheinlich noch Anpassungen vornehmen.
// Schalten von Relais bei "Alarm"
// Version 1.5
//
// Falls ein 'A' über die serielle Schnittstelle empfangen wird,
// werden LDRs ausgewertet. Bei "Dunkelheit" werden RelaisPins
// für eine bestimmte Dauer auf LOW geschalten.
const int ldrSchwellwertGarage = 200; // Wert "experimentell" für deinen LDR in der Garage ermitten!
const int ldrSchwellwertHof = 250; // Wert "experimentell" für deinen LDR im Hof ermitten!
const int stromstossDauer = 500; // gewünschte Stromstoß-Dauer (Millisekunden)
const byte relaisPinGarage = 3;
const byte relaisPinHof = 4;
const byte ldrPinGarage = A0;
const byte ldrPinHof = A1;
void setup() {
Serial.begin(9600);
digitalWrite(relaisPinGarage, HIGH); // Das Relais-Modul ist "active LOW". Dies ist ein "Trick", damit es bei Reset nicht einschaltet.
digitalWrite(relaisPinHof, HIGH);
pinMode(relaisPinGarage, OUTPUT);
pinMode(relaisPinHof, OUTPUT);
}
void loop() {
if (Serial.available()) { // wenn Zeichen über die serielle Schnittstelle empfangen wurden...
int inbyte = Serial.read(); // ein Zeichen lesen
if (inbyte == 'A') { // falls das Zeichen ein A ist...
if (analogRead(ldrPinGarage) < ldrSchwellwertGarage) { // LDR(Garage) auswerten und falls es "dunkel" ist, das Relais schalten:
digitalWrite(relaisPinGarage, LOW); // Relais Garage EIN
delay(stromstossDauer);
digitalWrite(relaisPinGarage, HIGH); // Relais Garage AUS
}
if (analogRead(ldrPinHof) < ldrSchwellwertHof) { // LDR(Hof) auswerten und falls es "dunkel" ist, das Relais schalten:
digitalWrite(relaisPinHof, LOW); // Relais Hof EIN
delay(stromstossDauer);
digitalWrite(relaisPinHof, HIGH); // Relais Hof AUS
}
}
}
}