Está en la página 1de 56

Diciembre

2015

Mixly V:0.95
Manual de Usuario y Ejemplos

Programación Gráfica de Arduino Basada en


Blockly

José Manuel Ruiz Gutiérrez


Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

Índice
1. Instalación
2. Descripción del Entorno
2.1. Menús
2.2. Descripción de las Áreas de trabajo
2.3. Los bloques. Estructura y acciones sobre ellos
2.4. Menú contextual de bloque
2.5. Configuración de un bloque a nivel funcional
2.6. Trabajando con Variables
2.7. Trabajando con listas
2.8. Compilación y descarga de una aplicación
3. Ejemplos de Aplicación
3.1. Intermitente
3.2. Intermitente con variación de tiempo
3.3. Monoestables
3.4. Activación de una salida en modo Biestable
3.5. Contadores
3.6. Contador con puesta a cero.
3.7. Generación de impulso de duración variable
3.8. Regulador de Intensidad Luminosa
3.9. Sistema Combinacional
3.10. Medida de Luz con activación de salida.
3.11. Medida de Luz y detección de niveles.
3.12. Secuenciador
3.13. Semáforo
3.14. Control de servo
3.15. Codificador 4/2
4. Descripción de librerías.

2
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

0. Mixly 0.95
Mixly es un entorno basado en Blockly que permite la programación de tarjetas Arduino
mediante la utilización de bloques que permiten configuran un determinado montaje.

Es un entorno de programación Gráfica basado en Blockly Realizado en la School of


Educational Technology de la Beijing Normal University de China, dentro de un
proyecto cuyo nombre en chino es:
"北京师范大学教育学部创客教育实验室"
( "Maker Education Laboratory of Beijing Normal University").
Web del Proyecto: http://maker.bnu.edu.cn/

La versión actual del software es Mixly V.0.95, de esta versión he realizado la


traducción al español del entorno pudiéndose bajar el fichero zip desde Github
mediante el enlace. https://github.com/xbed/Mixly_Arduino/releases

Advertencia: Cuando se descargue el fichero, si se tiene activado Avast (no se si con


otro antivirus pasa lo mismo) se produce un error en la descarga debido a que un fichero
dentro del fichero zip tiene una "traza" que el antivirus reconoce como virus. LOS
AUTORES ASEGURAN QUE NO ES UN VIRUS Y TRABAJAN PARA EVOTAR
ESTE INCONVENIENTE. Lo que debemos hacer es desactivar, durante la descarga, el
antivirus y, una vez descargado, proceder a su descompresión. Cuando se vuelva a
activar el antivirus probablemente nos seguirá dando un error en el fichero Mixly.exe y
nos lo borrará de la carpeta en la que se haya descomprimido. No importa, se puede
ejecutar la aplicación con el fichero Mixly.jar (siempre que tengamos instalado java en
nuestra máquina)

El proyecto ha sido desarrollado por el Ingeniero de Software Luo Kailiang


perteneciente al grupo mencionado anteriormente. A Luo le debo agradecer la facilidad
que me ha dado para poder traducir la herramienta y realizar una compilación en
español

Mi deseo es que Mixly sea evaluado y valorado como:

UNA POTENTE Y SENCILLA HERRAMIENTA DE PROGRAMACIÓN GRÁFICA DE


ARDUINO Y SUS DIVERSAS VERSIONES DE TARJETAS, MUY ADECUADA PARA
SU USO EN LA ENSEÑANZA PRIMARIA SECUNDARIA Y LA FORMACION
PROFESIONAL.

José Manuel Ruiz Gutiérrez


Diciembre 2015. Ver:1
Este trabajo está bajo licencia Creative Commons Attribution 3.0 Unported License)

3
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

1. INSTALACIÓN:
Para instalar la aplicación basta descomprimir el fichero zip que se haya descargado del
lugar de enlace de descarga en una carpeta .

La estructura de esta carpeta será la siguiente.

Vemos que existe un fichero ejecutable con el nombre Mixly.exe. Con este es con el
que se arrancará la aplicación. En la versión actual este fichero es detectado por algún
antivirus identificado como sospechoso de contener un virus, pero no es así. Si acaso el
antivirus lo borra podremos ejecutar la aplicación con el fichero Mixly.jar (para que
este fichero sea ejecutable debemos tener instalado java).

Carpetas.

 La carpeta llamada "arduino-1-6-5", esta contiene el IDE de Arduino 1.6.5


completo y es preciso que este ahí y no se borre ni cambie de nombre. La
aplicación ira a esta carpeta para lanzar el IDE de Arduino en modo
transparente.

 La carpeta Blockly contiene el núcleo de Blockly

 La carpeta sample contiene los ejemplos en formato XML

 La carpeta setting contiene el fichero config que sirva para la configuración de


la aplicación

 La carpeta testArduino es en la que se guardara el fichero INO de la aplicación


que estemos ejecutando.

 La carpeta company contiene librerías de distintas compañías

 La carpeta mylib puede contener las librerías que nosotros creemos.

4
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

La aplicación invoca al IDE Arduino y este es el encargado de realizar la verificación,


compilación y descarga de la aplicación en la tarjeta Arduino.

Para cambiar el idioma basta con irse al botón de la esquina superior derecha y hacer
clic seleccionando el idioma.

5
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

2. Descripción del entorno


En al siguiente imagen vemos un aspecto general del entorno.

La aplicación nos permite ver el código generado y también guardar y rescatar ficheros
de aplicación en formato "XML"

2.1. Menús
Seguidamente vemos las distintas opciones del menú que son fáciles de comprender:

Nuevo Nos permite crear una nueva aplicación. Borra todos los
bloques de la pantalla

Abrir Abre una aplicación que ya esté guardada en formato XML

Guardar Guarda el proyecto en formato XML

Guardar Como Guarda el proyecto en formato XML con un nombre que le


designemos

Exportar Exporta en formato fichero XML

6
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

Importar Importa un fichero en formato XML

Gestión Gestiona las librerías

Compilar Verifica y Compila la Aplicación

Descargar Descarga sobre Arduino la aplicación

Seleccionar Tarjeta Selecciona el tipo de tarjeta

Seleccionar Puerto Selecciona el puerto por el que se realizara la comunicación


con Arduino

Monitorizar Monitoriza el estado del puerto USB en el que esta conectado


Arduino

2.2. Descripción de las Áreas de trabajo.


Las áreas que presenta el entorno son las mostradas en la figura siguiente:

Área de En el área de "Bloques" se muestran las librerías, al pulsar sobre


Bloques cualquiera de ellas se despliega una pestaña con los bloques que
integran esa librería.

Área de En este área se muestra los botones de las opciones del menú de la
Menús aplicación

Área de Es la parte principal de la aplicación sobre este área se arrastran y


Trabajo sueltan los bloque procediendo al ensamblado de estos. En este áreas
se puede realizar Zoom y Centrado de imagen

Área de En este área, que es ocultable, se muestra el código en formato del


Código IDE Arduino derivado del montaje que tengamos realizado. el código
se puede mostrar también pulsando en la pestaña Código de la parte
superior

7
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

El área de trabajo se puede ampliar y reducir as como centrar los bloques colocados en
la pantalla.

2.3. Los Bloques. Estructura y acciones sobre ellos


Los Bloques son la unidades basicas que utiliza Mixly para realizar el "algoritmo"
de cada aplicacion. Se ensamblan y colocan de modo "secuancial" entendiendo que
su ejecucion sera siempre desde arriba hacia abajo.

Los bloques pueden presentar distintas partes. Vemos uno generico.

La ayuda apfrece si dejamos el puntero del raon sobre el bloque duante unos
segundos.

8
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

El nombre identifica la funcion del bloque.

Los parámetros son los valores que se asocian a la funcion del bloque. Noralmente
para la selccion del parametro lo hacemos pulsando sobre el area y aprecera un
menu de seleccion cone l que modificarlo, pero tambien es posible incrustrar
valores sobre el area tanto parametros (valores enteros, booleanos o de texto)

En la siguiente imagen hemos colo ado dos opciones que hacen lo mismo: Poner un
nivel ALTO en el pin 6.

En el caso 1 se define una variable ("etiqueta") llamada ROJO a la que le asocia el


valor 6. Luego pegamos esa variable dentro del bloque "EscribeDigital PIN#.."

En el caso 2 directamente seleccionamos el PIN 6 del menu desplegable que nos


ofrece por defecto el bloque y lo sleccionamos.

2.4. Menu contextual de Bloque


Sobre cada Bloque se pueden realizar una serie de operaciones. para ello pulsamos el
boon dercho del raton estando el puntero sobre el bloque y nos aprece un menu con las
opciones que se ven en el aimagen siguiente. Pasamos a comentarlas.

