Liebe Forum
Ich habe meine Steuerung für Wellness im Keller mit der Funktion ergänzt dass sich die Wassertemperatur einstellen lässt.
Dazu benutze ich 2 verschiedene Modelle einer Fernbedienung beide von iDual - beide geben exakt die gleichen Codes aus. Im Prgramm messe Ich die Zeit wenn ich das Mischventil öffne oder schliesse um es anschliessend wieder automatisch zu stoppen.
Das ganze funktioniert wie gewünscht mit der einen Fernbedienung. Jedoch nicht mit der zweiten. Bei dieser scheint die Zeitmessung nicht oder zu spät zu starten.??? Und der Mischer stoppt dann nicht mehr??? Steuerung_Hamam_L_ftung_Musik_Warmwasser_.ino (4,1 KB)
Vielleicht hat jemand eine Idee an was das liegen könnte?!?
Herzlichen Dank für eure Mühe.
Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
[code]
#include <IRremote.h>
uint32_t startzeitluft;
uint32_t startzeitwarm;
uint32_t startzeitkalt;
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
//Die Codes Für Die Fernbedienung
//
// 1. 1082097791 Musik alle an
// 2. 1082081471 Musik alle aus
// 3. 1082099831 Musik ohne Sub
// 4. 1082091671
// 5. 1082085551
// 6. 1082083511 Musik nur im Dampf
// 7. 1082067191
// 8. 1082101871
// 9. 1082089631 Lüfter Piazza an
// 10.1082110031 Lüfter Dampf an
// 11.1082122271 Temperaturrelais stop
// 12.1082107991
// 13.1082122271 Relais Wasser heisser
// 14.1082069231 Relais Wasser kälter
// 15.1082077391 Stop Temperatur Mischmotor
// 16.1082103911 Lüfter Piazza ab
// 17.1082075351 Lüfter Dampf aus
void setup()
{
Serial.begin(9600);
pinMode (13, OUTPUT); // Lüfter Pin 13 /12 /8/7/2 als Ausgänge definieren
pinMode (12, OUTPUT); // Lüfter
pinMode (8,OUTPUT); //Dampfboxe
pinMode (7,OUTPUT); //Piazza,
pinMode (2,OUTPUT); //Subwoover
pinMode (4,OUTPUT); // Wasser wärmer
pinMode (5,OUTPUT); //Wasser kälter
irrecv.enableIRIn();
}
void loop()
{
if (irrecv.decode(&results))
{
if (results.value == 1082089631) //Regelung für Lüfter Piazza on
{digitalWrite (13, LOW);}
if (results.value == 1082103911) //Regelung für Lüfter Piazza off
{digitalWrite (13, HIGH);}
if (results.value == 1082110031) // Regelung Lüfter Dampf
{
digitalWrite (12, LOW); // mache Lüfter an
startzeitluft = millis(); // starte Zeit um Lüfter danach wieder abzustellen
}
if (results.value == 1082075351) // mache Lüfter Dampf aus
{digitalWrite (12, HIGH);}
//Regelung Sound
if (results.value == 1082097791) //Regelung Sound
{
digitalWrite (7, LOW); // schalte kleine Boxen an
digitalWrite (8, LOW);
digitalWrite (2, LOW);
}
if (results.value == 1082081471)
{
digitalWrite (7, HIGH); // schalte kleine Boxen aus
digitalWrite (8, HIGH);
digitalWrite (2, HIGH);
}
if (results.value == 1082083511) //Musik nur in Dampfkabine
{
digitalWrite (7, HIGH); // schalte piazza und Schlafraum und Sub aus
digitalWrite (8, HIGH);
digitalWrite (2, LOW); // schalte Dampfkabine Boxen an
}
if (results.value == 1082099831) // Subwoover aus!
{
digitalWrite (7, HIGH); // schalte Sub aus
digitalWrite (8, LOW);
digitalWrite (2, LOW); // andere Boxen bleiben an
}
Serial.print(results.value );
irrecv.resume(); // Warte auf nächsten Wert
}
if (millis() - startzeitluft > 3600000) // Wenn Zeit um mache Lüfter wieder aus
{digitalWrite(12, HIGH);}
// Regelung Warmwasser
//auf kalt stellen
if (results.value == 1082069231) // stelle Wassertemperatur auf kalt
{
digitalWrite (5, HIGH); // Schalte Relais "heisser" ab
digitalWrite (4, LOW); // Schalte Relais "kälter" an
startzeitkalt = millis(); // starte Zeit um Relais "kälter" wieder abzustellen
}
if (millis() - startzeitkalt > 4000) // Wenn Zeit um schalte Relais "kälter" wieder aus 1082089631
{digitalWrite(4, HIGH);}
//auf heiss stellen
if (results.value == 1082093711) // stelle Wassertemperatur auf warm
{
digitalWrite (4, HIGH); // schalte Relais "kälter" ab
digitalWrite (5, LOW); // Schalte Relais "heisser" an
startzeitwarm = millis(); // starte Zeit um Relais "heisser" wieder abzustellen
}
if (millis() - startzeitwarm > 4000) // Wenn Zeit um schalte Relais "heisser" wieder aus
{digitalWrite(5, HIGH);}
//Beide Relais "heisser & kälter " abstellen Funktion ist sinnlos :-)
if (results.value == 1082077391) // stoppe Temperatur wo sie ist!
{
digitalWrite (4, HIGH); //
digitalWrite (5, HIGH); // setzte beide Relais auf OFF
}
}
[/code]
Wenn es tatsächlich mit einer Fernbedienung fehlerfrei funktioniert, dann liegt es vermutlich nicht am Sketch, sondern an der Verbindung der 2. FB zum Sketch.
Da solltest du die Code der 2. FB nochmal genau prüfen.