PWM abfragen Digital schalten

@Uwe: Da steht aber noch eine Funktion drin:

// write value within the timeframe to PWM
  analogWrite(Blue1Pin,   brightness(time, 7*HOUR+00*MINUTE,                 21*HOUR+00*MINUTE));
  analogWrite(White2Pin,  brightness(time, 8*HOUR+30*MINUTE,                 19*HOUR+30*MINUTE));

Die Funktion "brightness()" rechnet vermutlich die Helligkeit aus, die für das Auf- und Untergehen, abhängig von der Zeit, gesetzt werden soll.
00*MINUTE ist aber immer 0, daher würde ich das weglassen.

@All:
Viel spannender finde ich folgendes Konstrukt:

// write actual value in % to LCD (max. 255 = 100%)
analogWrite(10,??);
if (??==0)
{
digitalWrite(2, HIGH);
}
else
{
digitalWrite(2, LOW);
}

Was bitte ist "??" ?
Falls das eine Variable sein soll, wird das kaum funktionieren. Es wundert mich schon, das der Compiler hier nicht meckert. Dazu kommt, das für diese Variable der Wert nie gesetzt wird, da wird der wohl immer "0" sein.
das analogWrite(10,??) schreibt dann den "vermutlichen" Wert 0 auf der Pin 10. Das ist aber Dein Blue1Pin, das Du 3 Zeilen darüber gerade gesetzt hast. Am Ende wird dann also immer 0 auf das Blue1Pin geschrieben, also "Sonne aus" und weil Sonne aus, dürfte dann der Mond immer an sein, weil Du dann immer das "digitalWrite(2, HIGH);".

Wenn Du schon Variable definierst, um Pins zu identifizieren, dann verwende die auch konsequent im Code, sonst bekommst Du irgendwann Probleme. Versuch mal die Helligkeit in Variablen zu speichern und die dann zu verwenden, z.B.:

int sonneHelligeit= brightness(time, 7*HOUR+00*MINUTE,21*HOUR+00*MINUTE);
...
if(sonneHelligkeit==0) {
    digitalWrite(mondPIN,HIGH);
} else {
    digitalWrite(mondPIN,LOW);
}
...

Damit wird Dein Code auch deutlich lesbarer, weil klar ist auf welche Werte sich einzelne Codeabschnitte beziehen.
Mario.