9
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

Duplicar: Permite realizar ela


duplicaicon del bloque, cn los
mismos arametros que ya tenga
definidos.

Añadir Comentario: Permite


añadir un coemntario de texto
junto al bloque, Al activar la
opcion aprece en el bloque un
pequeño icono con una "?" que
al pusar sobre el abre una caja de
texto sobre la que podemos
escribir. El area de comentario s
epuede mover y posicionar en el
lugar que queramos.

Entradas Externas/Línea:
Permite colocar los parámetros
de dos modos distintos, sin
afectar para nada a la
funcionalidad del bloque.

Contraer/Expandir Bloque:
Permite contraer la imagen del
bloque para que ocupe menos y
también si esta contraída se
puede volver a expandir.

Desactivar/Activar Bloque:
Permite anular a efectos de
programación el bloque
dejándolo simplemente como
una imagen en la pantalla.

Borrar Bloques: Permite borrar

10
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

el bloque con los bloques que


lleve añadidos. Nos indicar el
numero de bloques que están
asociados al bloque deseamos
borrar.

2.5. Configuración de un Bloque a nivel funcional


Determinados bloques tiene la posibilidad de configurarse, estos bloques llevan
incluido un pequeño icono en la parte izquierda que al pulsar sobre el aparece una
ventana desde la que podremos seleccionar elementos y arrastrarlos al bloque para
incluirlos en el.

En la figura vemos la configuración del bloque condicional "Si". Se observa cómo se


han incluido los bloques auxiliares ""En cambio si" y "de lo contrario" que amplían el
alcance y funcionalidad de este bloque "si"

Además de este bloque "Si" existen otros bloques que tienen esta capacidad. En la
figura siguiente se muestran.

Encaje de parámetros y variables dentro de un bloque.

11
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

Determinados bloques de función necesitan ser configurados con parámetros que


identifican pines, estado de valores, variables, etc... Para la configuración aparecen en el
bloque elementos que se encajan en el. Según sea el perfil del encaje del bloque así será
el tipo de variable.

2.6. Trabajando con Variables:


El trabajo con variables es my importante en Mixly como lo es en los montajes que
realicemos con Arduino.

Las operaciones con variables se encentran en la pestaña de librerías "Variables" en ella


encontraremos los bloques de función que nos permiten la creación y designación de
valores a las variables. Estas operaciones se realizan con los bloques:

Las variables pueden ser de distintos tipos tal como se muestra en el menú desplegable
del bloque: long (numero entero), float( número decimal), boolean (valor digital) y
string (cadena de caracteres).

Una vez que definimos la variable, a la vez que le damos un valor esta estará disponible
para poder asignarle un nuevo valor o bien recoger el valor que tiene
asignado . En las siguientes imágenes vemos estas operaciones.

Definición de la variable "Válvula"

Asigna un valor booleano a la variable Estado_Valvula

12
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

UN EJEMPLO

A continuación vemos un ejemplo de utilización de las variables.

Se trata de un sistema que está formado por una válvula que se abrirá y cerrara cada
cierto tiempo.

La válvula se conectará a un pin de Arduino al que nombramos con la variable


"Valvula" (valor tipo long). Definimos el estado de la válvula (valor booleano) con la
variable Estado_Valvula y seguidamente definimos dos valores de tiempo (variable
tipo long) que nombramos como Tiempo_Abierta y Tiempo_Cerrada.

En la siguiente figura vemos el programa en el que:

 Se definen las variables dentro del


bloque configurar.

 Se declara que el estado de la


válvula es cerrada
"Estado_Valvula=verdadero"

 Se escribe en el pin "Válvula" el


valor "Estado_Valvula".

 Se imprime este valor en el


terminal.

 Se retarda un tiempo que hemos


definido como "Tiempo_Cerrada"

 Seguidamente se cambia el valor
"Estado_Valvula" poniéndolo en  Se escribe en el pin "Válvula" el valor "Estado_Valvula".

13
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

"falso" (apagado)  Se retarda un tiempo que hemos definido como


"Tiempo_Abierta"
 Se imprime el valor por el terminal.

2.7. Trabajando con listas


Es muy normal que en nuestras aplicaciones tengamos que utilizar listas o arrays de
datos. Para ello en Mixly se utilizan los bloques de la librería "Listas".

Esta librería tiene los bloques siguientes.

Crea una lista con un conjunto de


elementos dentro de ella. Los datos
pueden ser de dos tipos: Int (Enteros) o
Float (Decimales). La lista debe ser
nombrada con un nombre "mylist"

Crea una lista con un texto

Devuelve el valor de un elementos


específico dentro de una lista

Establece un dato dentro de una lista en


una posición determinada

El bloque "crear una lista con" permite


definir el número de elementos de la
lista, para ello bastará con pulsar sobre
el icono y añadir elementos en la
lista.

En la figura anterior vemos como se realiza la configuración de una lista a la que


llamamos "Lista" con hasta tres elementos.

14
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

Para entender este concepto de lista ponemos a continuación un ejemplo en el que se


define una lista a la que llamaremos Control_Servo de 4 elementos (10,50,100,150).

El programa lo que hace es leer cada uno de los elementos de la lista de modo secuencia
y saca el valor leído en un PIN6 digital trabajando en modo PWM (Salida analógica).

Se crea una variable llamada "Elemento" que actuará como puntero para recorrer dentro
de un bloque de tipo "contar..". Los valores se van leyendo de acuerdo al estado de
cuenta del bloque contador y se lee el dato con ayuda del bloque "recoge elemento
en.." y lo deposita en el bloque "EscribeAnalógico PIN#...". Se ha colocado un bloque
de impresión en el puerto del valor sacado en el PIN6 de salida PWM para observar
cómo trabaja el algoritmo.

Se muestra la ventana "Monitor" en la que vamos viendo como cada 1000 ms se va


recorriendo uno por uno de modo secuencial los elementos de la lista "Control_Servo"

15
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

2.8. Compilación y descarga de una aplicación


Una vez que hemos realizado nuestra aplicación en modo grafico haciendo uso de
las librerías de bloques de la herramienta, el siguiente paso es compilar la
aplicación y descargarla en la tarjeta Arduino.

Podemos "Compilar" simplemente para ver si hay errores o "Descargar" si es que


deseamos depositar la aplicación en Arduino. Para estas dos operaciones es
necesario que previamente tengamos seleccionada la tarjeta conectada así como el
puerto.

La compilación muy descarga de la aplicación se realiza invocando Mixly


directamente al IDE Arduino. Por este motivo es necesario que este localizado el
software IDE Arduino en su carpeta.

La carpeta arduino-1-6-5 contiene el software de Arduino y se indica la versión y el


nombre de la carpeta en el fichero "config" del que mostramos su contenido.

16
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

Se indican en rojo los principales parámetros.

Una vez que se ha realizado la compilación o la descarga aparecerá un mensaje en la


"Ventana Terminal" indicándonos que todo ha ido bien. En esta ventana aparecerán
también los mensajes de error que pudieran producirse.

17
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

3. Ejemplos de Aplicación
3.1. Intermitente
Se trata de activar en modo intermitente una salida de Arduino.

La salida que queremos gobernar será el PIN11 y el tiempo entre encendido y apagado será de 0,5 seg.

Se utilizarán dos tipos de bloques: EscribeDigital PIN y Retardo.

18
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

Aspecto final de la pantalla:

19
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

3.2. Intermitente con variación de tiempo


Una vez que hemos realizado la práctica anterior, vamos a continuar con las señales
analógicas. Esta vez la propuesta consiste en realizar un “Intermitente” pero con el
tiempo variable. Se trata de que el valor de temporización se recoja de una entrada
analógica, pongamos de la entrada A0.

Listado del programa

20
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

21
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

3.3. Monoestables
Con esta práctica, que consta de dos versiones, queremos probar la emulación de un
Monoestable, es decir realizar la temporización de la activación o desactivación de una
salida digital durante un tiempo que podemos establecer.

Vamos a trabajar con los pines siguientes:

 PIN 4 Entrada digital

 PIN 6 Salida digital

Veremos los siguientes casos...

Monoestable activado por flaco de subida.

Se trata de testear el estado de un PIN digital definido como entrada haciendo


que el cambio sea activo en el flanco de subida (cuando pasa de 0 a 1).

Lo que hacemos es utilizar un bloque condicional que estará pendiente en todo


momento de testear si el PIN 4 se activa (Pasa de 0 a 1). Si se cumple la
condición, lo que hacemos es activar la salida PIN 6 durante un tiempo (2000
ms) pasando luego al estado estable de reposo ("0").

Activado por flanco de bajada

