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