Problem mit Zeitsteuerung - achtung Anfänger ;-)

Hallo Jochen,
ich habs mal kurz überflogen.
Deine For Schleife bewirkt eigentlich gar nichts.
Du zählst eine Variable hoch und setzt den Summer auf high, du könntest i auch bis 10.000 hoch zählen lassen,
das wäre das gleiche.
Wenn ich dich richtig verstanden habe soll der Summer einmal gehen wenn der Schalter auf Low geht, ich würde da ein
flag einbauen:
Ich habs jetzt nur kurz hingeschrieben ohne Syntaxprüfung, sollte aber so gehen. Geht aber auch ohne delay, dann muss du mit millis() arbeiten.
Immer wenn der Schalter auf High ist, wird das flag gesetzt. Beim nächsten mal low verzweigt das Programm dann einmal in die if
Schleife, stellt den Summer für 1 Sekunde an und wieder aus.

int ledPin1 = 13;
int ledPin2 = 12;
int schalter = 2;
int summer = 11;
int flag,i;
void setup()
{
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(schalter, INPUT);
  pinMode(summer, OUTPUT);
  digitalWrite(schalter, HIGH);
  flag=0;
}
void loop(){
  int val = digitalRead(schalter);
  if (val == LOW) { 
   digitalWrite(ledPin2, LOW);
    if (flag==1){
      flag=0;
      digitalWrite(summer, HIGH);
      delay(1000);   
     digitalWrite(summer, LOW);    
   }
    digitalWrite(ledPin1, HIGH);
    delay(500);
  digitalWrite(ledPin1, LOW);
  delay(50);
  digitalWrite(ledPin1, HIGH);
  }
  else {  
  flag=1;    
  digitalWrite(ledPin1, LOW);
  digitalWrite(ledPin2, HIGH);
  digitalWrite(summer, LOW);
  }
}