domingo, 4 de octubre de 2015

[Lenguaje Arduino 08] parte 3: los objetos serie de otras placas Arduino

Hasta ahora hemos supuesto el uso de la placa Arduino UNO, la cual tiene solo un chip TTL-UART y permite solo un único objeto serie, llamado “Serial”. Sin embargo, otros modelos de placa Arduino disponen de más objetos de este tipo, y por ello, de una mayor versatilidad en el uso de la comunicación serie.

Por ejemplo, la placa Arduino Mega dispone de cuatro chips TTL-UART. Esto significa que podemos utilizar hasta cuatro objetos serie, llamados “Serial”, “Serial1”, “Serial2” y “Serial3”. El primero sigue estando asociado a los pines 0 y 1, el objeto “Serial1” está asociado a los pines 18 (TX) y 19 (RX), el “Serial2” a los pines 16 (TX) y 17 (RX) y el “Serial3” a los pines 14 (TX) y 15 (RX). Cada uno de estos objetos se puede abrir independientemente (escribiendo Serial.begin(9600); Serial1.begin(9600); Serial2.begin(9600); o Serial3.begin(9600); respectivamente), y pueden enviar y recibir datos también independientemente. Pero a pesar de tener 4 conexiones serial, el único objeto asociado también a la conexión USB es “Serial” (porque es el único conectado al chip conversor ATmega16U2).
La placa Arduino Leonardo también posee, aparte del objeto “Serial”, del objeto “Serial1”. En este caso es para separar las dos posibles vías de comunicación serie que puede manejar el chip TTL-UART incorporado dentro del ATmega32U4: el objeto “Serial1” se reserva para la transmisión de información a través de los pines 0 (RX) y 1 (TX), y el objeto “Serial” se reserva para esa misma transmisión serie pero realizada a través de la comunicación USB-ACM (que a su vez es diferente de la comunicación USB usada para las simulaciones de teclado y ratón).
Hay que tener en cuenta también, que, a diferencia de lo que ocurre con Aruino UNO, la ejecución de un sketch en la placa Leonardo no se reinicia cuando se abre el “Serial monitor”, por lo que no se podrán ver los datos que ya han sido enviados por la placa previamente al computador (como por ejemplo, los enviados dentro de la función “setup()” con Serial.print() o similares). Para sortear este inconveniente, se puede escribir la siguiente línea justo después de Serial.begin(): while(!Serial){;} Esto hará que mientras no se abra la comunicación serie (mientras no se abra el “Monitor serial”), el sketch no haga nada y se mantenga en espera. Cuando estudiemos el bucle “while” en próximas publicaciones se entenderá de mejor manera.
La placa Arduino Due, en cambio, dispone de tres puertos serie adicionales, (además del puerto “Serial” ubicado en los pines estándares 0 y 1). Estos puertos extra pueden ser utilizados en nuestros sketches mediante los objetos “Serial1” (correspondiente a los pines 18 –TX– y 19 –RX–), “Serial2” (correspondiente a los pines 16 –TX– y 17 –RX–) y “Serial3” (correspondiente a los pines 14 –TX– y 15 –RX–). De todos ellos, es el objeto “Serial” el que está comunicado con el conector USB mini- B de la placa (a través del chip ATmega16U2), por lo que ese será el objeto que deberemos utilizar en nuestros sketches para enviar y recibir datos serie a través del cable USB. Podríamos enviar y recibir datos serie directamente al chip SAM3X a través del cable USB si conectáramos este al zócalo USB mini-A, pero en este caso el objeto a utilizar en nuestros sketches debería de ser otro, el llamado “SerialUSB”.
En todo caso, hay que tener presente que en la Arduino Due todos los puertos trabajan a 3,3 V (en vez de 5 V como el resto de placas).



No olvides visitar la pestaña Tutoriales arduino y Lenguaje arduino, donde podrás encontrar la lista de tutoriales que he hecho hasta el momento. Como siempre muchas gracias por visitar mi blog y si tienen alguna consulta o consejo puede comentarlo por medio de este mismo blog.

No hay comentarios.:

Publicar un comentario