Autor: Agustin Gonzalez Redondo. M Rocío García de la Fuente.
Durante artículos anteriores, se han analizado diversos programas con los que trabajar distintos tipos de lenguajes de programación así como se ha introducido el funcionamiento de la placa Arduino y el programa específico que lo da soporte: Arduino IDE. A continuación se continuará con este trabajo utilizando para ello un pulsador como sensor digital, con el objetivo de introducirnos poco a poco en las posibilidades que Arduino proporciona.
El pulsador es un componente que conecta dos puntos en un circuito cuando es presionado. Para su conexión, se necesitan 3 cables, el primero conecta una de las patas del pulsador a 5 Voltios, el segundo conecta otra de las patas del pulsador unida a una resistencia (de 2,k2 kohmios) a la entrada digital seleccionada y por último el otro extremo de la resistencia se conectará a tierra (figura 1), de tal forma que cuando el pulsador está abierto, la entrada digital detectará 0 V (conexión de tierra) y cuando se cierre el circuito quedará conectado a 5 voltios siendo estos dos voltajes los que determinarán el cero y el uno lógicos respectivamente.
Una vez realizado el montaje del hardware del circuito con Arduino, se realizará el software de la controladora empleando mBlocks y la IDE de Arduino para elaborar el código.
Pulsador con S4A
Al tratarse de un autómata estático, puede ser interesante controlar su estado a través de su conexión con el ordenador. Para ello se pretende encender un diodo virtual creado empleando las herramientas de edición, y el programa elaborado con las herramientas de Scratch presentes en S4A.
Inicialmente se crean con S4A y su programa de edición un fondo basado en el esquema de conexiones realizado con nuevamente con Firtzing (figura 2) y dos objetos para representar el momento en que se cierra el pulsador, usando un Sprite sin derechos de propiedad creado por Spring (con licencia Creative Commons) y el estado de encendido y apagado de un diodo LED (figura 3), que servirán como animación gráfica para informar al usuario del estado en el que se encuentra el pulsador.
La programación de los objetos es muy sencillo y consta de tres subprogramas, la placa de Arduino tiene las instrucciones (figura 4) para leer el estado del pin digital 2 (pin seleccionado como entrada) y modificar una variable (“pulsar” toma valor 1 cuando se cierra el circuito) creada para que tanto el dedo simule su movimiento en función de la entrada usando un bucle infinito y un condicional doble (figura 5), y por su parte el LED se muestra cuando se cierra el pulsador y viceversa (figura 6).
Para hacerlo funcionar es necesario, como ya se ha visto en artículos anteriores de esta serie, descargar el Firmware en la placa de Arduino para establecer la conexión entre la ejecución de S4A y la tarjeta. El resultado se muestra en la siguiente imagen, una animación que depende del estado en que se encuentra el pulsador real (figura 7).
Pulsador con IDE Arduino
Utilizando ahora el mismo esquema electrónico que el mostrado en la figura 2, se trabajará con la IDE de Arduino para crear un programa que, una vez descargado en la placa, gestione de manera autónoma un el encendido de un diodo LED cuando se cierra un circuito accionando un pulsador.
La estructura básica de un programa de Arduino (figura 8). es bastante simple y divide ejecución en dos partes: setup() y loop() de forma muy similar a como ocurría con Processing:
- Setup() constituye la preparación del programa, incluye la declaración de variables y sólo se ejecuta una vez.
- loop() es la ejecución. En la función Setup()se trata de la primera función que se ejecuta en el programa. Incluye el código que va a ser ejecutado continuamente (leyendo las entradas de la placa, salidas, modificando variables, etc.).
Antes de estas dos funciones conviene indicar que, al igual que ocurría con Processing, se pueden declarar aquellas variables que se consideren necesarias.
Para dar comienzo con la programación, en la función setup() se van a definir aquellos pines que se emplearán como entrada y los que van a ser salida (pin 2 entrada digital, pin 3 salida digital), utilizando la función pinMode :
- pinMode(3,OUTPUT); indica que el pin 3 será empleado como salida.
- pinMode(2,INPUT); indica que el pin 2 será empleado como entrada
Para que el programa se ejecute de manera continuada, función loop(), leyendo el estado del sensor digital, y escribiendo lo que debe hacer la salida se emplean las funciones:
- digitalRead(2); lee el estado de la entrada digital que puede tomas valores HIGH o LOW, en función del voltaje en dicho pin (5V o 0V respectivamente)
- digitalWrite(3,valor); manda una señal en función de la variable valor (HIGH: 5V o LOW:0V) al pin número 3.
Teniendo todo esto en cuenta, se escribe el programa en la IDE de Arduino (figura 9). Una vez compilado y descargado se puede comprobar que el funcionamiento del autómata es, a diferencia del anterior, independiente de su conexión con el ordenador (se podría ejecutar alimentado por baterías).
Para finalizar, este mismo ejercicio se podría llevar a cabo usando mBlocks como plataforma, con la ventaja de que en modo Turbo se llegaría a un resultado similar al obtenido con S4A, mientras que el modo Arduino (es interesante analizar el programa que genera) se podría obtener el mismo resultado que en el segundo ejemplo, lo que desde aquí os invitamos a comprobar.
AUTORES: M. ROCÍO GARCÍA DE LA FUENTE Y AGUSTÍN GONZÁLEZ REDONDO