Deckenlampenschaltung

Hi leute, leider ist nun doch ein problem aufgetreten und zwar hat sich um 4 uhr nachts einfach das licht eingeschalten.

weiß jemand woran das liegen kann? vielleicht irgendwelche fehler vom IR empfänger.

ich hänge mal noch das sketch an.vielleicht liegt ja da der fehler.
oder jemand hat noch verbesserungsvorschläge.

danke schon mal

p.s. die Deckenlampen laufen alle auf 12v bei mir. Der 230volt bereicht wird in KEINER weise angefasst!

#include <IRremote.h>

int dl1 = 2;      //relais ausgang
int dl2 = 3;      //relais ausgang

int lampe1 = 0;   //status
int lampe2 = 0;   //status

int wtaster1 = 5; //Pin 5 eingang für Wandtaster1
int wtaster2 = 6; //Pin 6 eingang für Wandtaster2

int RECV_PIN = 11;  //ir pin
IRrecv irrecv(RECV_PIN);
decode_results results;

//--------------

void setup()
{

  Serial.begin(115200);

  pinMode (dl1, OUTPUT);   //Deckenlampe 1
  pinMode (dl2, OUTPUT);   //Deckenlampe 2

  pinMode (wtaster1, INPUT);     //Wandtaster1 oben
  pinMode (wtaster2, INPUT);     //Wandtaster2 unten

  //SetupRelais
//  digitalWrite(dl1, LOW);    //Diese soll zunächst aus sein
//  digitalWrite(dl2, LOW);   //Diese soll zunächst aus sein
//  delay(500);
  digitalWrite(dl1, HIGH);    //Diese soll zunächst an sein
  digitalWrite(dl2, HIGH);   //Diese soll zunächst an sein
//  delay(500);
//  digitalWrite(dl1, LOW);    //Diese soll zunächst aus sein
//  digitalWrite(dl2, LOW);   //Diese soll zunächst aus sein
//  delay(500);
  //SetupEnde
  
  irrecv.enableIRIn();
}

//--------------

void loop() {
  if (Serial.available()){
    debugloop();
  }

  irabfrage();
  tasterabfrage();
  ausgang_schalten();
}

//--------------

void irabfrage(){
  //IR Abfragen
  if (irrecv.decode(&results)) {

    Serial.println(results.value, HEX);

    if (results.value == 0xFF30CF)    //Wohnzimmer
      if (lampe1 == 1)
      {
        lampe1 = 0;
      }
      else
      {
        lampe1 = 1;
      }
    if (results.value == 0xFF6897)    //küche
      if (lampe2 == 1)
      {
        lampe2 = 0;
      }
      else
      {
        lampe2 = 1;
      }
    irrecv.resume();
  }
}

//--------------

void tasterabfrage(){
  //Wandtaster abfragen
  if (digitalRead(wtaster1) == HIGH)
    if (lampe1 == 1)
    {
      lampe1 = 0;
      delay(500);
    }
    else
    {
      lampe1 = 1;
      delay(500);
    }

  if (digitalRead(wtaster2) == HIGH)
    if (lampe2 == 1)
    {
      lampe2 = 0;
      delay(500);
    }
    else
    {
      lampe2 = 1;
      delay(500);
    }
}

//--------------

void debugloop() {
  Serial.println("-----------------------");
  Serial.print("Wandtaster 1: ");
  Serial.println(digitalRead(wtaster1));
  Serial.println("-----------------------");
  Serial.print("Wandtaster 2: ");
  Serial.println(digitalRead(wtaster2));
  Serial.println("-----------------------");
  Serial.println(results.value, HEX);
  Serial.println("-----------------------");
  delay(500);
}

//--------------

void ausgang_schalten() {
  //Ausgang Schalten
  if (lampe1 == 1) {
    digitalWrite(dl1, HIGH);
  }
  if (lampe1 == 0) {
    digitalWrite(dl1, LOW);
  }
  if (lampe2 == 1) {
    digitalWrite(dl2, HIGH);
  }
  if (lampe2 == 0) {
    digitalWrite(dl2, LOW);
  }
  delay(500);
}

//--------------

deckenlampe.ino (2.73 KB)