Schleife nach definierter Zeit wiederholen

Ok,

ich werde versuchen es zu präzisieren. Vielleicht besteht meinerseits ja ein grundlegender Denkfehler.

Was ich erreichen möchte:

Ich benötige eine einsekündige Schleife, deren Durchläufe mitgezählt werden und in deren Schleifenkörper sich mehrere Anweisungen befinden können, die sich zeitlich auf die Startzeit der Schleife beziehen.

Z.B.

if(millis()>schleifenzeit+500)                                                 // Automatisches ausschalten der Lampen nach einer bestimmten Zeit vom Schleifenstart an gerechnet
{
digitalWrite(LED_B,LOW);
}

Mein Problem ist nun, dass die o.a. "Varianten" dazu führen, dass die Schleife wesentlich schneller als einmal pro Sekunde durchlaufen wird und der Wert schleifenzeit sehr schnell steigt.

Würde ich einfach z.B. an das Ende der Schleife ein delay(1000) setzen, könnte ich ja keine Buttonabfragen o.ä. mehr realisieren.

Hoffe, man versteht nun mein Problem.

Gruß Chris