Hola a todos e estado trabajando con alduino pero me e encontrado con un problema, al momento de comunicar por puerto serie, todo va bien pero cuando el arduino esta en una subrutina del programa y yo le mando un dato por el puerto serie, digamos para salir de la subrutina, no atiende el puerto seria hasta ya salir de la subrutina, lo cual me interesaba que la subrutina saliera antes, en ocasiones se tarda algunos segundo esa subrutina y me tengo que esperar hasta que termine para que pueda leer lo que esta en el buffer de entrada,
la función que estoy usando para leer el puerto serie es
serialEvent()
habrá una forma para poner una interrupción por puerto serie para que deje lo que esta realizando y atienda primeramente el puerto, gracias
En ambos casos el error es que en sus rutinas usan delay(XXX mseg) no usen delay si quieren que su programa atienda otras cosas.
delay es facil de usar para es como un STOP en el sketch, el micro se detiene a hacer nada (NOP) y uds pierden cambios de los sensores, pierden caracteres del puerto serie, etc, etc. y luego no hay soluciones máginas.
Deben usar millis().
Vean el ejemplo blink sin delay del IDE y ahi su solucion.