Esperar input serial

Estimados, hay alguna manera de esperar a que ingresen valor en el puerto serial.

Resulta que tengo esto

while(Serial.available() == 0){
char ch = Serial.read();
}

Y funciona, pero al siguiente loop ya no, hay alguna solución?

Saludos

OldTatita:
Y funciona, pero al siguiente loop ya no, hay alguna solución?

Envías más de un caracter/byte a la vez. Puede que necesites vaciar el buffer antes de reiniciar el loop:

while (Serial.available()) Serial.read();

No te funciona porque esta al revés.

Con Serial.available() == 0 estas preguntando si el buffer esta vacio.

void loop(){
   if (Serial.available()){
      char ch = Serial.read();
   }
}

Estás equivocado. En los lenguajes C, insertar un valor numérico en un contexto booleano implícitamente equivale a la condición de que si es diferente de cero. Por lo tanto:

if (Serial.available())

Es lo mismo que:

if (Serial.available() != 0)

Observa que eso significa que incluso un valor negativo equivale a true.

Igual ya lo tienes hecho, pero ahí va una idea. ¿Por que no usas la interrupción SerialEvent? No es buena idea poner a esperar al arduino a que entren caracteres por el serie.

//------------------------------------------------------------------------
// Este evento ocurre cuando entran nuevos datos al serie.
// Esta funcion corre entre cada vez que el loop se ejecuta, asi que mucho 
// ojo con meter delays aqui por que ralentizara todo el proceso
// Esta funcion es como el loop propiedad del arduino no hay que ponerle otro nombre
//------------------------------------------------------------------------
void serialEvent() 
{

while(Serial.available()) 
     {
     char in_car = (char)Serial.read(); 
     
     //Serial.print(in_car);
     } //while

} //end serialEvent