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)