El otro día estuve haciendo una lista de las posibilidades que había para programar una placa Arduino y salieron las siguientes.

El caso es que a pesar de tener tantas formas, cada uno tiene sus ventajas e inconvenientes. Y uno de los peores inconvenientes que no se explican en casi ninguna parte es el siguiente.

Hay 2 claras diferencias a la hora de programar una placa Arduino. Una es programar el microcontrolador y otra es programar en el microcontrolador un firmware capaz de conectarse a alguno de los programas antes mencionados.

Por ejemplo, es el caso de Scratch, LabView o Matlab. Para manejar Arduino a través de estos programas, primero hay que cargar un firmware o sketch predeterminado desde el mismo IDE de Arduino para que funcionen en los mismos.

Ésto nos permite ejecutar funciones en tiempo real y así poder observar los cambios de manera directa, sin tener que ir cargando una y otra vez nuestros programas. Aún así suelen estar muy limitados porque nos imposibilitan la opción de cargar librerías externas, ya que el firmware en la placa está diseñado solo para responder a las funciones básicas que ofrecen estos programas, que son el manejo de I/O digitales, analógicos, manejo de servomotores y poco más.

La gran y enorme desventaja de esto es que si queremos usar la placa de manera independiente, como ocurriría si queremos establecer una conexión remota o que un robot vaya paseando por el campo, entonces este método no nos sirve de nada, ya que cuando lo desenchufemos del USB al ordenador, el programa cargado será el implementado para responder con estos programas y no el que hayamos diseñado nosotros.

Si la comunicación USB se pierde, hay que volver a conectar de nuevo. Y este hecho suele ocurrir cuando conectamos varios motores cuya potencia hace que la comunicación Serie se desconecte varias veces. Y puede resultar desesperante para los ejercicios más sencillos. Pero este hecho se puede solucionar si conectamos unas pilas a la placa para alimentar el motor en vez de coger la potencia por el cable USB e interrumpir la comunicación.

 

En cambio otros como el propio IDE, Ardubloq, Bitbloq, Codebender sí que nos permiten cargar programas completos que funcionarán con alimentación externa, sin necesidad de conectar al ordenador. Dentro de ésta categoría hay que resaltar que Bitbloq y Codebender no son programas, sino que son páginas web desde las que se permite el acceso a los puertos de comunicación del ordenador e instalan el código creado desde el navegador. Por ello, hay que asegurarse bien de tener internet en casa, porque si necesitáis hacer una demostración en público es bastante fácil que las leyes de Murphy se vuelvan en vuestra contra.

Ardubloq y Bitbloq tienen una interfaz de programación por bloques muy intuitiva para jóvenes. Bitbloq bastante más adaptada que Ardubloq. Aquí hay muchos aspectos a tener en cuenta y he de decir que aunque Bitbloq tiene sus limitaciones, gana a Ardubloq por algo tan simple como la posibilidad de crear funciones con parámetros de entrada, mientras que Ardubloq crea lo que se llaman subrutinas que son procedimientos simples para ejecutar instrucciones repetitivas.

Ardubloq se pueden extender, ya que al fin y al cabo es un programa escrito en Java dentro del IDE de Arduino, totalmente libre. Es tan libre que ofrece a las empresas la definición de sus productos para que aparezcan en el catálogo.

Bitbloq está muy bien, pero aún le faltan muchas librerías para ser perfecto. Y el intento de crear arrays y clases como nuevos tipos de dato queda aún atrás, pero de todas formas ya es más de lo que se suele encontrar.

Bitbloq ha sido desarrollado gracias a la tecnología de Google Blockly; y lo que hace es generar el código en función de una serie de eventos al mover los diferentes bloques sobre la zona de trabajo, para luego compilar en el servidor y pasar el programa a la placa. Para su uso educativo es lo mejor que hay y es más atractivo.

En fin, según cual sea la aplicación que se le vaya a dar es mejor uno u otro. Pero por mi parte lo esencial es que su funcionamiento sea independiente y que las opciones sean lo más abiertas posibles. Y ahí el único que gana es el propio IDE de Arduino y CodeBender que es lo mismo pero desde navegador.

Para un primer paso con bloques las opciones de programación con bloques están muy bien, pero para pasar correctamente de los bloques al código, nada mejor que Ardublockly. Con Ardublockly conseguimos ver que cada acción y cambio se traduce en una modificación en el código correspondiente a lo que ya sabíamos utilizar. Al final sigue siendo una capa intermedia entre el modelo de programar, pero hay que valorar que un bloque, escribe correctamente código sin fallos de compilación entre paréntesis, llaves, puntos y comas… y que a la larga es de agradecer.

Ahí reside el cambio de aprender preocupándose más en la solución sobre el planteamiento de un problema que en la sintaxis de un lenguaje. Porque al final, programar es programar sea el lenguaje que sea.