Muy buenas a todos, tenia una consulta con respecto al puerto serial, void, delay, millis etc.
Resulta que estoy realizando una programación donde necesito tener comunicación serial y cuando reciba un mensaje encender algunos leds, pero con cierta secuencia.
la programación que voy a utilizar para recibir el mensaje via serial es la siguiente:
while (Serial.available()){ // cuando canal de entrada lee datos
delay(5); // me espero 5ms
char c = Serial.read(); // guardo en variable c lo ultimo leido
Mensaje += c; // guardo y adiciono en variable c lo interpretado
}
Ahora bien, que sucede hago esto?
int n = 1;
void loop(){
unsigned long MILISEGUNDOS_ACTUALES = millis();
while (Serial.available()){ // cuando canal de entrada lee datos
delay(5); // me espero 5ms
char c = Serial.read(); // guardo en variable c lo ultimo leido
Mensaje += c; // guardo y adiciono en variable c lo interpretado
}
if(Mensaje == HOLA){ //Si leo un mensaje hola
SECUENCIA(); //ejecuto la funcion secuencia
}
void SECUENCIA(){
if( MILISEGUNDOS_ACTUALES - MILISEGUNDOS_ANTERIORES >= 4000){ si cuento 4s
n=1-n; // creo intermitencia de 0 a 1
digitalWrite(13,n) //utilizo n para cambiar cada 4s el estado del pin 13
}
}
ESTO POR DARLES MASO MENOS UN EJEMPLO.
Ahora bien según lo escrito anteriormente mi pregunta es
puedo llegar a tener algún problema como por ejemplo que mientras se este ejecutando la función "secuencia" entre un mensaje por el serial y no lo pueda leer o algun imperfecto de ese tipo?
y mi segunda pregunta si usara delays tendria el problema escrito en la primera pregunta?
ignoren la falta del void setup y otras variables declaradas, lo importante es el concepto y si tienen alguna sugerencia para robustecer el codigo es bienvenida, de antemano muchas gracias