Guten Abend zusammen, ich stehe mit einer (wahrscheinlich) sehr leichten Aufgabe auf dem Schlauch.
Ich hab an einer Tür einen kapazitiven Sensor verbaut, dieser soll wenn die Tür offen ist 2 Relais schalten, das erste für die Beleuchtung, das zweite als Signal das die Tür geöffnet ist.
Das funktioniert soweit auch alles optimal. Jetzt möchte ich gerne noch einen Taster integrieren der nur die Beleuchtung ausschaltet/einschaltet, sobald die Tür zu ist sollen beide Relais LOW sein.
Kann einer von euch mal mit über den Sketch schauen? Vielen Dank
P.S. ich weiß gar nicht wie ich anfangen soll, deswegen gibt es zur Abfrage des Tasters momentan noch gar nichts. All meine Versuche sind gescheitert..
int LED = 8;
int Tuer = 9;
int Sensor = 2;
int Taster = 3;
void setup() {
// put your setup code here, to run once:
pinMode (LED, OUTPUT);
pinMode (Tuer, OUTPUT);
pinMode (Sensor, INPUT);
pinMode (Taster, INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
if (digitalRead(Sensor) == HIGH)
{
digitalWrite(LED,HIGH);
digitalWrite(Tuer,HIGH);
}
else {
digitalWrite(LED, LOW);
digitalWrite(Tuer, LOW);
}
}
void loop()
{
// put your main code here, to run repeatedly:
if (digitalRead(Sensor) == HIGH)
{
digitalWrite(LED, HIGH);
digitalWrite(Tuer, HIGH);
}
else
{
digitalWrite(LED, LOW);
digitalWrite(Tuer, LOW);
}
if (Tuer == HIGH) // Tür ist auf?
{
if (digitalRead(Taster) == LOW) // dann darf Taste abgefragt werdem
{
digitalWrite(LED, !digitalRead(LED)); // Zustand ändert sich mit Tastendruck
}
}
else // Tür ist zu?
digitalWrite(LED, LOW); // AUS!
}
Danke! Sensor funktioniert noch halbwegs, die LED am Relais geht aus. Das Relais selber schaltet aber nicht mehr, es ist als würde das Relais 'flackern' also super schnell zwischen Offen/Geschlossen wechseln. Der Taster funktioniert leider gar nicht..
Tür auf oder zu - das war die Frage.
(Gedanke dahinter: relaismodul schaltet LOW-aktiv. LED HIGH-aktiv, Ich sehe nicht, was zusammengehört)
Wäre schön gewesen, wenn ich das gleich verstanden hätte, was Du mir sagen willlst...
21:33:56.404 -> Start...
21:33:56.404 -> LED ist: an
21:33:56.404 -> Tuer ist: auf
21:33:59.983 -> LED ist: aus
21:33:59.983 -> Tuer ist: zu
21:34:00.151 -> LED ist: an
21:34:00.151 -> Tuer ist: auf
21:34:05.766 -> LED ist: aus
21:34:05.766 -> Tuer ist: zu
21:34:05.892 -> LED ist: an
21:34:05.925 -> Tuer ist: auf
21:34:11.028 -> LED ist: aus
21:34:11.161 -> LED ist: an
21:34:11.593 -> LED ist: aus
21:34:11.659 -> LED ist: an
21:34:11.659 -> LED ist: aus
21:34:11.659 -> LED ist: an
21:34:13.487 -> LED ist: aus
21:34:13.487 -> LED ist: an
21:34:13.953 -> LED ist: aus
21:34:14.020 -> LED ist: an
21:34:14.285 -> LED ist: aus
21:34:14.387 -> LED ist: an
ah okay, das funktioniert bei mir auch, im Seriellen Monitor passt auch alles, am Relais wird jedoch nur die LED gedimmter, schalten tut das Relais aktuell noch nicht..
der Serielle Monitor spuckt mir was ähnliches aus
21:37:17.298 -> LED ist: an
21:37:19.091 -> LED ist: aus
21:37:19.618 -> LED ist: an
21:37:19.618 -> LED ist: aus
21:37:19.618 -> LED ist: an
21:37:19.862 -> LED ist: aus
21:37:21.035 -> Tuer ist: zu
21:37:21.652 -> Tuer ist: auf
21:37:22.024 -> Tuer ist: zu
21:37:22.292 -> Tuer ist: auf
21:37:22.630 -> Tuer ist: zu
21:37:22.977 -> Tuer ist: auf
21:37:24.143 -> LED ist: an
21:37:26.719 -> LED ist: aus
21:37:27.407 -> Tuer ist: zu
21:37:27.579 -> Tuer ist: auf
21:37:28.312 -> Tuer ist: zu
21:37:28.346 -> Tuer ist: auf
void loop()
{
if (digitalRead(Sensor) == HIGH)
{
if (!lastSensor)
{
lastSensor = HIGH;
Serial.println(F("Sensor ausgelöst"));
}
digitalWrite(LED, HIGH);
digitalWrite(Tuer, HIGH);
}
else
{
if (lastSensor)
{
lastSensor = LOW;
Serial.println(F("Sensor beendet"));
}
digitalWrite(LED, LOW);
digitalWrite(Tuer, LOW);
}
if (digitalRead(Tuer) == HIGH) // Tür ist auf?
{
if (digitalRead(Taster) == LOW) // dann darf Taste abgefragt werdem
{
digitalWrite(LED, !digitalRead(LED)); // Zustand ändert sich mit Tastendruck
}
}
else // Tür ist zu?
digitalWrite(LED, LOW); // AUS!
serMon();
}
Ergebnis bei mir:
21:48:56.834 -> Start...
21:48:56.834 -> Sensor ausgelöst
21:48:56.834 -> LED ist: an
21:48:56.834 -> Tuer ist: auf
21:49:01.675 -> Sensor beendet
21:49:01.675 -> LED ist: aus
21:49:01.675 -> Tuer ist: zu
21:49:01.973 -> Sensor ausgelöst
21:49:01.973 -> LED ist: an
21:49:01.973 -> Tuer ist: auf
21:49:08.905 -> LED ist: aus
21:49:09.071 -> LED ist: an
21:49:09.535 -> LED ist: aus
21:49:09.668 -> LED ist: an
Danke! Sobald ich den Taster drück springt es im Monitor von aus sofort wieder auf An.
In der Praxis schaltet das Relais gar nicht..
22:02:29.121 -> Sensor beendet
22:02:29.121 -> LED ist: aus
22:02:29.121 -> Tuer ist: zu
22:02:29.706 -> Sensor ausgelöst
22:02:29.706 -> LED ist: an
22:02:29.706 -> Tuer ist: auf
22:02:30.266 -> Sensor beendet
22:02:30.266 -> LED ist: aus
22:02:30.266 -> Tuer ist: zu
22:02:30.905 -> Sensor ausgelöst
22:02:30.905 -> LED ist: an
22:02:30.905 -> Tuer ist: auf
22:02:33.549 -> LED ist: aus
22:02:33.549 -> LED ist: an
22:02:33.549 -> LED ist: aus
22:02:33.688 -> LED ist: an
22:02:34.550 -> LED ist: aus
22:02:34.550 -> LED ist: an
22:02:34.550 -> LED ist: aus
22:02:34.695 -> LED ist: an
22:02:35.844 -> LED ist: aus
22:02:35.844 -> LED ist: an
22:02:35.844 -> LED ist: aus
22:02:35.844 -> LED ist: an
22:02:35.844 -> LED ist: aus
22:02:35.981 -> LED ist: an