Ayuda por favor, blink led por bluetooth no funciona! modulo HC-06

Hola chic@s, os comento mi problema:

Hace un par de días compré un modulo bluetooth concertamente el HC-06 y al principio hice lo típico de encender y apagar un led desde el móvil, hasta ahí todo bien el problema viene cuando intento que el led parpadee hasta decirle mediante un botón en la app del smartphone que se apague o se encienda y se quede quieto.

Desde la app del móvil envío un "1" para encender un "2" para apagar y un "3" para que parpadee, he conseguido que parpadee pero si esta parpadeando y pulso el botón que envía el "2" para apagar el led no me hace caso. Gracias por vuestra ayuda.

Creo que me he explicado bastante bien, espero me podáis ayudar, gracias otra vez de antemano.
PD: perdón si cometo algún fallo, es mi primer post.

Aquí os dejo el código que tengo y las conexiones en la imagen adjunta.

int ledpin=12;


void setup(){
  Serial.begin(9600);
  
  
  }
  
  void loop(){
    int dato=Serial.read();
    if (dato=='1')
    {
      digitalWrite(ledpin, HIGH);
      }
      else if(dato=='2'){
       digitalWrite(ledpin, LOW);
      } 
      else if(dato=='3'){
        while(1){
        digitalWrite(ledpin, HIGH);
        delay(500);
        digitalWrite(ledpin, LOW);
        delay(500);
        }
        }
       
      }

Doble post y tema resuelto en el foro al menos 3 veces. Búscalo.

El problema es que ya lo he buscado por todos sitios y no he encontrado nada relacionado con el tema del blink ni nada. Si pudieras ponerme el enlace o algo te lo agradecería mucho, gracias.

Esto ya te lo respondí en el otro post

Hola.
Como veo que andas muy perdido, te daré un par de pistas.

  1. Esto:
        while(1){
        digitalWrite(ledpin, HIGH);
        delay(500);
        digitalWrite(ledpin, LOW);
        delay(500);
        }

es un bucle infinito. Una vez dentro no volverá a evaluarse nada más del loop. Con quitar el while, debería ocurrir algo distinto: te ejecutará el blink una sola vez y luego volverá a aceptar comandos. Deberías utilizar una variable global que te diga el estado actual del sistema (on, off, intermitente). En cada paso del loop comprobar si hay datos serial que modifiquen la variable global, y establecer los led en el estado indicado por la variable global.
¿Podrías intentar traducirlo a código?

Muchas gracias a los dos, creo que ya se por donde tirar y creo que me saldra, gracias de nuevo y perdon por nl haberlo encontrado en ningun sitio. :grinning: