ArduinoIniciante

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;