Duda, leyendo dos enteros separados por coma

Hola a todos:

Les comento que soy nuevo con Arduino y tengo una duda con un ejercicio que me orientaron.

Resulta que un led debe iluminar con una intensidad (0-255, PWM) y por un tiempo determinado. Ambos valores me llegan por el monitor serial separados por una coma (,)

Por ejemplo, llegara:

180,100 esto quiere decir que el led debe iluminar con una intensidad de 180 y por un tiempo de 100 milisegundos.

Yo logro leer los datos desde el puerto serie, incluso leo String, peor la duda està en còmo separar el 180 de la intensidad y el 100 del tiempo para usarlos dentro del programa.

Espero haberme explicado bien y que me puedan ayudar o enviarme algun codigo de ejemplo que haga algo parecido. Alguna instrucciòn especìfica.

De antemano gracias y buen trabajo!

Si el formato siempre es el mismo,puedes usar parseInt():

if(Serial.available()) {
  int brillo = Serial.parseInt();
  int duracion = Serial.parseInt();
  
}

Hola Jose:

Gracias por tomarte tu tiempo!

Creo haber entendido, no lo puedo probar pues estoy fuera de casa, pero probarè con parseint. Te confieso que no la conocìa.

Funcionarìa con otros valores en la misma linea? por ejemplo si llegara: 180,100,5

Me harìa lo mismo?

Voy a estudiar paeseint

Muchas gracias!!

parseInt() lee un numero tipo integer del buffer hasta que el buffer este vacio o bien encuentre un caracter no numerico,por lo que si puede valerte si añades un termino mas ,pues un parseInt() mas...

Gracias Josè
Pues si, estaba pensando que si funciona, puedo incluir otro valor mas, que puede ser por ejemplo el pin donde estè el led asociado....o algo por el estilo.
Ya probarè con Serial.parseInt y te cuento.
Por el momento Gracias!

Otra respuesta aquí.

Esa otra respuesta igual que la mia corresponden a un doble post.
Asi que uno de los hilos se va.
No debes abirr dos hilos similares en foros distintos!!

Hola colegas! Hola Josè....
Perdona si me demorè en darte los resultados, pero es que me querìa familiarizar un poco con la instrucciòn "Serial.parseInt()" que me recomendaste.
Luego de leer un poco y probar el programa, funcionò perfectamente, no es nada del otro mundo pero me sirviò de mucho para interpretar esta instrucciòn, que ya creo que usarè mucho en el futuro.
Te agradezco nuevamente a ti y a los que se tomaron su tiempo en revisar mi duda.
Les dejo mas abajo como quedò el programa, perfectamente funcionante.
Gracias y buen trabajo.

/*---------------------------------------------------
   Monitor serial
   --------------------------------------------------
   Consiste en encender un led que està conectado al pin 9, con la intensidad
   y el tiempo que me llegaran por el monitor serial de la sig. forma:
   "brillo,duracion"
   Utilizo de la funcion Serial.parseInt()
*/

//-----------------------------------------------------
//Declarar puertos de entrada y salida, variables, etc.
//-----------------------------------------------------

int led = 9;          //declaro que el led estarà conectado al pin 9


//------------------------------------
//Funciòn principal o de configuraciòn
//------------------------------------

void setup()
{
  Serial.begin (9600);        //inicializo la comunicaciòn serial a 9600 baudios
  pinMode (led, OUTPUT);      //inicializo el pin led=13 como salida
  Serial.println("Hola!: Escribe los valores de 'brillo y duracion' separados por una coma");
}

//--------------------
//Funciòn cìclica
//--------------------

void loop()
{
  if (Serial.available())            // si hay algun dato en el monitor serial
  {
    int brillo = Serial.parseInt();  // guardo en "brillo" el primer valor (intensidad 0-255)
    int duracion = Serial.parseInt();// guardo en "duraciòn" el segundo valor (tiempo en mSeg)
    analogWrite(led, brillo);        // ahora enciendo el led con intensidad = brillo
    delay(duracion);                 // por un tiempo = duraciòn
    analogWrite(led, 0);             // y apago
  }
}

// Fin del programa