Intercambiando información con Arduino

Después de mucho tiempo, retomo el tema de programación de arduino en mac. Os voy a explicar como intercambiar información entre arduino y un ordenador.
Las posibilidades de arduino por si solo son inumerables, pero si le añadimos la capacidad de interaccionar con un ordenador, abrimos la puerta a muchos más proyectos, o funcionalidades nuevas para nuestros proyectos.

Mandar información desde arduino

Lo primero que vamos a ver es cómo mandar información por el puerto serie por arduino, voy a basarme en el ejemplo ‘Blink’ para mostrarlo:

/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.

This example code is in the public domain.
*/
void setup() {
// initialize the digital pin as an output:
Serial.begin(9600);
pinMode(13, OUTPUT);
}

void loop() {
digitalWrite(13, HIGH); // set the LED on
Serial.println(“Encendido”);
delay(1000); // wait for a second
digitalWrite(13, LOW); // set the LED off
Serial.println(“Apagado”);
delay(1000); // wait for a second
}

Lo primero de todo es añadir en el Void Setup, la instrucción Serial.begin(9600) de este modo inicializamos la utilización del puerto serie. Lo siguiente será, a lo largo de nuestro código, mandar la información que nosotros queramos mediante Serial.println(“Encendido”) en este caso estamos mandando la palabra on. Aquí podríamos poner lo que quisieramos, incluso una variable para que mandara su valor.

El siguiente paso será recibir esa información en el ordenador, al estar en el puerto USB, tendremos muchas formas de leerlo.

Serial Monitor Arduino

Lo más sencillo es usar el Serial Monitor del propio IDE de arduino. Este sistema es únicamente de revisión del código, es decir, seguir por dónde va el programa. En caso de que estemos probando una función y no queramos activar una salida podemos mandar información por el puerto serie y ver que funciona correctamente.

Captura de pantalla 2011 03 19 a las 18 41 31
Captura de pantalla 2011 03 19 a las 18 42 59

Python

Lo siguiente y un poco más potente es a través de un lenguaje de programación como pueda ser Python. Gracias a esto podemos tomar decisiones en nuestro programa con lo que pase en la placa arduino. El código es el siguiente:

import serial
ser = serial.Serial(‘/dev/tty.usbserial-A8008qpV’, 9600)
dato = ser.readline()
if dato == ‘on\r\n’ :
print(“encendido”)
if dato == ‘off\r\n’ :
print(“apagado”)

Lo primero es importar la librería serial para trabajar con la lectura del puerto serie, en el siguiente comando configuramos el puerto. Con el comando ser.readline() lo que hacemos es leer la información del puerto serie, y posteriormente trabajar con ese valor en nuestro programa.

En este ejemplo, en el programa de arduino mandamos las palabras ‘Encendido’ y ‘Apagado’ pero con el comando Serial.println, que añade un retorno de línea a la cadena, es por ello que debemos hacer la comparación en python con ‘Encendido\r\n’ y ‘Apagado\r\n’ que es realmente lo que está mandando por el puerto arduino

En el siguiente post, explicaré, cómo mandar información del ordenador a arduino para por ejemplo, encender un led. Pero la estructura del programa es bastante similar.

Vía:
Página arduino
Página Python