
Puerto de serie en Arduino
El puerto de serie o serial es lo que se usa para la comunicación entre ordenador y placa, este serial permite enviar y recibir mensajes, control de la depuración y el control de la placa. Todas las placas tienen al menos un puerto serie (a estos se les conoce también como UART o USART).
PLACA | NOMBRE CDC USB | PINES SERIE | SERIAL 1 PINES | SERIAL2 PINES | SERIAL3 PINES |
Uno, Nano, Mini | 0(RX), 1(TX) | ||||
Mega | 0(RX), 1(TX) | 19(RX), 18(TX) | 17(RX), 16(TX) | 15(RX), 14(TX) | |
Leonardo, Micro, Yúm | Serial | 0(RX), 1(TX) | |||
Uno Wifi Rev 2 | Conectado al USB | 0(RX), 1(TX) | Conectado a NINA | ||
Placas MKR | Serial | 13(RX), 14(TX) | |||
Zero | Serial USB | 0(RX), 1(TX) | |||
Due | Serial USB | 0(RX), 1(TX) | 19(RX), 18(TX) | 17(RX), 16(TX) | 15(RX), 14(TX) |
101 | Serial | 0(RX), 1(TX) |
En Uno, Nano, Mini y Mega, los pines 0 y 1 se usan para la comunicación con el ordenador. La conexión de cualquier cosa a estos pines puede interferir con esa comunicación, lo que incluye provocar cargas fallidas en la placa.
Funciones de control del puerto de serie
Serial.begin(valor)
Esta función abre el puerto serie y fija un valor (en baudios) para la transmisión de datos en serie. El valor típico de velocidad para comunicarse con el ordenador es 9600, aunque puede soportar otras velocidades.
void setup{
Serial.begin(9600);
}
Serial.print(datos)
Serial.print() sirve para imprimir datos en el puerto serie, entre los paréntesis tenemos que añadir el valor a imprimir, puede ser un valor que escribimos a mano o un valor que está en una variable.
Serial.print(“Hola a todos”);
Serial.print(miVariable); // imaginamos que es 2
Resultado de la salida del puerto serie:
Hola a todos2
Si lo que queremos es que tras imprimir la variable en el puerto serie hacer un retorno de carro automático lo que tenemos que usar es Serial.println().
Serial.println(“Hola a todos”);
Serial.println(miVariable); // imaginamos que es 2
Resultado de la salida del puerto serie:
Hola a todos
2
Serial.print(dato, dato type)
Con lo que obtenemos usando esta función es mostrar el datos como queramos ya que le estamos diciendo que tipo de dato queremos que se muestre, por ejemplo si tenemos una variable que tiene el número 79 y le ponemos a la salida HEX (Hexadecimal), la salida que tendremos es 4F (número 79 en hexadecimal).
Serial.print(79, HEX); // salida es un string "4F", Hexadecimal
Serial.print(79, OCT); // salida es un string "117", Octal
Serial.print(79, BIN); // salida es un string "1001111", Binario
Serial.print(79, BYTE); // Devuelve el carácter "O", Tabla ASCII
Si esta última da error, pruebe con Serial.write(79)
*También esta función es aplicable a Serial.println() si queremos un retorno de carro
Serial.avariable()
Esta función obtiene un número entero con el número de bytes (caracteres) disponibles para leer o capturar desde el puerto serie, si el número es 0, significa que no hay datos almacenados. El buffer puede almacenar un máximo de 64 bytes.
Serial.Read()
Lee un byte (caracter) desde el puerto serie.
Un ejemplo de los dos últimas funciones sería el siguiente:
int incomingByte = 0; // almacenar el dato serie
void setup() {
Serial.begin(9600); // abre el puerto serie,y le asigna la velocidad de 9600 bps
}
void loop() {
// envía datos sólo si los recibe:
if (Serial.available() > 0) {
incomingByte = Serial.read(); // lee el byte de entrada:
Serial.print("Recibido: "); // lo vuelca a pantalla
Serial.println(incomingByte, DEC);
}
}
Ejercicios para entender el puerto de serie
Ejercicio 2
Imprime por el serial la frase “Este curso es Genial, somos 10 personas”, donde 10 será una variable, La frase solo se tiene que imprimir una vez.
Ejercicio 3
Transforma el número 172 en Octal y busca la combinación de números que al pasarlo a bytes salga tu nombre por el serial.
Si quieres seguir aprendiendo…
- Introducción al curso Introducción a Arduino desde cero
- Qué son las variables y constantes
- Estructura básica del código Arduino
- Tiempo
- Libro Build your world con prácticas
¿Te está gustando este curso de Introducción a Arduino desde cero? Comparte este post en tus RRSS Facebook y Twitter.