Fernbedienungen unterschiedliche Signallänge....?

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.

mfg ein Moderator.

[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.

  1. Fernbedienung sendet wenn man etwas länger drückt einen weiteren Code...
    wenn man nur kurz drückt klappt es..... wie und warum ??? egal...:slight_smile:

So signalisiert die Fernbedienung daß eine Taste länger gedrückt ist. Das macht bei einigen Tasten durchaus Sinn.

Grüße Uwe

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.