Problema con codigo que se sobrepone

Prueba la parte de los leds y luego agrega lo demás

#include <Arduino.h>


boolean estadoLed       = false;  
int intervaloEncendido  = 1000; 
int IntervaloApagado    = 3000; 
unsigned long tiempoAnteriorEncendido; 
unsigned long tiempoAnteriorApagado;  
unsigned long tiempoPresento;
enum {ENCENDIDO, APAGADO};

void setup(){
  pinMode(13,OUTPUT); 
  digitalWrite(13,estadoLed); 
}    

void loop(){

    switch(estadoLed) {
      case APAGADO: if ((millis()-tiempoAnteriorEncendido >= intervaloEncendido)){ 
                          estadoLed = ENCENDIDO; 
                          digitalWrite(13, estadoLed); 
                          tiempoAnteriorApagado = millis(); 
                      }
                      break;
      case ENCENDIDO: if (millis()-tiempoAnteriorApagado >= IntervaloApagado){ 
                          estadoLed = APAGADO; 
                          digitalWrite(13, estadoLed); 
                          tiempoAnteriorEncendido = millis(); 
                      }
                      break;                      
    }
}

Probado y funcionando.
Ahora respeta los tiempos de ON y OFF.