Autor: Agustin Gonzalez Redondo. M Rocío García de la Fuente.
S4A es una modificación de Scratch, que permite programar la plataforma de hardware libre Arduino de una forma sencilla. Aporta nuevos bloques para tratar con sensores y actuadores conectados a una placa Arduino. Proporciona una interfaz de alto nivel para programadores con las funcionalidades básicas del micro-controlador: escrituras y lecturas digitales y analógicas, aprovechando la facilidad de uso de Scratch (figura 1).
Los bloques funcionales son los típicos bloques que aparecen en Scratch, distribuidos, además, de la misma forma, con lo que el programa brinda la oportunidad de realizar una programación con S4A similar a la que se lleva a cabo con la aplicación en las que está basada.
La gran diferencia radica en la carpeta de bloques “Movimiento” que además de contener todas las órdenes propias de Scratch contiene los bloques de órdenes necesarios para la programación de una tarjeta controladora Arduino (figura 2).
Una vez descargada la aplicación de su página web, gratuita y disponible sistemas operativos más populares, cuando se abre y se conecta la tarjeta de Arduino a través del puerto USB, el programa muestra el mensaje “Buscando placa …” (figura 3), esto es debido a que S4A está diseñado para comunicarse con la micro-controladora a través de una programa cargado previamente en su memoria flash, este firmware está disponible en la página oficial de S4A (http://s4a.cat/index_es.html) y su descarga también es gratuita.
El firmware se descarga y se instala en la placa a través de la IDE de Arduino, y permite establecer la comunicación con S4A mediante el puerto USB, (figura 4), lo que obliga a la tarjeta a permanecer unida al ordenador a través de un cable, ya que no permite descargar los programas en el micro-controlador y la ejecución de los programas se ejecuta desde S4A.
Esto que a priori puede parecer una desventaja, ya que no permite ejecutar programas en los que la placa funciona de forma autónoma, por ejemplo robots móviles, sin embargo proporciona la posibilidad al usuario de tener una comunicación directa con la placa de Arduino, siendo este capaz de obtener una representación gráfica en pantalla de lo que está ocurriendo en cada instante de tiempo, estado de las entradas y salidas, lo que enriquece sobremanera la experiencia al programar robots estáticos.
A modo de ejemplo, se propone construir una barrera para vehículos, empleando para ello un servomotor, programa sencillo que se completará con su representación gráfica gracias a las herramientas de Scratch presente en S4A.
El primer paso es establecer las conexiones en la placa de Arduino tal y como se muestra en el esquema electrónico elaborado con Fritzing (figura 5).
Volviendo de nuevo a la aplicación S4A, una vez establecida la conexión con la placa, se procede a programar el objeto Arduino1 de la misma forma que se programa cualquier objeto de Scracth, con la salvedad de que ahora emplearemos para ello los bloques funcionales específicos para tal efecto.
Se establece un programa sencillo donde el servo motor, varía de forma alterna entre los 90 grados, posición cerrada, y los 0 grados, posición abierta de acuerdo con el sistema de referencia que usa S4A, extremos en los que permanecerá detenido un corto periodo de tiempo. Para ello se define una variable “angulo”, para todos los objetos, que se modificará durante la apertura y el cierre hasta alcanzar los valores extremos (figura 6). Como se puede observar, el programa consta de dos bucles Do…While (repetir hasta que), donde se produce la variación del ángulo hasta alcanzar los valores máximo y mínimo, y donde también se envía la señal a la placa para configurar el ángulo deseado. Al finalizar ambos bucles, se produce un reinicio del valor de “angulo”, para evitar problemas y un tiempo de espera al final del recorrido.
De igual forma, y empleando nuevamente la variable ángulo se procede a representar en pantalla un barrera dibujada con el editor de que dispone la aplicación, y que también está presente en el programa Scracth en el que se basa.
Primero se dibujará un fondo, modificando uno ya existente, sobre el que se desplazará la barrera (figura 7), el dibujo de la placa de Arduino se ha escondido previamente por programación (figura 6).
Se crea ahora la barrera en si como un nuevo objeto, tras dibujar con las herramientas disponibles en el editor que posee el programa y teniendo en cuenta que se debe modificar el centro del objeto, para que este gire desde una extremo, tal y como se muestra en la siguiente figura (figura 8).
Por último se procede a la programación del objeto, dentro de un bucle por siempre, y utilizando la variable creada para modificar el ángulo, el objeto girara de forma similar a como la hace la barrera real programada (figura 9).
El resultado es una barrera que se mueve real (figura 10) cuyo movimiento, controlado por la tarjeta controladora de Arduino, queda registrado en la pantalla del ordenador.
Como colofón a este programa, se propone programar de forma similar una pareja de diodos LED rojo y verde, que se encienden cuando la barrera este abierta (verde), y cerrada o en proceso de apertura y cierre (rojo), y representarlo gráficamente con S4A.
M. ROCÍO GARCÍA DE LA FUENTE