Podcast: Descargar (30.3MB)

En el capítulo de hoy vamos a ver diferentes alternativas de programación visual con Arduino. Uno de los grandes problemas a los que te puedes enfrentar con esta placa es la programación. Para poder tener una iniciación progresiva en este mundo, es importante comenzar con lenguajes de programación enfocados a obtener las nociones básicas de computación, olvidándote de los errores de sintaxis y de las particularidades de cada lenguaje. En este capítulo vamos a ver Scratch y Snap!.
Si quieres contactar con nosotros lo puedes hacer de diferentes maneras, a través del formulario de contacto, en el e-mail info@programarfacil.com, en Twitter (@programarfacilc) o en Facebook. También puedes mantenerte al día a través de la lista de distribución.
Ya te hablamos en el capítulo 28. Entorno de desarrollo de Arduino las diferentes opciones que teníamos a la hora de crear nuestro programas en código nativo de Arduino. El entorno de desarrollo oficial de Arduino está basado en Wiring (framework de código abierto para programar microcontroladores), que a su vez está basado en Processing, un lenguaje bastante sencillo de utilizar enfocado en proyectos multimedia e interactivos de diseño digital.
Arduino utiliza diferentes lenguajes y plataformas para poder programar su microcontrolador. En un pasado, no muy lejano, esta tarea se hacía muy tediosa debido a que se debía programar en lenguajes de bajo nivel como ensamblador o en algún otro tipo de lenguaje propietario de cada microcontrolador que, solo servían para esa marca e incluso para un único modelo. El fin principal de Arduino es dar a conocer las ciencias de la computación y la electrónica sin que esto suponga un trauma para los usuarios. Cuando adquieres una placa o kit de Arduino puedes empezar a aprender en cuestión de minutos, solo debes descargar el IDE oficial, instalarlo y a programar.
Desarrollar un software comercial implica tener conocimientos en muchas facetas tanto de la programación como de la tecnología pero, si miramos la esencia de cada programa todos se rigen por las mismas leyes, lógica, matemáticas, algoritmos y comunicación. La programación visual te permite adentrarte en este mundo de una manera suave. Existen varias plataformas que facilitan esta tarea. Si lo que realmente quieres es aprender a programar y dedicarte a ello profesionalmente, no te voy a engañar, es una tarea francamente difícil pero no imposible, siempre digo lo mismo, ilusión y constancia es la clave del éxito.
El primer paso que aconsejo que des es comenzar a utilizar Scratch, si además lo combinas con Arduino, te prometo que aprenderás a programar jugando. Esto se puede hacer gracias a la plataforma S4A y es de la que hablaremos en este capítulo.
Indice de contenidos
Scratch, el lenguaje de programación visual estrella
Quizás sea el lenguaje de programación visual por antonomasia, fue creado por Mitchel Resnick, miembro del MIT (Instituto Tecnológico de Massachusetts), en el año 2003. Desde entonces ha evolucionado y ha pasado por diferentes fases hasta llegar donde está ahora. Puedes trabajar online a través de su web y la posibilidad de trabajar offline descargando el editor de Scratch 2.0. Se trata de un software libre, lo que implica que puedes descargar el código fuente y amoldarlo a tus requerimientos.

