Deckenlampenschaltung

die wiederstände habe ich schon auf 1kohm ausgelegt.

ah ok . ja mit den eeprom funktionen usw kenne ich mich noch nicht so aus.
habe selber die tage noch an dem sketch gearbeitet und hänge es hier mal an.
momentan scheint es gut zu funktionieren und ich habe noch aus spaß mit eingebaut das lciht über die serielle schnittstelle ein und aus zu schalten.

DerLehmi:
Du hast in Deinem Code eine Ausgabe auf der seriellen Konsole vorgesehen.... dies kann (u.A.) eine Ursache für einen Neustart des Controllers sein, wenn nichts angeschlossen ist. Also wenn Du nicht 24/7 eine serielle Konsole dran hast, einfach auskommentieren und neu probieren.
Um sicher zu gehen, dass der Controller aus irgendwelchen Gründen neu startet, kannst Du ja im Setup eine 1 auf eine Stelle im EEPROM dazuaddieren. Sollte wieder etwas passieren, was nicht soll, dann mal den EEPROM auslesen. Ist der Wert verändert, gab es einen Neustart.

@DerLehmi: wie kann ich das mir dem eeprom in meinem aktuellen sketch realisieren???
dann habe ich gleich ein sinnvolles beispiel das ich eventuell auf andere projekte anpassen kann.

#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;

int debugwert = 0;

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

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

  if (!Serial.available()) {
    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();      //IR Aktivieren
}

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

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

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

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

void irabfrage() {
  //IR Abfragen
  if (irrecv.decode(&results)) {
    if (!Serial.available()) {
      Serial.println("---------------------------------");
      Serial.print("Aktueller HEX-code:  ");
      Serial.println(results.value, HEX);
      Serial.println("---------------------------------");
    }
    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;
      }
    delay(500);
    irrecv.resume();
  }
}

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

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

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

void debugloop() {
  if (debugwert == 1) {
    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(250);
  }
}

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

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);
}

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

void chkSer(void) {
  if (!Serial.available()) return;
  switch (Serial.read()) {
    case 'w':
      if (lampe1 == 1)
      {
        lampe1 = 0;
        Serial.println("Wohnzimmer aus");
        delay(500);
      }
      else
      {
        lampe1 = 1;
        Serial.println("Wohnzimmer an");
        delay(500);
      }
      break;
    case 'k':
      if (lampe2 == 1)
      {
        lampe2 = 0;
        Serial.println("Küche aus");
        delay(500);
      }
      else
      {
        lampe2 = 1;
        Serial.println("Küche an");
        delay(500);
      }

      break;
    case 'd':
      if (debugwert == 1)
      {
        debugwert = 0;
        Serial.println("Debug aus");
        delay(500);
      }
      else
      {
        debugwert = 1;
        Serial.println("Debug an");
        delay(500);
      }

      break;
    default:
      Serial.println('?');
      Serial.println("------------------------------");
      Serial.println("Wohnzimmer An/Aus   -->   w");
      Serial.println("Küche An/Aus        -->   k");
      Serial.print("Status Wohnzimmer:  ");
      Serial.println(lampe1);
      Serial.print("Status Küche:  ");
      Serial.println(lampe2);
      Serial.println("----------");
      Serial.println("Debug An/Aus        -->   d");
      Serial.print("Status:  ");
      Serial.println(debugwert);
      Serial.println("------------------------------");
  }
}

danke schon mal