22
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

En el caso de querer realizar la activación de la salida en modo monoestable con


flanco de subida (paso de 1 a 0), lo que haremos será testear el valor del PIN 4,
pero teniendo en cuenta que en reposo debe estar pulsado ("1") y al soltar
temporalmente es cuando se activará el monoestable. Observa el bloque "no"
que niega el valor del estado leído del PIN.

Monoestable de tiempo variable

La propuesta que hacemos a continuación es hacer que el tiempo de activación


del monoestable sea consignada mediante la entrada analógica A0. En este caso
creamos una variable local que se ascia al canal analógico A0. Posteriormente en
el bloque "Esperar [ms]" colocamos de valor la variable "t"

23
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

3.4. Activación de una salida en modo biestable


Se trata de realizar el gobierno de una salida PIN6 con una entrada PIN4 de tal manera
que este sea en modo biestable. Al pulsar, cambia el estado de la salida.

Con esta actividad vamos a abordar el tema de la emulación de un biestable de tal


manera que podamos gobernar una salida digital PIN6 mediante el estado de una
entrada digital PIN4. Veremos dos casos: en el primer caso, cuando la activación de la
salida se realiza mediante un flanco de subida de la entrada -PIN4 pasa de "0" a "1"-, y
en el segundo caso, cuando la activación se lleva a cabo mediante un flanco de bajada -
PIN4 pasa de "1" a "0"-

Por flanco de subida

En este montaje se define una variable que llamamos por ejemplo "estado", que
almacenará el estado del biestable y que será cambiada de estado siempre que
detectemos que la entrada digital PIN4 pase a valor "1" (flanco de subida).
Vemos que hay un condicional para el test de la entrada y dentro otro
condicional doble que testeará el valor de la variable estado, cambiándola a "0"
si está en "1" y en caso contrario la cambiará a "1". A la vez cambiará el valor
que envía al PIN digital de salida PIN6. Se coloca el final una Espera de 200 ms
para evitar los rebotes en la manipulación del botón de entrada de PIN4.

Por flanco de bajada

Este segundo montaje está pensado para que la activación del biestable se realice
en flanco de bajada (cuando el valor del PIN4 pasa de valer 1 a valer 0). Para el
diseño se ha incluido un bloque tipo "hasta" que solo dará paso al gobierno del
biestable cuando el valor de la entrada PIN4 sea "0", es decir, cuando haya
pasado de 1 a 0.
24
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

25
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

3.5. Contadores
Vamos a contar impulsos con Arduino.

Habilitaremos el PIN4 como entrada de impulsos de tal manera que una variable se verá
incrementada cada vez que pulsemos un botón colocado en este pin.

Queremos también que cada vez que se produzca una pulsación en el PIN de entrada
PIN4, se active temporalmente (200 ms.) una salida PIN6 para indicar de manera
luminosa que el impulso que ha entrado.

Definimos la variable "i" que almacena el numero de impulso recogidos. Pero es


importante que esta variable se defina como global, no local. Al definirla, la ponemos
en "0". Se testea el valor del PIN4 de entrada de impulsos y, si está en "1", se
incremente la variable "i".

El valor de "i" lo sacaremos al puerto USB para poder monitorizarlo luego con la
opción "Monitor" de Mixly y ver cómo va la cuenta.

26
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

A continuación se muestra una imagen que permite ver como se monitoriza el valor de
la variable de cuenta "i":

27
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

3.6. Contador con puesta a cero


Ahora vamos implementar la posibilidad de poner a "0" el contador con el PIN digital
de entrada PIN7. Lo que haremos es poner i=0 cuando se detecta que el estado del PIN7
es "1".

Activación de una salida cuando el contador llega a un valor

En este ejemplo se trata de que la salida digital PIN11 se active durante 3 seg. cuando el
valor de la variable de cuenta "i" alcanza 11; es decir, contamos 10 empezando por 1
(no contamos el 0, por eso designamos la variable i con el valor de inicio i=1).

28
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

29
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

3.7. Generador de impulsos de duración variable.


Con esta aplicación vamos utilizar dos conceptos nuevos en la programación: La
utilización de una función a la que llamaremos "Pulsos" y el uso del bloque de función
"Contar con.."

Se trata de testear el estado de la entrada digital PIN4 y en caso de activarse queremos


generar 4 impulsos en el pin de salida PIN6. La duración de estos impulsos se podrá
ajustar mediante el valor de entrada analógica del canal A0.

