brazo robotico que cambie de rutina presionando un pulsador

Hola buenas tardes
Tengo un problema al ejecutar mi programa en mi brazo; lo que busco hacer es que presionando un pulsador el brazo cambie de rutina, todo va bien pero si llego a la rutina de movimiento automático, se queda haciendo esa rutina y ya no me permite mandar la señal para que vaya a la siguiente, la verdad no sé qué es lo que está mal, intenté aumentar el “Delay” para ver si el tiempo era el problema, pero sigue haciendo lo mismo.
Les dejo el código
De verdad necesito su ayuda.
Gracias.

#include <Servo.h>

const int servo1 = 5;
const int servo2 = 6;
const int servo3 = 7;
const int servo4 = 9;

const int joy1 = A0;
const int joy2 = A1;
const int joy3 = A2;
const int joy4 = A3;

int servoVal;

int bstate = 0;

Servo myservo1;
Servo myservo2;
Servo myservo3;
Servo myservo4;

void setup() {

  pinMode(13, INPUT_PULLUP);

  myservo1.attach(servo1);
  myservo2.attach(servo2);
  myservo3.attach(servo3);
  myservo4.attach(servo4);

  Serial.begin(9600);
}


void loop() {

  Serial.println(bstate);

  if (digitalRead (13) == 0) {

    bstate = (bstate + 1) % 3;
    delay(5000);
  }

  switch (bstate) {
    
    case 1:

    automata();
    
    break;

    case 2:
    servoVal = analogRead(joy1);
    servoVal = map(servoVal, 0, 1023, 0, 180);

    myservo1.write(servoVal);

    servoVal = analogRead(joy2);
    servoVal = map(servoVal, 0, 1023, 0, 180);

    myservo2.write(servoVal);

    servoVal = analogRead(joy3);
    servoVal = map(servoVal, 0, 1023, 0, 180);

    myservo3.write(servoVal);

    servoVal = analogRead(joy4);
    servoVal = map(servoVal, 0, 1023, 0, 180);

    myservo4.write(servoVal);
    break;

    default:
    
    myservo4.write(0);
    myservo3.write(160);
    myservo2.write(50);
    myservo1.write(90);
    
  }
 }


 void automata(){
    myservo1.write(10);
    delay(1000);

    myservo2.write(120);
    myservo3.write(90);
    delay(1000);

    myservo4.write(30);
    delay(1000);

    myservo2.write(90);
    myservo3.write(150);
    delay(1000);

    myservo1.write(160);
    delay(1000);

    myservo4.write(0);
    delay(1000);
 }

Consulta de Software a sección Software, no Proyectos!!! Movido..