Hacer uso de los delay() es muy cómodo pero luego a la hora de la verdad, cuando el programa ya tiene un tamaño considerable, solo dan que problemas y hay que usar para todo la funcion millis()
Te he acortado el codigo un poco, no sé si te gustara:
// Constantes:
const int ledPin = 13;
const int ledPin3 = 6;
const int buttonPin = 2;
// Variables:
long previousMillis = 0;
long interval = 1000;
void setup(){
pinMode(ledPin, OUTPUT);
pinMode(ledPin3, OUTPUT);
}
void loop(){
digitalWrite(ledPin3, digitalRead(buttonPin));
if( millis() - previousMillis > interval ) {
digitalWrite(ledPin, !digitalRead(ledPin) );
previousMillis = millis();
}
}
Saludos!