Curso Arduino y robótica: Serial Monitor

Funcionamiento General de Arduino – Control en bucle

Para empezar a programar Arduino, debemos conocer su modo de funcionamiento más habitual. Dentro de cada proyecto de Arduino existen dos bloques diferenciados.

  • Setup() → Es el bloque en el que se inicializan las variables y solo se ejecuta una vez al inicio del programa.
  • Loop() → Es el bloque que se ejecuta una y otra vez repetidamente, después de la inicialización.

 

Un programa sencillo para usar el monitor serie podría ser el siguiente, pero fijémonos en la sintaxis de las palabras que nos aparecen.

 

 

Las variables globales se declaran antes de la función de inicialización setup().

Dentro de la función de inicialización abrimos el puerto serie de comunicación de la placa con el ordenador. La velocidad en el que se transmiten los datos suele ser de 9600 bps, pero puede tomar otros valores 14400,19200, 28800,38400, 57600,115200.

Como se puede observar en las funciones aparece la palabra void. Las funciones pueden ser:

  • Funciones sin retorno. → No retorna ningún valor computado, por lo que entonces devuelve un valor vacío, osea void.
  • Funciones con retorno. → Puede devolver uno valor computado en la realización de algunas operaciones. Por lo que entonces habría que sustituir la palabra void por un tipo de dato int, long, char, String,etc…

En los paréntesis se escriben los parámetros de entrada de las funciones, en las que también hay que especificar el tipo de dato que son.

Entre llaves se define el ámbito en el que se definen las instrucciones que ha de ejecutar la función.

Así pues, setup y loop son dos funciones predefinidas sin ningún valor de entrada ni salida y solo ejecutan las instrucciones que hay en su interior.

Serial Monitor

El monitor serie es una ventana a la que podemos acceder para conocer el estado de nuestra placa o para obtener información interna de la misma.

Esto nos puede resultar muy útil a la hora de hacer Debug y comprobar si se procesan errores o fallos a la hora de programar, ya que los resultados de un algoritmo no tienen por qué ser siempre los esperados.

En este ejemplo hemos realizado un sumador en bucle para observar como evolucionan los datos en el bucle.

 

Uno de los aspectos más interesantes más interesantes es que no solo nos sirven para recibir información del exterior a la placa, sino que además podemos transmitir información de la placa hacia fuera.

Este modelo requiere de dos pines de conexión, uno de transmisión (TX) y otro de recepción (RX) y que utilizaremos más adelante para crear modos de comunicación.

IMPORTANTE: Los pines de recepción (RX) y transmisión (TX) son por defecto el pin 0 y el pin 1. NO USAR NUNCA LOS PINES 0 y 1 a menos que no nos queden pines libres.

Esto se debe a que esos pines se usan a su vez para subir el programa que desarrollamos en el IDE. Por lo que si están ocupados nuestra placa no se podrá programar.

Estos pines son HardwareSerial, es decir que los pines 0 y 1 estan definidos como serie por hardware, pero en otras placas podría haber más de un monitor serie por Hardware.

Serial Plotter

El Serial Plotter, es una manera de visualizar datos en una gráfica y porder realizar comparaciones para observar las diferencias entre distintas señales.

Un apartado importante a reconocer es que Serial Plotter lo que hace es introducir un valor en el tiempo sobre una linea con un color a través del mismo puerto serie.

Para diferenciar entre dos o más lineas de la gráfica, tendremos que separar los valores con comas y finalmente hacer un salto de linea; que se define como un Serial.println(); para acceder al siguiente valor leido por el bucle.

void setup() {
  Serial.begin(9600);
  pinMode(0, INPUT);
  pinMode(1, INPUT);
}

void loop() {
  Serial.println((String(analogRead(0)) + String(",") + String(analogRead(1))));

}

 

IMPORTANTE: Si nuestro programa contiene un mensaje de Debug, los carácteres que aparecerán se transformarán en sus correspondientes valores en ASCII y los valores que se visualicen pueden no ser los que queremos leer.

Por ello es importante asegurarnos de que estamos leyendo señales solamente y evitar escribir mensajes si queremos graficar las señales sin error.

En la siguiente imagen, se puede observar a qué número se corresponden los carácteres ASCII para otras aplicaciones.

Tipos de dato

Para finalizar, vamos a repasar los tipos de dato que podemos definir dentro de Arduino.

A la hora de crear un programa, deberemos reconocer primero si vamos a tratar con números o letras.

Los tipos de dato más utilizados son los números y suelen usarse:
  • int -> Entero
  • float -> Números con decimales
  • long -> Entero con más capacidad
Para tipos de carácter o texto utilizaremos
  • char -> Un solo carácter
  • String -> Cadena de texto. Este modelo ofrece ventajas pero ocupa más espacio.
El tipo bool es un booleano y solo ocupa un bit de memoria en el que puede contener 0 ó 1; false o true; apagado o encendido.

El resto son particularidades en el rango de datos o ocupan más o menos memoria.

Un modelo interesante como tipo de dato son los array, que aprenderemos más adelante.

 



Una vez completado este tutorial, puedes acceder al siguiente nivel.

Puedes acceder además a los ejemplos de código que desarrollaremos durante el curso a través de nuestro Github.

Documentacion ZaragozaMakerSpace Github

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

cinco × 1 =

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.