Duda boton

Hola.

Necesitaba ayuda para resolver esta practica:"Conexiones en la placa de Arduino:
LED 1 --- Pin 2
LED 2 --- Pin 3
botón --- Pin 4
potenciómetro --- Pin A0
Dadas las anteriores conexiones escribe el código para el siguiente caso:
Si el botón está pulsado el LED 1 parpadea con un intervalo de "X" milisegundos y el LED 2 está apagado.
Si el botón NO está pulsado el LED 2 parpadea con un intervalo de "X" milisegundos y el LED 1 está
apagado.
"X" depende del valor del potenciómetro."

Consigo hacer que los leds parpadeen pero no interrumpirlos con el botón os dejo el código que tengo hecho.

int led1 = 2;//declaramos el pin del led 1
int led2 = 3;//declaramos el pin del led 2
int boton = 4;// declaramos el pin del boton
int pot = A0;//declaramos el pin del potenciometro
int EstPot;//declaramos el estado del potenciometro
int val;
  
void setup()
{
 pinMode(led1,OUTPUT);//declaramos el led como salida
 pinMode(led2,OUTPUT);//declaramos el led como salida
 pinMode(pot,INPUT);//declaramos el potenciometro como entrada
 pinMode(boton,INPUT);//declaramos el boton como entrada
}

void loop()
{
val=digitalRead(boton); 
if  (val==HIGH){
digitalWrite(led1,HIGH);
} 
else { digitalWrite(led1,LOW); 
}

 int pot;
 pot = analogRead(0);
 digitalWrite(led1, HIGH);
 digitalWrite(led2, HIGH);
 delay(pot);
 digitalWrite(led1, LOW);
 digitalWrite(led2, LOW);
 delay(pot);


}

El código que quieres es el siguiente:

int led1 = 2;//declaramos el pin del led 1
int led2 = 3;//declaramos el pin del led 2
int boton = 4;// declaramos el pin del boton
int pot = A0;//declaramos el pin del potenciometro
int EstPot;//declaramos el estado del potenciometro

void setup()
{
 pinMode(led1,OUTPUT);//declaramos el led como salida
 pinMode(led2,OUTPUT);//declaramos el led como salida
 pinMode(pot,INPUT);//declaramos el potenciometro como entrada
 pinMode(boton,INPUT);//declaramos el boton como entrada
}
void loop()
{
if  (digitalRead(boton)){
  digitalWrite(led2,LOW);
  digitalWrite(led1, HIGH);
  delay(analogRead(pot));
  digitalWrite(led1, LOW);
  delay(analogRead(pot));
}
else { 
  digitalWrite(led1,LOW);
  digitalWrite(led2, HIGH);
  delay(analogRead(pot));
  digitalWrite(led2, LOW);
  delay(analogRead(pot));
}

}

La función digitalRead(boton); lee el pin del botón, si este está siendo presionado, esa función va a devolver como valor HIGH (true) así que lo que esté dentro del if se va a ejecutar, en este caso lo primero que se hace es apagar el led 2 por si este está encendido, luego enciende el led 1, espera la cantidad de milisegundos dependiendo de la lectura del potenciometro con la funcion analogRead(pot); luego enciende el led 1 y vuelve a esperar el tiempo que indique la lectura del potenciometro. Si el botón no está siendo presionado se ejecutará la parte del else que básicamente es la misma secuencia pero para el led 2.
Si te fijas, borré la variable val ya que no es necesario su uso porque podemos usar simplemente lo que devuelven las funciones sin necesidad de almacenar ese valor, de esta forma hacemos un código más corto, optimo en cuanto a ejecución y cuidamos más la pequeña memoria RAM del arduino.