En el "Programa Principal (loop)" se define la variable tiempo "t" que asociamos al


valor leído en el canal analógico de entrada A0. Seguidamente se lee el estado de la
variable de entrada digital PIN4. Si el valor de PIN4=1 entonces se ejecuta la "Función
Pulsos".

La "Función Pulsos" se encarga de generar un numero de pulsos (4) mediante el uso de


la función Contar Con.. en la que definimos el rango de cuenta. Las instrucciones que
colocamos dentro de la función Contar Con.. se activa y desactiva con una
temporización de valor "t" la salida digital PIN6.

30
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

3.8. Regulador de Intensidad luminosa.


En este ejemplo se va a implementar un sencillo regulador de Intensidad Luminosa en
un PIN digital configurada como PWM (salida analógica) PIN6.

Se trata de enviar un valor "Intensidad" al pin, haciendo uso de la instrucción


"Escribir en PIN digital... el valor analógico..."

Se utilizarán dos pulsadores conectados a otras tantas entradas de señal digitales.

 PIN4 Aumenta Intensidad

 PIN7 Disminuye Intensidad

31
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

En el programa hay dos bloques condicionales tipo "Si.. ejecutar" "que testean el
estado de los pulsadores conectados en los pines PIN4 y PIN7. Si se cumple la
condición de estos bloques condicionales se incrementa (PIN4) o se decrementa (PIN7)
el valor de la variable "Intensidad". Si se supera el valor de 255, la variable no debe
pasar de este valor. Para ello se pone un bucle de condición que se encarga de esta
acotación de nivel máximo. Se coloca otro condicional para detectar valores por debajo
de 0 en cuyo caso se bloque el valor de Intensidad a 0

Se ha dispuesto también la opción de imprimir el valor de la variable Intensidad por el


puerto USB.

A continuación se muestra la ventana de monitorización del valor de la Intensidad.

32
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

3.9. Sistema Combinacional.


Los miembros de un jurado en un programa musical son: 3 Vocales (A,B,C) y un Juez
(D) Cada uno de ellos dispone de un interruptor para emitir su voto (SI
PASA=Interruptor cerrado, NO PASA=Interruptor abierto). Mediante una lámpara (Z)
se emite el veredicto (PASA=encendida, NO PASA=apagada) para pasar a la siguiente
fase del concurso. La condición para que el concursante pase es: "El concursante pasará
a la siguiente fase si obtiene 3 o más votos "SI", y en caso de que sean dos los votos SI
emitidos, si uno de ellos es del Juez, también pasa el concursante".

La siguiente imagen muestra la ecuación y el circuito que nosotros implementaremos en


Arduino de acuerdo a las siguientes designaciones de pines:

 Pulsadores de Entrada: A=PIN4, B=PIN7, C=PIN8, D=PIN12


 Lámpara de salida: L=PIN6

El programa básicamente empieza por la definición de las variables A,B,C,D y L. La


función es la parte de condición del bloque condicional "Si..". Las funciones lógicas que
se utilizan son las que figuran en la librería "Lógica".

33
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

Estas se pueden encadenar de la forma que queramos. En la siguiente figura se muestra


la forma de crear la función L:

Si la función devuelve "1", entonces se cumple la condición y se activa la salida L que


es el PIN6. Si no se cumple se desactiva la salida PIN6.

34
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

35
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

3.10. Medida de Luz con activación de salida.


Vamos a realizar una aplicación en la que leeremos el valor de un canal analógico
A0 de la tarjeta Arduino, en el que tenemos conectada una LDR. Lo mostraremos a
través del puerto USB en la pantalla de monitorización y además gobernaremos una
salida digital en función del valor leído, de tal manera que:

Si A0>500 Entonces Salida PIN6=1

El proceso es el siguiente:

 Definimos la variable haciéndolo con la opción de "Variable Local" y la


asociamos a la lectura del PIN analógico A0.

 Seguidamente imprimimos el valor de la variable, delante de la cual ponemos el


texto "Luz=" unido a la variable, con la ayuda del bloque "crear texto con.."

 Seguidamente situamos el condicional "Si.. ejecutar...de lo contrario" en el que


establecemos como condición: Si A0>500 Entonces Salida PIN6=1.

 En caso de cumplirse la condición, activamos el PIN digital 6 (estado ALTO);


en caso contrario, desactivamos el PIN digital 6 (estado BAJO).

