Saltar entre codigos con bluetooth.

Hola, estoy haciendo un hexapodo con arduino controlado con una app y un hc 06, la variable declarada inbyte coge el valor del bluetooth.read, pero al poner los ifs como estan en el codigo adjuntado no consigo que al dar una vez al boton de la app que manda el caracter realice ese codigo en bucle hasta que se active otro boton si no que solo realiza el codigo una vez, si sustituyo los ifs por while se crea un bucle infinito del que no sale, lo que busco es una forma de activar un bucle infinito al dar una vez a un boton en la app que mande un caracter y cambiar de bucle al mandar un caracter distinto, gracias de antemano.

#include <SoftwareSerial.h>
#include <Servo.h>

Servo a;
Servo b;
Servo c;
Servo d;
Servo e;
Servo f;
Servo g;
Servo h;
Servo i;
Servo j;
Servo k;
Servo l;


 
#define txPin 11 // 
#define rxPin 12 // 

SoftwareSerial bluetooth(12,11); // RX, TX
 

char INBYTE;

 
void setup() {
  Serial.begin(9600);
 Serial.println("Estoy preparado"); 
   
  bluetooth.flush();           
  pinMode(rxPin, INPUT);     
  pinMode(txPin, OUTPUT);
  bluetooth.begin(9600);  
  
  a.attach(2);
  b.attach(3);
  c.attach(4);
  d.attach(5);
  e.attach(6);
  f.attach(7);
  g.attach(8);
  h.attach(9);
  i.attach(10);
  j.attach(28); //11
  k.attach(30); //12
  l.attach(13);
  
  a.write(90);
  b.write(90);
  c.write(90);
  d.write(90);
  e.write(90);
  f.write(90);
  g.write(90);
  h.write(90);
  i.write(90);
  j.write(90);
  k.write(90);
  l.write(90);
  
  delay(2000);
 
}
  
void loop()
{
  while (!bluetooth.available());   // mientras el puerto este disponible ejecuta el programa
  INBYTE = bluetooth.read();        // lee la comunicacion bluetooth
  
  if ( INBYTE == '1' ) //if
    {
      //gait
  d.write(45);h.write(135);l.write(45); //levantando 2,4,6
  delay(150); //¿150?
  c.write(80);g.write(100);k.write(100); //moviendo 2,4,6 hacia delante
  a.write(100);e.write(100);i.write(80); //moviedo 1,3,5 para avanzar 
  delay(200); //250
  d.write(90);h.write(90);l.write(90); //bajando 2,4,6
  delay(150);
  
  b.write(135);f.write(45);j.write(135); //levantando 1,3,5
  delay(150);
  a.write(80);e.write(80);i.write(100); //moviendo 1,3,5 hcia delante
  c.write(100);g.write(80);k.write(80); //moviendo 2,4,6 para avanzar
  delay(200);
  b.write(90);f.write(90);j.write(90); //bajando 1,3,5
  delay(150);
  
  
  
    }
  if( INBYTE == '3' ) 
  {
    //horario
  d.write(135); h.write(45); l.write(45); //levantando 2,4,6
  delay(150); //¿150?
  c.write(135); g.write(135); k.write(135); //moviendo 2,4,6 antihorario AUMENTANDO
  delay(200);
  d.write(90); h.write(90); l.write(90); //bajando 2,4,6
  delay(150);
  b.write(135); f.write(135); j.write(45); //levantando 1,3,5
  delay(150);
  a.write(135); e.write(135); i.write(135); //moviendo 1,3,5 horario
  delay(200);
  b.write(90); f.write(90); j.write(90); //bajando 1,3,5
  delay(150);
  a.write(90); c.write(90); e.write(90); g.write(90); i.write(90); k.write(90); // igualando cuerpo
  delay(150);
  }
  if( INBYTE == '2' ) 
    {
      //antihorario
  d.write(45); h.write(135); l.write(135); //levantando 2,4,6
  delay(150); //¿150?
  c.write(45); g.write(45); k.write(45); //moviendo 2,4,6 horario
  delay(200);
  d.write(90); h.write(90); l.write(90); //bajando 2,4,6
  delay(150);
  b.write(45); f.write(45); j.write(135); //levantando 1,3,5
  delay(150);
  a.write(45); e.write(45); i.write(45); //moviendo 1,3,5 horario 
  delay(200);
  b.write(90); f.write(90); j.write(90); //bajando 1,3,5
  delay(150);
  a.write(90); c.write(90); e.write(90); g.write(90); i.write(90); k.write(90); // igualando cuerpo
  delay(150); 
    }
    if( INBYTE == '4' ) 
    {
      
    }
  delay(50);
   
}

codeBT.ino (2.99 KB)

Cuando haces

INBYTE = bluetooth.read();

INBYTE toma el valor leído y se ejecuta el IF, pero el Buffer del serial se vacía y en la siguiente lectura INBYTE esta sin valor y ningún IF se ejecuta. Prueba esto

if (bluetooth.available()>0){ INBYTE = bluetooth.read();}

if ( INBYTE == '1' ) //if { //gait d.write(45);h.write(135);l.wr...etc

Yo probaria algo asi

void setup()
{

//CODIGO INICIALIZACIONES AQUI


//Aqui leemos el serial por primera vez
while (!bluetooth.available()); //esperar a que haya algo disponible

INBYTE = bluetooth.read();        // lee 


}


void loop(){



  
  if ( INBYTE == '1' )
    {
    do{

      //CÓDIGO que sea para la orden 1
  
     } while(!bluetooth.available());

  if ( INBYTE == '2' )  
    {
    do{

      //CÓDIGO que sea para la orden 1
  
     } while(!bluetooth.available());

///etc ETC

//Importante aquí leemos el serial, que ya hemos comprobado en el bluetooth.available() de cada if que ya hay algo dispoinible

INBYTE = bluetooth.read(); 



}

He probado ambos códigos y los dos funcionan perfectamente, solucionado el problema ya, muchas gracias a los dos. :D