Читать книгу Aprender Arduino, prototipado y programación avanzada con 100 ejercicios - Rubén Beiroa Mosquera - Страница 22

013 Interrupción del puerto serie

Оглавление

En el caso de utilizar, por ejemplo, la comunicación serie, tenemos algo parecido a una interrupción asociada a la recepción de datos. No es exactamente una interrupción porque, si recordamos, una interrupción detiene la ejecución normal del programa y ejecuta la función asociada a la interrupción.

En el caso de la interrupción del puerto serie, esto no sucede; lo que realmente ocurre es que el programa comprobará, cada vez que finalice el bucle void loop, si hay datos en el buffer de entrada del puerto serie y, si es así, se ejecuta una función:

•Existen unas funciones predefinidas para este tipo de uso, que son las funciones <<serialE-vent()>>.

•En el caso de que un Arduino tenga varios puertos, como es el Arduino Mega, cada puerto tiene su propia «interrupción», diferenciándose por la referencia del puerto serialEvent1(), serialE-vent2()…

•En el siguiente caso , podemos comprobar el funcionamiento de la «interrupción» del puerto serie.

•Esta función viene a sustituir el if (serial.available()) , consiguiendo así simplificar el programa, pero con el inconveniente de que solo se comprueba el puerto serie al finalizar el bucle void loop().

•Esto último podemos probarlo con dos simples casos:

•En el primero se introduce un delay de cinco segundos en el bucle void loop para, así, comprobar que, aunque enviemos un mensaje por el monitor serie, mientras no finalice la temporización, no se comprobará si hay datos para posteriormente devolverlos.

•En el segundo , programamos un bucle infinito dentro del void loop, haciendo así que nunca se llegue a finalizar este, con lo que, por muchos mensajes que enviemos, ninguno de ellos será devuelto.

Visto todo esto, la conclusión sería que podemos programar una función para la recepción de datos por el puerto serie que nos permite liberar código del bucle principal.

Pero, en un Arduino, no hay únicamente un tipo de comunicación; en los siguientes capítulos trabajaremos con las comunicaciones I2C y SPI y aí veremos que también tienen funciones para la recepción de datos.

Antes de estudiar estas comunicaciones, profundizaremos en el lenguaje de programación de la comunicación serie. Son muchos los módulos que utilizan esta comunicación; para establecer una comunicación eficiente, será imprescindible un buen dominio del lenguaje de programación.

Aunque los módulos ya adaptados para Arduino seguro que tienen sus propias librerías con las que conseguimos establecer de forma fácil una comunicación, existen muchos otros dispositivos que no tendrán una librería para Arduino y es ahí donde será necesario conocer ciertas peculiaridades de la comunicación serie.





Aprender Arduino, prototipado y programación avanzada con 100 ejercicios

Подняться наверх