[solucionado] Salir de ciclo infinito

Hola a toda a comunidad, tengo un problema con mi codigo espero que alguien me pueda ayudar.
Bueno les platico lo que quiero que haga mi codigo es que al presionar un boton me encienda un led y este quede parpadeando, y con un segundo boton cuando lo presione este se apague.
Cuando presiono el primer boton el led enciende y queda parpeando, esto lo hago dentro de un ciclo while infinito, dentro de este while pongo un if con un break para salir del ciclo cuando presione el segundo boton, pero no entra a la sentencia, a continuancion les muestro mi codigo

const int led=13;
const int boton=11;
const int boton2=10;
int val;
int val2;
void setup() {
pinMode(led,OUTPUT);
pinMode(boton,INPUT);
pinMode(boton2,INPUT);
}

void loop() {
val=digitalRead(boton);
val2=digitalRead(boton2);
if(val==true){
    while(true){
    digitalWrite(led,HIGH);
    delay(200);
    digitalWrite(led,LOW);
    delay(200);
    if(val2==true){
      digitalWrite(led,LOW);
      break;      
    }
    }

}
else if(val==false) {
  digitalWrite(led,LOW);
}
}

espero que alguien me pueda ayudar

Pero quien te enseño a hacerlo asi?
con el primer boton controla una variable y con el estado de esa variable contral el primer Led
luego con el segundo botón controla cuando quiere detener ese parpadeo.

surbyte:
Pero quien te enseño a hacerlo asi?
con el primer boton controla una variable y con el estado de esa variable contral el primer Led
luego con el segundo botón controla cuando quiere detener ese parpadeo.

A mi, fue la manera en que se me ocurrio en como hacerlo, pero asi como me dice asi lo tengo con la variable val que es el primer boton para encender el led y empiece a parpadear, ahi queda en el ciclo while, dentro del while tengo otro if con la variable val2 que es el segundo boton que apaga el led y rompre el ciclo con break, pero no esta entrando

if(val==true){      Aqui la variable val representa el boton 1 cuando lo presiono debe encender el led

while(true){
    digitalWrite(led,HIGH);
    delay(200);
    digitalWrite(led,LOW);
    delay(200);
    if(val2==true){        Aqui la variable val2 representa el boton 2 cuando lo presiono debe apagarse
      digitalWrite(led,LOW);
      break;   
    }
    }

}
else if(val==false) {
  digitalWrite(led,LOW);
}

Modificarlo como me parece a mi es mas dificil asi que hice lo que te esta fallando

const int led=13;
const int boton=11;
const int boton2=10;
bool val;
bool val2;
bool estado;

void setup() {
    pinMode(led,OUTPUT);
    pinMode(boton,INPUT);
    pinMode(boton2,INPUT);
}


void loop() {
  val  =digitalRead(boton);
  val2 =digitalRead(boton2);
  
  if (val){
      while(true){
            digitalWrite(led,HIGH);
            delay(200);
            digitalWrite(led,LOW);
            delay(200);
            val2 = digitalRead(boton2);
            if (val2){
                digitalWrite(led,LOW);
                break;      
            }
      }

  }
  else if (!val) {
        digitalWrite(led,LOW);
  }
}

Mira, solo agregué

val2 = digitalRead(boton2)

antes de la consulta dentro del ciclo infinito para que se lea el estado del boton2

gracias surbyte con esa linea que me dijiste que agregara resolvio el problema