Arduino con Bluetooth

Buena noche,

Ya tengo conectado un App de Android al arduino uno por medio de un bluetooth H-06. Necesito realziar un temportiazdor para 3 leds.

Lo que necesito es poder operar los 3 leds sin que tenga que esperar a que acabe uno para poner a funcionar otro.

En la App tengo 3 botones para los 3 leds, cada uno manda un tiempo de encendido a cada Led. Si enciendo el primer led por un tiempo N, y despues mando a enceder el segundo o tercer led con un tiempo xx, me toca esperar a que acabe el primero para que funcione el segundo.

No se como hacerlo. Aqui dejo lo que tengo hasta el momento.

Agradeceria que me pudieran ayudar.

los datos que envio son los siguientes

1,10000 // Led 1 con tiempo de 10 seg, la coma "," es para separarlos datos
1,10000 // Led 1 con tiempo de 10 seg


int LED_8 = 8; 
int LED_12 = 12; 
int LED_13 = 13;  

int nroToma = 0; //Char para leer el Datos de entrada
String tiempo = "";

void setup() {
// initialise serial communications at 9600 bps:
Serial.begin(9600);
pinMode(LED_8, OUTPUT);
digitalWrite(LED_8, LOW);

pinMode(LED_12, OUTPUT);
digitalWrite(LED_12, LOW);

pinMode(LED_13, OUTPUT);
digitalWrite(LED_13, LOW);
}

void loop() {

if (Serial.available() > 0){
  nroToma = Serial.read();
  char coma = Serial.read();
  tiempo= Serial.readString();

if (nroToma == '1'){           // Enciendo el Led 8 por el tiempo que llega en la variable tiempo
      digitalWrite(LED_8, HIGH);
      delay(tiempo.toInt());
  
      digitalWrite(LED_8, LOW);       
      Serial.print("A");      
  }
  if (nroToma == '2'){      // Enciendo el Led 12
      digitalWrite(LED_12, HIGH);
      delay(tiempo.toInt());
  
      digitalWrite(LED_12, LOW);       
      Serial.print("B");      
  }      
   if (nroToma == '3') {  // Enciendo el Led 13
      digitalWrite(LED_13, HIGH); 
      delay(tiempo.toInt());
  
      digitalWrite(LED_13, LOW);       
      Serial.print("C");      
 }
}

delay(2000); 
}

Y donde está el humor o el debate que quieres generar con este comentario?
Nada! Que esto está mal posteado! Tanto en el lugar donde debe ir como la manera de adjuntar el código de tu sketch.
Está perfecto que seas nuevo en esto, nadie te va a criticar ni nada, pero por lo menos te hubieras tomado la molestia de leer las normas del foro para saber que tienes que tener en cuenta a la hora de postear.
Deja, yo lo muevo y lo edito por ti. Pero la tarea de hoy (o de cuando leas esto) es empaparte de las normas del foro.
Saludos!

Para hacer lo que indicas debes dejar completamente de lado el delay que usas en tu código. En lugar de eso, tienes que tener variables, seguramente una por led, que marquen el tiempo en que se encendió o apagó uno de los led. Para esto se debe usar la función millis(). Inicializas las variables haciendo variable=millis(); y luego en cada vuelta de loop verificas si el resultado de (millis()-variable) es lo suficientemente grande como para hacer algo. Si es así, proceder:encender o apagar un led, y finalmente inicializar nuevamente la variable haciendo variable=millis(); luego de eso se pasa a comprobar la siguiente variable.

Me parece que lo que describo le llaman "máquina de tiempos" o algo así; seguro uno de los amigos del foro dará el nombre correcto.

Te recomiendo agarrar un ejemplo de un programa que funcione de la manera que describo, y modificarlo por todo lado hasta que llegues a entenderlo bien, y finalmente lo dejes funcionando tal como quieres.

ener:
Me parece que lo que describo le llaman "máquina de tiempos" o algo así; seguro uno de los amigos del foro dará el nombre correcto.

Yo lo daré.

Se le llama "máquina estado"... eso es lo que hace: cambiar el estado de algunas salidas según el transcurso del tiempo.

Te recomiendo agarrar un ejemplo de un programa que funcione de la manera que describo, y modificarlo por todo lado hasta que llegues a entenderlo bien, y finalmente lo dejes funcionando tal como quieres.

El ejemplo "BlinkWithoutDelay" considero que es un buen punto de partida para empezar a comprender esto de la "máquina estado".