Este sería el algoritmo:

36
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

Mapeado del valor LUZ

En este caso lo que queremos es que el valor leído en A0, en lugar de darse en el
margen 0-1023, se dé en el margen 0-100; es decir, queremos "mapear el valor".
Para ello, lo que hacemos es utilizar la función "Mapear". En esta caso la condición
para la activación de la salida PIN6 se debe cambiar a: Si A0>50. Entonces Salida
PIN6=1.

Este sería el algoritmo:

37
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

38
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

3.11. Medida de luz y detección de niveles.


Con este ejemplo vamos a realizar la medida de la cantidad de luz a través de un sensor
que colocaremos en el canal analógico A2 realizando hasta tres comparaciones con la
instrucción IF, de tal manera que podamos detectar tres niveles de iluminación.
Nos vamos a basar en el ejemplo anterior y sólo debemos incluir tres condicionales, uno
para cada nivel. Pensemos que ahora la condición debe ser ">=" y esto requiere
modificar el bloque de comparación.

Fijaremos el escalado de la señal leída entre 0 y 100. También pondremos en el puerto


serie el valor leído.

Estas son las condiciones de funcionamiento.

Condición Estado PIN9 Estado PIN10 Estado PIN11

A2 >= 40 1 0 0

A2 >= 60 0 1 0

A2 >= 75 0 0 1

39
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

3.12. Secuenciador
En esta práctica vamos a realizar secuenciadores.

Un secuenciador es un circuito que activa y desactiva salidas de un modo secuencial


estableciendo un tiempo entre una secuencia y la siguiente o saltando de una a la otra
cuando se ordena mediante un pulsador de entrada.

Secuenciador1

Vamos a realizar un primer ejemplo en el que la secuencia que deseamos realizar será
con 4 salidas digitales: PIN6, PIN9, PIN10, PIN11.

Con el PIN4 actuando de entrada activaremos la secuencia mediante un condicional


"Si". Creamos una variable que llamamos "t" que representa el tiempo entre cada
estado de la secuencia y le daremos un valor t=200, lo que significa que cada 0.2 seg.
cambia el estado.

Los estados se diseñarán de acuerdo a la tabla siguiente:

Estado PIN6 PIN9 PIN10 PIN11

A0 0 0 0 0

A1 1 0 0 0

A2 0 1 0 0

A3 0 0 1 0

A4 0 0 0 1

Tiempo entre estados t=200ms.

Cada código de secuencia se va a integrar en una función, de tal manera que


estableceremos las cinco funciones: a0, a1, a2, a3 y a4.

a0=0000, a1=1000, a2=0100, a3=0010, a4=0001

40
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

Ejemplo de la función "a0"

Estas funciones serán invocadas desde el programa principal ejecutándose con un


tiempo de retardo "t".

El proceso consistirá en la ejecución en secuencia (una detrás de la otra) de estas


funciones cuando el valor del PIN6 sea "1". Entre función y función se establecerá un
retardo de tiempo "Esperar t"

Secuenciador2

Ahora, lo que queremos añadir es la posibilidad de poner a cero la secuencia, ya que una
vez terminada se queda siempre en el estado a4.

Para ello utilizaremos el PIN7 que actuará como entrada (conectado a un botón). Si el
valor de la entrada PIN7 es "1" se pasará al estado a0=0000 (las cuatro salidas en "0".)

Este sería el programa:

41
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

3.13. Semáforo.
En este ejemplo mostramos la posibilidad de realizar un semáforo.

Se crearán hasta cuatro funciones que se corresponden con los estados posibles: rojo,
ámbar, verde, apagado.

Cada una de estas funciones recoge el estado de los pines de salida de cada una de las
lámparas del semáforo. Se establece un retardo de 1 seg. para cada cambio de estado del
semáforo.

Se dispondrá de un botón en el pin digital PIN4 que, si mantenemos pulsado, ejecutará


la secuencia normal del semáforo; y si soltamos, se pondrá en modo intermitente del
ámbar.

Simplemente realizando el enlazado de bloques de “Retardo” y “Escribir Digital”


realimentadas. Las salidas establecidas son PIN11 (rojo), PIN10 (ámbar) y PIN9
(verde).

42
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

3.14. Control de Servo


Realizaremos unos sencillos montajes en los que gobernaremos un servo.

Gobierno de un servo angular.

