Mantener pulsado un botón por 2 segundos y que parpadeé

Al momento de pulsar un botón por un segundo este encendía, al pulsarlo por 2 segundos parpadeé, y por 3 segundos este se apague, logré hacer que encendiera y se apagara pero no puede hacer que parpadeé así que pensé es hacer un bucle, pero no se como.
Paso lo que hice:

int boton1 =2;
int LED = 4;
bool estadoboton1; 
unsigned long tiempo;
unsigned long tiempo2;
unsigned long tiempo3;

void setup(){
  Serial.begin(9600);
  pinMode(2, INPUT);
  pinMode(LED, OUTPUT);
}

void loop() {
estadoboton1 = digitalRead(boton1);
if(estadoboton1 == HIGH) { 
tiempo=millis();
    while(estadoboton1 == HIGH) { 
tiempo2=millis();
estadoboton1= digitalRead(boton1);

}
tiempo3=tiempo2-tiempo;

Serial.println(tiempo3);
if((tiempo3)>=1000){
 Serial.println("encendido"); 
 digitalWrite(LED, HIGH);
}
if((tiempo3)>=2000){
  Serial.println("Parpadea");
  digitalWrite(LED,HIGH);
  delay(100);
  digitalWrite(LED,LOW);
  delay(100);
  }
  if((tiempo3)>=3000){
  Serial.println("Apagado");
  digitalWrite(LED,LOW);
  }
}
}

Please, no double posting.

Por favor edita tu post y pon el código según las Normas del foro, es para tu beneficio.

Mientras lo haces te sugiero que cambies el órden en que verificas los tiempos, primero verifica el tiempo mayor, y usa else if() así solo verificas cuando no se haya cumplido la condición anterior, sino fijate: si pulsas durante 3 segundos se te cumplen las 3 condiciones porque 3000 >= 1000 y también 3000 >= 2000.

Saludos

Moderador:
Por favor no doble postees.
Este hilo será cerrado y puedes continuar en el foro en inglés, donde tmb posteaste.
Lee las Normas del foro