Scratch está orientado a niños a partir de los 8 años pero es más que recomendable para todos aquellos que se quieran iniciar en la programación. El entorno de desarrollo no ofrece todo lo necesario para comenzar, un escenario, bloques, objetos, disfraces y sonidos, con estos cinco componentes podemos crear juegos y programas totalmente funcionales, puedes ver ejemplos en la galería de la web oficial. También puedes ver el tutorial que hicimos para crear el acertijo del lobo, la cabra y la col (parte 1 y parte 2).
El escenario es donde transcurre la acción y donde los objetos interactúan. Los objetos tienen disfraces para crear animaciones y sonidos que pueden ser asignados a diferentes acciones. Los bloques son la parte fundamental de la programación, si los arrastras al área de script podrás ir dando vida a los diferentes objetos y establecer su comportamiento.
Programación visual con S4A para Arduino
Plataforma orientada a la programación con Scratch y Arduino. Actualmente están desarrollando su sustituto Snap4Arduino que está en una fase beta, hablaremos más tarde de él. Está desarrollado y mantenido por el equipo de Smalltalk (lenguaje de programación reflexivo orientado a objetos) del Citilab (centro de investigación e innovación sobre la Internet social que centra su actividad en la innovación digital ciudadana, con el objetivo de difundir y fomentar la Sociedad de la Información) El concepto es poder utilizar toda la potencia de Scratch para crear proyectos con Arduino. La gran ventaja que nos ofrece S4A es precisamente que se basa en Scratch, un lenguaje reconocido por su facilidad y sencillez.
La gran desventaja que nos podemos encontrar es la conectividad con la placa, solo nos ofrece los siguientes pines de Arduino:
- 6 entradas analógicas
- 2 entradas digitales (2 y 3)
- 3 salidas analógicas PWM (5, 6 y 9)
- 3 salidas digitales (10, 11 y 13)
- 4 salidas digitales para servomotores (4, 7, 8 y 12)
Debido a su carácter de código abierto, podemos añadir nuevos bloques y funcionalidades ya que tenemos a nuestra disposición el código fuente del entorno de desarrollo.
Si quieres comenzar con esta plataforma te recomiendo que leas el artículo donde te explico cómo debes instalarlo para comenzar a trabajar.
Snap!, el sucesor de la programación visual
Snap! es un lenguaje de programación visual inspirado en Scratch, basado en bloques y la misma filosofía de facilidad y sencillez para aprender a programar. Formalmente se llama BYOB (Built Your Own Blocks, Construye Tus Propios Bloques) e incluye y expande funcionalidades de Scratch. Fue creado por un grupo peteneciente al MIT (MIT Media Lab) Una de las mayores ventajas es precisamente eso, que puedes crear tus propios bloques para que se comporten como tu quieras y después añadirlos a tu entorno de desarrollo.
La versión 4.0 está basada enteramente en los navegadores, escrita en JavaScript y HTML5, pudiendo ser ejecutada en cualquier plataforma y sin necesidad de instalar nada en tu máquina local. Funciona incluso con las plataformas móviles.
Snap4Arduino
Se trata del sucesor de Scratch4Arduino y actualmente se encuentra en su fase beta, primera versión completa, puedes descargarla en su web. Esta desarrollada y mantenida por el mismo equipo que desarrolló S4A.
Las ventajas de esta plataforma son:
- Soporta casi todos los tipos de placas de Arduino, incluyendo Mega y Nano.
- Los pins son auto-configurables pudiendo aprovechar todas las capacidades de la placa.
- Es siete veces más rápido en tiempos de respuesta que el S4A.
- Interactuación con más de una placa de Arduino en el mismo programa.
- Posibilidad de construir tus propios bloques.
- Es una aplicación de escritorio así que no necesitas tener conexión a Internet.
- Utiliza un nuevo firmware basado en Firmata.
- Posibilidad de traducir Snap! a código nativo de Arduino.
La mayores desventajas que tiene es que no es compatible con S4A y que por ahora está en la versión Beta que, aunque sea totalmente funcional, no está exento de errores y puede ser inestable.
Existen otras alternativas a estos dos lenguajes como Ardublock y miniBloq, pero esto lo dejaremos para otro capítulo.
Recurso del día
Firmata es un protocolo de comunicaciones para microcontroladores que nos permite conectar nuestro software instalado en un PC y Arduino. Puede ser utilizado con un firmware que se instala en cualquier arquitectura de microcontrolador así como en cualquier software soportado por este protocolo. Muy recomendable para utilizar con la gama Atmel de Arduino. Soporta los lenguajes más comunes como .NET, Java, JavaScript y PHP. También puede ser utilizado como protocolo para la comunicación con dispositivos móviles.
Muchas gracias a todos por los comentarios y valoraciones que nos hacéis en iVoox, iTunes y en Spreaker, nos dan mucho ánimo para seguir con este proyecto.