En este caso deseamos posicionar el eje de un servo en un rango angular de 0º a 180º

Deseamos conectar el servo en el PIN3 y queremos que ejecute la siguiente secuencia


angular:

Posición Angulo Tiempo

1 0 3000

2 90 3000

3 180 3000

Gobierno de un servo angular mediante una entrada analógica.

Vamos a gobernar el servo angular mediante una entrada analógica, canal A0 de


Arduino. Esta señal se asocia a la variable "Control", que es la que gobernará la
posición del servo. Imprimiremos la variable para verla.

Como el valor máximo de la señal de gobierno "Control" será 100, se debe realizar el
mapeado de la señal recogida en el PIN A0 de 0-1023 a 0-100 mediante el bloque de
función "Mapear"

43
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

3.15. Codificador 4/2.


Este montaje que propongo sirve para emular el comportamiento de un codificador de 4
entradas a 2 salidas binarias.

Se seleccionan los pines PIN4, PIN7, PIN8 y PIN12 como entradas y los pines PIN6 y
PIN9 como salidas. Se trata de implementar la siguiente tabla de verdad:

Entradas A,B,C,D PIN9 (S1) PIN6 (S0)


PIN4 (A) 0 0
PIN7 (B) 0 1
PIN8 (C) 0 0
PIN12 (D) 1 1

La implementación es muy sencilla: se definen las variables de entrada y salida para


cada uno de los pines y a continuación se establecen tantas funciones condicionales "Si"
como códigos tenemos que sacar (4 códigos); y para cada una se activan o desactivan
los pines de salida (S0 y S1).

44
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

4. Descripción de las Librerías


Seguidaente se muetran los contendios de cada una de las librerias que se incluyen en
esta version de Mixly.

EXPLICACION DE LIBRERIAS
Entrada/salidas Digitales y Analógicas
Bloques que controlan la ejecuion de suencias de acciones
Operaciones matemáticas
Bloques que manipulan textos
Bloques que manipulan array o listas de datos.
Bloques de fuciones logicas
Bloques que permien la carga de datos en la memoria.
Bloques de unidades de entrada de datos a Arduno a traves de sus pines
Bloques que permiten el gobierno de elemebtos de salida
Definicion de variables internas del programa
Bloques para programar el robot Pabplus(Robot)
Bloques para programar Labplus (Box)
Bloques para trajetas y sistema DFRobot
Bloques para tarjetas y sistemas MakerBlock
Bloques para mBot
Bloques para componentes de SeeeStudio

La siguiente librería es la que contiene los bloques mas genéricos que tienen que ver
con la lectura o escritura de valores en los pines de arduino.

45
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

La libreria de cntrol contiene los bloques que permiten el control en la ejecución el


programa

La libfería matematicas incluye los bloques que permiten el tratameninto d elos valores
de las variables de nuestra aplicacion.

46
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

La librería de bloques de Texto incluye bloque de función que procesan información de


tipo textual

El trabajo con variables de tipo lista o array se puede realizar con la ayuda de las
librerias que aparecen en esta librería

47
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

Las funciones logicas son aquellas que afectan a la comparacio de valores y a las
funciones basicas logicas del álgebra de Boole

Las funciones de comunicacion permiten el intercambio de datos con el puerto serie al


que está conectado Arduino. Nos permite monitoriza variables haciendo uso de la
opcion "Monitorizar" del menu.

En esta librería también se incluyen bloque para el tercambio de datos a traves del bus
I2C de Arduino.

48
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

La librfería "Almacenamiento" incoprora bloques de función que permiten la escritura y


lectura de datos en la EPROM de Arduino

49
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

La biblioteca Sensor incluye bloques de control para incluir sensores en el proyecto.

La libreria Actuadores inlcuye bloques para el cotrol de elementos de salida.

50
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

La definicon y manejo de variables incluye potentes bloques que se guardan en esta


librería

Esta librería permite la definico de nuevas funciones y su invocacion en un programa.

51
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

Las librerias que aparecen a continuación estan integradas por elementos característicos
de los principlaes fabricantes y suministradores de elementos conectables cn Arduino

52
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

53
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

54
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

55
Mixly V:0.95 Guía de Usuario y Prácticas J.M. Ruiz Gutiérrez

José Manuel Ruiz Gutiérrez


Diciembre 2015. Ver:1
Este trabajo está bajo licencia Creative Commons Attribution 3.0 Unported License)

56

También podría gustarte