ArduinoIniciante

Tenho dois leds e quero controla-los com botões, onde clicando no botão 1 ele pisque o led 1 e no botão 2 pisque o led 2 já consegui piscar porem o botão 2 so funciona se eu ainda não pressionar o botão 1 e vice e versa. quero que funcione os dois simultaneamente .
segue o código.

int led1 = 13;
int led2 = 12;
int bot1 = 2;
int bot2 = 3;

int estBot1;
int estBot2;

boolean disparo = false;

void setup() {
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(bot1, INPUT);
  pinMode(bot2, INPUT);

}

void loop() {
  estBot1 = digitalRead(bot1);
  estBot2 = digitalRead(bot2);

  if (estBot1 == HIGH) {//BOTAO 1 PRESIONADO
    while(digitalRead(estBot1) == LOW){//LENDO ESTADO DO BOTÃO
      digitalWrite(led1,HIGH);
      delay(800);
      digitalWrite(led1,LOW);
      delay(800);
    }
  }
  
  if (estBot2 == HIGH) {//BOTAO 2 PRESIONADO
      while(digitalRead(estBot2) == LOW){//LENDO ESTADO DO BOTÃO
        digitalWrite(led2,HIGH);
        delay(800);
        digitalWrite(led2,LOW);
        delay(800);
      }
    }
}

fffffffffff.png

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;