Dimmermodul Steuern

Hallo zusammen,

ich stehe vor einem kleinen Rätsel. Ich möchte eine Beleuchtung mittels Dimmer starten. Am Dimmer ist neben der Startzeit auch der Startwert (in Prozent) und der Maximalwert (auch Prozent), sowie die Dauer des Dimmvorganges (Wieviel Minuten von Minimum zu Maximum) einstellbar.
Ich bekomme es hin, dass mein Licht startet aber nicht das dimmen. Es ist entweder ein Diskolicht (sekündliches Dimmen) oder tut gar nichts.
Bitte sagt mir wo der Fehler im folgenden Quelltext ist.

 if (AktuelleZeit > Anzeit[2] && AktuelleZeit < Auszeit[2])                                   // Prüfen ob aktuelle Zeit zwischen Einschalt- & Abschaltzeit
          {
            DimmzeitTag1 = (Anstunde[2]*3600L) + (Anminute[2]*60L) + (Dimmerzeit[1]*60L);            // Vergleichszeit für Start + Dimmeranlaufzeit ermitteln
          if (AktuelleZeit < DimmzeitTag1)                                                           // Prüfen ob Dimmphase für Andimmen 
            {
               if (CTR_timer_Dimmer(EndeDimmer_TagL1, 60000))                                                    // Schrittintervall 1 Minute  
                {
                  ValueDimTL1Weite2 = int((((255/100)*Dimmermax[1])-((255/100)*Dimmermin[1]))/Dimmerzeit[1]);    // Wieviel Steps pro Minute höher Dimmen
                  ValueDimTL1Start = ValueDimTL1Ende+ValueDimTL1Weite;                                           // Dimmerwert festlegen   
                }
              analogWrite(TagLicht1Pin, ValueDimTL1Start);
            }

Danke

Ich glaube niemand weil Du

  1. Nicht den ganzen Sketch uns gegeben hast
  2. keine Angaben zur HW gegeben hast ( Welcher Arduino, welche Beleuchtung ecc)

Grüße Uwe

Sorry vergessen.

Also Hardware:
Arduino Mega, Ansteuerung der Dimmer über PWM an N-Fet.

Ansteuerung mit einzelwerten über Fading läuft auch.

Den Sketch hänge ich als Zip dran.

Hier der Ausschnitt der Funktion

 //********************************************************************************************************************************************************
  //****************************************************Setzen der Alarme nach Variabelen laden  ***************************************************************
  //********************************************************************************************************************************************************
  void Alarmpruefen ()
  {
    long Anzeit[14];
    long Auszeit[14];
    int ValueDimTL1Start;
    int ValueDimTL2Start;
    int ValueDimNLStart;
    int ValueDimTL1Ende;
    int ValueDimTL2Ende;
    int ValueDimNLEnde;
    int ValueDimTL1Weite;
    int ValueDimTL2Weite;
    int ValueDimNLWeite;
    int ValueDimTL1Weite2;
    int ValueDimTL2Weite2;
    int ValueDimNLWeite2;
    long DimmzeitTag1;
    int a = 0;
        
    time_t AktuelleUhrzeit = now();                                  // Uhrzeit auslesen 
    AktuelleStunde = hour(AktuelleUhrzeit);                          // Stunde davon ermitteln
    AktuelleMinute = minute(AktuelleUhrzeit);                        // Minute ermitttteln 
    long AktuelleZeit = AktuelleStunde*3600L+AktuelleMinute*60L;     // Long aus Zeit ermitteln in sekunden L hinter Zahl für Übergabe an Long
    
    for(int i = 0; i<15; i++)                                        // Long je Schaltzeit
    {
      Anzeit[i] = (Anstunde[i]*3600L) + (Anminute[i]*60L);
      Auszeit[i] = (Ausstunde[i]*3600L) + (Ausminute[i]*60L);
    }
    
    //Taglicht 1 Zeitschaltung
    if (Lichtmanuell == 'c')                                                                          // Prüfen ob Licht im Zeitschaltmodus
    {
      if (EverOn[2] == false)                                                                        // Prüfen ob Daubetrieb deaktivert  
      {  
        if (AktuelleZeit > Anzeit[2] && AktuelleZeit < Auszeit[2])                                   // Prüfen ob aktuelle Zeit zwischen Einschalt- & Abschaltzeit
          {
            DimmzeitTag1 = (Anstunde[2]*3600L) + (Anminute[2]*60L) + (Dimmerzeit[1]*60L);            // Vergleichszeit für Start + Dimmeranlaufzeit ermitteln
          if (AktuelleZeit < DimmzeitTag1)                                                           // Prüfen ob Dimmphase für Andimmen 
            {
               if (CTR_timer_Dimmer(EndeDimmer_TagL1, 60000))                                                    // Schrittintervall 1 Minute  
                {
                  ValueDimTL1Weite2 = int((((255/100)*Dimmermax[1])-((255/100)*Dimmermin[1]))/Dimmerzeit[1]);    // Wieviel Steps pro Minute höher Dimmen
                  ValueDimTL1Start = ValueDimTL1Ende+ValueDimTL1Weite;                                           // Dimmerwert festlegen   
                }
              analogWrite(TagLicht1Pin, ValueDimTL1Start);
            }
          else if (AktuelleZeit < Auszeit[2] && AktuelleZeit > Auszeit[2]-(Dimmerzeit[2]*1L))                    // Prüfen ob Dimmphase für Andimmen 
            {
              Serial.println("in schleife für ende");
              if (CTR_timer_Dimmer(EndeDimmer_TagL1, 60000))                                                    // Schrittintervall 1 Minute  
                {
                  ValueDimTL1Weite2 = int((((255/100)*Dimmermax[2])-((255/100)*Dimmermin[2]))/Dimmerzeit[2]);
                  ValueDimTL1Ende = ValueDimTL1Ende+ValueDimTL1Weite2;
                }
              analogWrite(TagLicht1Pin, ValueDimTL1Ende);
            }
          else
            {
              //Serial.println("in schleife für normalbetrieb");
              analogWrite(TagLicht1Pin, int((255/100)*Dimmermax[1]));
            }
          }               
        else
          {analogWrite(TagLicht1Pin, 0);}
      }  
      else
      {
        analogWrite(TagLicht1Pin, 255);
      }
    }
    else if (Lichtmanuell == 'm'){analogWrite(TagLicht1Pin, 255);}
    else if (Lichtmanuell == 'o'){analogWrite(TagLicht1Pin, 0);}
    
    
    //Taglicht 2 Zeitschaltung  
    if (Lichtmanuell == 'c')
    {
        if (EverOn[3] == false)
      {  
        if (AktuelleZeit > Anzeit[3] && AktuelleZeit < Auszeit[3])
          {analogWrite(TagLicht2Pin, 255);}
        else
          {analogWrite(TagLicht2Pin, 0);}
      }  
      else
      {
          {analogWrite(TagLicht2Pin, 255);}
      }
    }
    else if (Lichtmanuell == 'm'){analogWrite(TagLicht2Pin, 255);}
    else if (Lichtmanuell == 'o'){analogWrite(TagLicht2Pin, 0);}
    
   
   //Nachtlicht Zeitschaltung
    if (Lichtmanuell == 'c')
    {
        if (EverOn[4] == false)
      {  
        if (AktuelleZeit > Anzeit[4] && AktuelleZeit < Auszeit[4])
          {analogWrite(NachtLichtPin, 255);}
        else
          {analogWrite(NachtLichtPin, 0);}
      }  
      else
      {
        analogWrite(NachtLichtPin,255);
      }
    } 
    else if (Lichtmanuell == 'm'){analogWrite(NachtLichtPin, 255);}
    else if (Lichtmanuell == 'o'){analogWrite(NachtLichtPin, 0);} 


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    //Stömungspumpe Zeitschaltung
    if (Pumpemanuell == 'c')
    {
        if (EverOn[5] == false)
      {  
        if (AktuelleZeit > Anzeit[5] && AktuelleZeit < Auszeit[5])
          {digitalWrite(StoemungspumpePin, LOW);}
        else
          {digitalWrite(StoemungspumpePin, HIGH);}
      }  
      else
      {
        digitalWrite(StoemungspumpePin,LOW);
      } 
    } 
    else if (Pumpemanuell == 'm'){digitalWrite(StoemungspumpePin, LOW);}
    else if (Pumpemanuell == 'o'){digitalWrite(StoemungspumpePin, HIGH);} 


    //Sauerstoff Zeitschaltung
      if (EverOn[6] == false)
    {  
      if (AktuelleZeit > Anzeit[6] && AktuelleZeit < Auszeit[6])
        {digitalWrite(SauerstoffPin, LOW);}
      else
        {digitalWrite(SauerstoffPin, HIGH);}
    }  
    else
    {
      digitalWrite(SauerstoffPin,LOW);
    }     
      

    //Co2 Zeitschaltung
      if (EverOn[7] == false)
    {  
      if (AktuelleZeit > Anzeit[7] && AktuelleZeit < Auszeit[7])
        {digitalWrite(Co2Pin, LOW);}
      else
        {digitalWrite(Co2Pin, HIGH);}
    }  
    else
    {
      digitalWrite(Co2Pin,LOW);
    }    
 

    //Filter Zeitschaltung
    if (Pumpemanuell == 'c')
    {
        if (EverOn[8] == false)
      {  
        if (AktuelleZeit > Anzeit[8] && AktuelleZeit < Auszeit[8])
          {digitalWrite(FilterPin, LOW);}
        else
          {digitalWrite(FilterPin, HIGH);}
      }  
      else
      {
        digitalWrite(FilterPin,LOW);
      }
    }
    else if (Pumpemanuell == 'm'){digitalWrite(FilterPin, LOW);}
    else if (Pumpemanuell == 'o'){digitalWrite(FilterPin, HIGH);}    
    

    //Heizung Zeitschaltung
    if (Pumpemanuell == 'c')
    {
      if (EverOn[9] == false)
      {  
        if (AktuelleZeit > Anzeit[9] && AktuelleZeit < Auszeit[9])
          {digitalWrite(HeizungPin, LOW);}
        else
          {digitalWrite(HeizungPin, HIGH);}
      }  
      else
      {
        digitalWrite(HeizungPin,LOW);
      } 
    }
    else if (Heizungmanuell == 'm'){digitalWrite(HeizungPin, LOW);}
    else if (Heizungmanuell == 'o'){digitalWrite(HeizungPin, HIGH);}        
    

    //Supply1 Zeitschaltung
      if (EverOn[10] == false)
    {  
      if (AktuelleZeit > Anzeit[10] && AktuelleZeit < Auszeit[10])
        {digitalWrite(Supply1Pin, LOW);}
      else
        {digitalWrite(Supply1Pin, HIGH);}
    }  
    else
    {
      digitalWrite(Supply1Pin,LOW);
    }   


    //Supply2 Zeitschaltung
      if (EverOn[11] == false)
    {  
      if (AktuelleZeit > Anzeit[11] && AktuelleZeit < Auszeit[11])
        {digitalWrite(Supply2Pin, LOW);}
      else
        {digitalWrite(Supply2Pin, HIGH);}
    }  
    else
    {
      digitalWrite(Supply2Pin,LOW);
    }    
  }

aqua5.zip (15.8 KB)