O teu problema é estares a usar um while para manter um led ligado.
Tu queres detectar quando é que o botão passa de não pressionado para pressionado e mudar o estado duma variável.
unsigned char beforeButt1 = 0;
unsigned char Butt1 = 0;
unsigned char blinkLED1 = 0;
unsigned long beforeTime = 0;
unsigned char led = 0;
Butt1 = digitalRead(estBot2);
if (Butt1 == 1 && beforeButt1 == 0) { //botão mudou de estado
blinkLED1 = 1;
}
if (blinkLED1 == 1 && Butt1 == 0 && beforeButt1 == 1) { //mudou outra vez de estado
blinkLED1 = 0;
}
if (blinkLED == 1 && (millis() -beforeTime) > 800) {//liga o pisca pisca
if (led == 0) led = 1;
else led = 0;
digitalWrite(led1, led);
beforeTime = millis();
}
beforeButt1 = Butt1;