Programación de entradas con Arduino

03 Nov 2019 01 figura 1. Esquema de conexion del pulsador a la placa de Arduino realizado con Fritzing

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.

03 Nov 2019 02 figura 2. Fondo realizado con Fritizing para el programa 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.

03 Nov 2019 03 figura 3. Objetos creados para la animación con S4A

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).

03 Nov 2019 04 figura 4. Programa de bloques para Arduino que gestiona la animación

03 Nov 2019 05 figura 5. Programa de bloques que gestiona la animación del Objeto1 dedo

03 Nov 2019 06 figura 6. Programa de bloques que gestiona el estado de la animación del diodo LED

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).

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.

03 Nov 2019 08 figura 8. estructura básica de un programa de Arduino

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).

03 Nov 2019 06 figura 9

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

Robótica-Programación

Introducción a la física de partículas y observación (Muon detector)

AUTORES: M. ROCÍO GARCÍA DE LA FUENTE Y AGUSTÍN GONZÁLEZ REDONDO. Para comenzar este artículo es preciso realizar una breve introducción al modelo estándar de partículas, para intentar comprender el conocimiento científico que yace detrás del proyecto que trataremos de explicar. El modelo standard (fuente CERN) figura 1. Desde la década de 1930 los descubrimientos […]

Leer más
Robótica-Programación

Control de motores Arduino (IV). Motores Paso a Paso

AUTORES: M. ROCÍO GARCÍA DE LA FUENTE Y AGUSTÍN GONZÁLEZ REDONDO El segundo tipo de motores capaces de controlar su posición de forma interna, los servomotores fueron los primeros que hemos tratado en anteriores artículos, son los motores paso a paso (figura 4. Varios modelos de motores paso a paso), dispositivos ampliamente empleados en impresoras […]

Leer más
Robótica-Programación

Python ·3D con Processing

AUTORES: M. ROCÍO GARCÍA DE LA FUENTE Y AGUSTÍN GONZÁLEZ REDONDO. Hoy volvemos de nuevo a trabajar con Python, en este caso, añadimos nuevas posibilidades a una IDE que ya conocemos, Processing, además de trabajar con este lenguaje de programación realizaremos una primera animación en 3D. Para comenzar debemos añadir un nuevo modo de trabajo […]

Leer más
MENÚ
Revista