Here is code that is designed for use of MOSFETs allowing rapid on/off to give dimming effect. It should give you an idea on what to code.
// Keihi 24hr 1/2 sunrise/sunset + 10 minute storm
int ledPin11 = 11;
void setup (){}
void loop (){
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=1)
{analogWrite(ledPin11, fadeValue);
delay(7059);} //half hour sunrise
delay(39600000);// 11 hr day
//2min cloud cover//
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=1)
{analogWrite(ledPin11, fadeValue);
delay(470);}
//lightning storm (10mins)//
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(40);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(200);
digitalWrite(11, HIGH);
delay(50);
digitalWrite(11, LOW);
delay(1000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(200);
digitalWrite(11, HIGH);
delay(70);
digitalWrite(11, LOW);
delay(1000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(70);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(40);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(200);
digitalWrite(11, HIGH);
delay(50);
digitalWrite(11, LOW);
delay(1000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(200);
digitalWrite(11, HIGH);
delay(70);
digitalWrite(11, LOW);
delay(1000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(70);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10);
digitalWrite(11, HIGH);
delay(20);
digitalWrite(11, LOW);
delay(100000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(40);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(200);
digitalWrite(11, HIGH);
delay(50);
digitalWrite(11, LOW);
delay(1000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(200);
digitalWrite(11, HIGH);
delay(70);
digitalWrite(11, LOW);
delay(1000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(70);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(40);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(200);
digitalWrite(11, HIGH);
delay(50);
digitalWrite(11, LOW);
delay(1000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(200);
digitalWrite(11, HIGH);
delay(70);
digitalWrite(11, LOW);
delay(1000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(70);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10);
digitalWrite(11, HIGH);
delay(20);
digitalWrite(11, LOW);
delay(100000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(40);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(200);
digitalWrite(11, HIGH);
delay(50);
digitalWrite(11, LOW);
delay(1000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(200);
digitalWrite(11, HIGH);
delay(70);
digitalWrite(11, LOW);
delay(1000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(70);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(40);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(200);
digitalWrite(11, HIGH);
delay(50);
digitalWrite(11, LOW);
delay(1000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(200);
digitalWrite(11, HIGH);
delay(70);
digitalWrite(11, LOW);
delay(1000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(70);
digitalWrite(11, LOW);
delay(10000);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10);
digitalWrite(11, HIGH);
delay(20);
digitalWrite(11, LOW);
delay(71000);
digitalWrite(11, HIGH);
delay(20);
digitalWrite(11, LOW);
delay(70760);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(100);
//1 minute cloud clearing//
{
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=1)
{analogWrite(ledPin11, fadeValue);
delay(235);}}
//30 min sunset//
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=1)
{analogWrite(ledPin11, fadeValue);
delay(7059);}
delay(500000);
}