Introduction: C/C++ En Arduino: Monitor Y Graficador Serial

About: Músico, matemático, computación, ciencia... insolente y subversivo, pero siempre propositivo

El Arduino se conecta al USB de la computadora, para poder cargar el código. Sin embargo, también es posible enviar desde el arduino al la computadora datos y viceversa con un protocolo de comunicación muy sencillo. En este instructable veremos como comunicar el Arduino con la computadora.

Step 1: Serial

Comunicación

Comunicación serial es el proceso de enviar datos a través de un canal, usualmente llamado BUS. Los datos son bytes, pero todo depende de como se construya el código. Acá exploraremos el envío de datos del Arduino a la computadora usando Serial.print() y Serial.println().

En el arduino se puede usar el mismo cable USB o usar los pines 0 y 1, para RX y TX respectivamente. Rx significa "receive" y TX "transmit". El arduino tiene otras posibilidades de comunicación serial. Ver por ejemplo el instructable de librerías, donde se utiliza I2C para poder manejar una pantalla OLED.

Baud Rate

Al establecer la conexión serial mediante Serial.begin(baudrate), hay que indicar el baud rate, es decir la velocidad a la que se va a transmitir la información. en principio 1 baud, significa un símbolo enviado por segundo

Serial.begin()

Esta función se coloca en la sección de setup() e inicializa el puerto serial. Se ejecuta solo una vez (por eso se coloca en setup), y hay que indicar el baud rate. Lo más frecuente es usar 9600, sin embargo la velocidad dependerá de la aplicación.

Serial.print() and Serial.println()

Ambas funcionan muy similar. Lo que hacen es enviar los daots por serial. así Serial.print(5) envía el número 5, y Serial.print(val), envía el valor de la variable val, ya sea un entero, float, texto o cualquier tipo. Serial.println() hace lo mismo, pero agrega un "enter" al final, para que se inicie una nueva línea.

Step 2: Materiales Y Conexión

Esto es sencillo, solamente ocupamos:

  1. Arduino UNO con cable USB
  2. Jumper cable

Step 3: Código

El código es bastane simple como se ve en la foto y acá transcribo:

void setup(){
  Serial.begin(9600);
  pinMode(A0,INPUT);
}
void loop(){
  Serial.println(analogRead(A0));
}

En el setup, simplemente inicializamos el puerto serial a un baud rate de 9600, y establecemos que el pin A0, se utilizará para entrada.

En el loop agregamos:

Serial.println(analogRead(A0));

Vean como estamos ejecutando dos cosas en la misma linea. En esa línea de código, primero se ejecuta lo que está dentro del parentesis de Serial.println(), y luego se hacer el println. Es decir, se ejecuta primero analogread(A0), y luego, con el número resultante, se ejecuta Serial.println(). Esto hace el código un poco más corto y más eficiente, pero no necesariamente más legible. La otra forma de hacerlo sería:

int val = analogRead(A0);
Serial.println(val);

El resultado es el mismo.

Step 4: Funcionando

Cargar al Arduino.

Una vez cargado, abrir el monitor serial, seleccionando en el menú Tools>Serial Monitor. Se abre el monitor serial mostrando los datos de lectura del pin A0. Si tocan con el dedo el cable, verán como los números cambian. Noten que abajo a la derecha se indica 9600, este se puede cambiar, pero debe ser igual a lo establecido cuando se inicializó el puerto serial con Serial.begin().

Cierren el monitor serial y ahora abran en Tools>Serial Plotter, como se ve en la foto. Esta es una herramienta práctica sobre todo si se está probando algún tipo de sensor. Igualmente toquen con el dedo el cable para que vean los cambios, como se ve en la foto.