Projekt belebtes Haus

Hallo, bin blutiger Anfänger, in Sachen Arduino und Co. Habe mir einenDigispark besorgt, und ein fertiges Sketch runter geladen. Funktioniert alles tadellos und genau wie es soll!
Nun kommt mein Problem, ich möchte die Schaltzyklen verlängern (möglichst Alle).

Hier der Sketch:

/*  Simulation "belebtes Haus für die Modellbahn" */
/*  Version "Flimmern nur wenn die Pin-2 LED an ist */
byte pwmFlimmerPin=1; // PWM Pin für das "analoge" Flimmern
long flimmerStart,flimmerEnd; // Anfangs- und Endzeiten für das Flimmern
// LED Pins für das normale Blinken deklarieren
byte leds[]   ={   5,    4,   3,   2,   0};
// LED Blinktakt in Millisekunden für diese Pins
long ledtakt[]={6000, 8800, 13000, 20000, 20400};
// Variablen zum Merken von millis()-Zeiten beim Schalten/Blinken
long ledtime[sizeof(leds)];

void setup() {
//  Serial.begin(9600);
 // Alle verwendeten Pins auf OUTPUT setzen
 pinMode(pwmFlimmerPin, OUTPUT);  
 for (int i=0;i<sizeof(leds);i++)
   pinMode(leds[i], OUTPUT);
}

boolean milliSekundenTakt(int dauer, long &alterWert) {
// Parameter "dauer": Dauer einer Blinkphase (an bzw. aus)
// Parameter "alterWert": Variable zum Speichern des millis() Timers
// Rückgabewert: true wenn die Zeit bis zum nächsten Umschalten abgelaufen ist, sonst false
 if (millis() - alterWert < dauer) return false;
 while (millis() - alterWert >= dauer) alterWert+=dauer;
 return true;  
}

void blinkenImTakt() {
 
// Alle gleichmäßig blinkenden LEDs in ihrem eigenen Takt blinken lassen  
 for (int i=0;i<sizeof(leds);i++) // alle LEDs in einer Schleife durchgehen
 {
   if (milliSekundenTakt(ledtakt[i],ledtime[i])) // Takt für diese LED abgelaufen?
   {
     digitalWrite(leds[i],!digitalRead(leds[i]));  // wenn ja ==> Umschalten
     if (leds[i]==0 && digitalRead(leds[i])) // Pin-13 LED wurde gerade eingeschaltet
     {
      flimmerStart=millis()+2000; // Anfangszeit für das Flimmern setzen
      flimmerEnd =millis()+15000;  // Endzeit für das Flimmern setzen
     }  
//      Serial.print("Pin ");Serial.print(leds[i]);Serial.print(" = ");Serial.println(digitalRead(leds[i]));
   }
 }
}

void flimmernPwmPin() {
// Die flimmernde LED im Zufallsmodus flimmern lassen
 static long alterWert;
 static int flimmerDauer=200;
 static byte flimmerHelligkeit;
 if (milliSekundenTakt(flimmerDauer,alterWert)) // Takt abgelaufen?
 {
   flimmerDauer=1+random(200); // neue Flimmerdauer als Zufallswert
   if (millis()>flimmerStart && millis()<flimmerEnd)
     flimmerHelligkeit=random(256); // neue Flimmerhelligkeit als Zufallswert
   else  
     flimmerHelligkeit=0; // Flimmern aus wenn falsche Zeit zum Flimmern
   analogWrite(pwmFlimmerPin, flimmerHelligkeit); 
 }  
}

void loop() {
 blinkenImTakt();
 flimmernPwmPin();
}

Habe in der Zeile 8: long ledtakt[]={6000, 8800, 13000, 20000, 20400};
die Werte verdoppelt, jetzt leuchten nur noch zwei LED´s, wo habe ich den Denkfehler?

Ich bitte um Nachsicht, und bedanke mich vorab!

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

[qoute]
Habe in der Zeile 8: long ledtakt[]={6000, 8800, 13000, 20000, 20400};
die Werte verdoppelt,
[/quote]

ändere mal die Zeile 20 auf

boolean milliSekundenTakt(long dauer, long &alterWert) {

vieleicht hilfts, kanns aktuell nicht testen.
Nächster Schritt wäre die ganzen Warnings zu bearbieten und einige Variablen dann auf unsigned umzustellen.