You are on page 1of 56

Diciembre

2015

Mixly V:0.95
Manual de Usuario y Ejemplos

Programacin Grfica de Arduino Basada en


Blockly

Jos Manuel Ruiz Gutirrez


Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

ndice
1. Instalacin
2. Descripcin del Entorno
2.1. Mens
2.2. Descripcin de las reas de trabajo
2.3. Los bloques. Estructura y acciones sobre ellos
2.4. Men contextual de bloque
2.5. Configuracin de un bloque a nivel funcional
2.6. Trabajando con Variables
2.7. Trabajando con listas
2.8. Compilacin y descarga de una aplicacin
3. Ejemplos de Aplicacin
3.1. Intermitente
3.2. Intermitente con variacin de tiempo
3.3. Monoestables
3.4. Activacin de una salida en modo Biestable
3.5. Contadores
3.6. Contador con puesta a cero.
3.7. Generacin de impulso de duracin variable
3.8. Regulador de Intensidad Luminosa
3.9. Sistema Combinacional
3.10. Medida de Luz con activacin de salida.
3.11. Medida de Luz y deteccin de niveles.
3.12. Secuenciador
3.13. Semforo
3.14. Control de servo
3.15. Codificador 4/2
4. Descripcin de libreras.

2
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

0. Mixly 0.95
Mixly es un entorno basado en Blockly que permite la programacin de tarjetas Arduino
mediante la utilizacin de bloques que permiten configuran un determinado montaje.

Es un entorno de programacin Grfica 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 versin actual del software es Mixly V.0.95, de esta versin he realizado la


traduccin al espaol del entorno pudindose 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 descompresin. 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 aplicacin con el fichero Mixly.jar (siempre que tengamos instalado java en
nuestra mquina)

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 compilacin en
espaol

Mi deseo es que Mixly sea evaluado y valorado como:

UNA POTENTE Y SENCILLA HERRAMIENTA DE PROGRAMACIN GRFICA DE


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

Jos Manuel Ruiz Gutirrez


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

3
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

1. INSTALACIN:
Para instalar la aplicacin 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 aplicacin. En la versin actual este fichero es detectado por algn
antivirus identificado como sospechoso de contener un virus, pero no es as. Si acaso el
antivirus lo borra podremos ejecutar la aplicacin 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
aplicacin ira a esta carpeta para lanzar el IDE de Arduino en modo
transparente.

La carpeta Blockly contiene el ncleo de Blockly

La carpeta sample contiene los ejemplos en formato XML

La carpeta setting contiene el fichero config que sirva para la configuracin de


la aplicacin

La carpeta testArduino es en la que se guardara el fichero INO de la aplicacin


que estemos ejecutando.

La carpeta company contiene libreras de distintas compaas

La carpeta mylib puede contener las libreras que nosotros creemos.

4
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

La aplicacin invoca al IDE Arduino y este es el encargado de realizar la verificacin,


compilacin y descarga de la aplicacin en la tarjeta Arduino.

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

5
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

2. Descripcin del entorno


En al siguiente imagen vemos un aspecto general del entorno.

La aplicacin nos permite ver el cdigo generado y tambin guardar y rescatar ficheros
de aplicacin en formato "XML"

2.1. Mens
Seguidamente vemos las distintas opciones del men que son fciles de comprender:

Nuevo Nos permite crear una nueva aplicacin. Borra todos los
bloques de la pantalla

Abrir Abre una aplicacin 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 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

Importar Importa un fichero en formato XML

Gestin Gestiona las libreras

Compilar Verifica y Compila la Aplicacin

Descargar Descarga sobre Arduino la aplicacin

Seleccionar Tarjeta Selecciona el tipo de tarjeta

Seleccionar Puerto Selecciona el puerto por el que se realizara la comunicacin


con Arduino

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


Arduino

2.2. Descripcin 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 libreras, al pulsar sobre


Bloques cualquiera de ellas se despliega una pestaa con los bloques que
integran esa librera.

rea de En este rea se muestra los botones de las opciones del men de la
Mens aplicacin

rea de Es la parte principal de la aplicacin 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 cdigo en formato del


Cdigo IDE Arduino derivado del montaje que tengamos realizado. el cdigo
se puede mostrar tambin pulsando en la pestaa Cdigo de la parte
superior

7
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

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 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

El nombre identifica la funcion del bloque.

Los parmetros 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 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

Duplicar: Permite realizar ela


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

Aadir Comentario: Permite


aadir un coemntario de texto
junto al bloque, Al activar la
opcion aprece en el bloque un
pequeo 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/Lnea:
Permite colocar los parmetros
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
tambin si esta contrada se
puede volver a expandir.

Desactivar/Activar Bloque:
Permite anular a efectos de
programacin el bloque
dejndolo simplemente como
una imagen en la pantalla.

Borrar Bloques: Permite borrar

10
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

el bloque con los bloques que


lleve aadidos. Nos indicar el
numero de bloques que estn
asociados al bloque deseamos
borrar.

2.5. Configuracin de un Bloque a nivel funcional


Determinados bloques tiene la posibilidad de configurarse, estos bloques llevan
incluido un pequeo 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 configuracin del bloque condicional "Si". Se observa cmo se


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

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

Encaje de parmetros y variables dentro de un bloque.

11
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

Determinados bloques de funcin necesitan ser configurados con parmetros que


identifican pines, estado de valores, variables, etc... Para la configuracin aparecen en el
bloque elementos que se encajan en el. Segn 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 pestaa de libreras "Variables" en ella


encontraremos los bloques de funcin que nos permiten la creacin y designacin 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( nmero 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 imgenes vemos estas operaciones.

Definicin de la variable "Vlvula"

Asigna un valor booleano a la variable Estado_Valvula

12
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

UN EJEMPLO

A continuacin vemos un ejemplo de utilizacin de las variables.

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

La vlvula se conectar a un pin de Arduino al que nombramos con la variable


"Valvula" (valor tipo long). Definimos el estado de la vlvula (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


vlvula es cerrada
"Estado_Valvula=verdadero"

Se escribe en el pin "Vlvula" 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" ponindolo en Se escribe en el pin "Vlvula" el valor "Estado_Valvula".

13
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

"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 librera "Listas".

Esta librera 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


especfico dentro de una lista

Establece un dato dentro de una lista en


una posicin determinada

El bloque "crear una lista con" permite


definir el nmero de elementos de la
lista, para ello bastar con pulsar sobre
el icono y aadir elementos en la
lista.

En la figura anterior vemos como se realiza la configuracin de una lista a la que


llamamos "Lista" con hasta tres elementos.

14
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

Para entender este concepto de lista ponemos a continuacin 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 ledo en un PIN6 digital trabajando en modo PWM (Salida analgica).

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 "EscribeAnalgico PIN#...". Se ha colocado un bloque
de impresin en el puerto del valor sacado en el PIN6 de salida PWM para observar
cmo 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 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

2.8. Compilacin y descarga de una aplicacin


Una vez que hemos realizado nuestra aplicacin en modo grafico haciendo uso de
las libreras de bloques de la herramienta, el siguiente paso es compilar la
aplicacin y descargarla en la tarjeta Arduino.

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


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

La compilacin muy descarga de la aplicacin 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 versin y el


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

16
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

Se indican en rojo los principales parmetros.

Una vez que se ha realizado la compilacin o la descarga aparecer un mensaje en la


"Ventana Terminal" indicndonos que todo ha ido bien. En esta ventana aparecern
tambin los mensajes de error que pudieran producirse.

17
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

3. Ejemplos de Aplicacin
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 utilizarn dos tipos de bloques: EscribeDigital PIN y Retardo.

18
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

Aspecto final de la pantalla:

19
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

3.2. Intermitente con variacin de tiempo


Una vez que hemos realizado la prctica anterior, vamos a continuar con las seales
analgicas. Esta vez la propuesta consiste en realizar un Intermitente pero con el
tiempo variable. Se trata de que el valor de temporizacin se recoja de una entrada
analgica, pongamos de la entrada A0.

Listado del programa

20
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

21
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

3.3. Monoestables
Con esta prctica, que consta de dos versiones, queremos probar la emulacin de un
Monoestable, es decir realizar la temporizacin de la activacin o desactivacin 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
condicin, 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 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

En el caso de querer realizar la activacin 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 ledo del PIN.

Monoestable de tiempo variable

La propuesta que hacemos a continuacin es hacer que el tiempo de activacin


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

23
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

3.4. Activacin 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 emulacin 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 activacin 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 activacin 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, cambindola a "0"
si est en "1" y en caso contrario la cambiar a "1". A la vez cambiar el valor
que enva al PIN digital de salida PIN6. Se coloca el final una Espera de 200 ms
para evitar los rebotes en la manipulacin del botn de entrada de PIN4.

Por flanco de bajada

Este segundo montaje est pensado para que la activacin del biestable se realice
en flanco de bajada (cuando el valor del PIN4 pasa de valer 1 a valer 0). Para el
diseo 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 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

25
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

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 botn colocado en este pin.

Queremos tambin que cada vez que se produzca una pulsacin 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
opcin "Monitor" de Mixly y ver cmo va la cuenta.

26
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

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

27
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

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

Activacin 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 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

29
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

3.7. Generador de impulsos de duracin variable.


Con esta aplicacin vamos utilizar dos conceptos nuevos en la programacin: La
utilizacin de una funcin a la que llamaremos "Pulsos" y el uso del bloque de funcin
"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 duracin de estos impulsos se podr
ajustar mediante el valor de entrada analgica del canal A0.

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


valor ledo en el canal analgico 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 "Funcin
Pulsos".

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


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

30
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

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

Se trata de enviar un valor "Intensidad" al pin, haciendo uso de la instruccin


"Escribir en PIN digital... el valor analgico..."

Se utilizarn dos pulsadores conectados a otras tantas entradas de seal digitales.

PIN4 Aumenta Intensidad

PIN7 Disminuye Intensidad

31
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

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
condicin 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 condicin que se encarga de esta
acotacin de nivel mximo. 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 tambin la opcin de imprimir el valor de la variable Intensidad por el


puerto USB.

A continuacin se muestra la ventana de monitorizacin del valor de la Intensidad.

32
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

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 lmpara (Z)
se emite el veredicto (PASA=encendida, NO PASA=apagada) para pasar a la siguiente
fase del concurso. La condicin para que el concursante pase es: "El concursante pasar
a la siguiente fase si obtiene 3 o ms votos "SI", y en caso de que sean dos los votos SI
emitidos, si uno de ellos es del Juez, tambin pasa el concursante".

La siguiente imagen muestra la ecuacin 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


Lmpara de salida: L=PIN6

El programa bsicamente empieza por la definicin de las variables A,B,C,D y L. La


funcin es la parte de condicin del bloque condicional "Si..". Las funciones lgicas que
se utilizan son las que figuran en la librera "Lgica".

33
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

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


la forma de crear la funcin L:

Si la funcin devuelve "1", entonces se cumple la condicin y se activa la salida L que


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

34
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

35
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

3.10. Medida de Luz con activacin de salida.


Vamos a realizar una aplicacin en la que leeremos el valor de un canal analgico
A0 de la tarjeta Arduino, en el que tenemos conectada una LDR. Lo mostraremos a
travs del puerto USB en la pantalla de monitorizacin y adems gobernaremos una
salida digital en funcin del valor ledo, de tal manera que:

Si A0>500 Entonces Salida PIN6=1

El proceso es el siguiente:

Definimos la variable hacindolo con la opcin de "Variable Local" y la


asociamos a la lectura del PIN analgico 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 condicin: Si A0>500 Entonces Salida PIN6=1.

En caso de cumplirse la condicin, activamos el PIN digital 6 (estado ALTO);


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

Este sera el algoritmo:

36
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

Mapeado del valor LUZ

En este caso lo que queremos es que el valor ledo 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 funcin "Mapear". En esta caso la condicin
para la activacin de la salida PIN6 se debe cambiar a: Si A0>50. Entonces Salida
PIN6=1.

Este sera el algoritmo:

37
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

38
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

3.11. Medida de luz y deteccin de niveles.


Con este ejemplo vamos a realizar la medida de la cantidad de luz a travs de un sensor
que colocaremos en el canal analgico A2 realizando hasta tres comparaciones con la
instruccin IF, de tal manera que podamos detectar tres niveles de iluminacin.
Nos vamos a basar en el ejemplo anterior y slo debemos incluir tres condicionales, uno
para cada nivel. Pensemos que ahora la condicin debe ser ">=" y esto requiere
modificar el bloque de comparacin.

Fijaremos el escalado de la seal leda entre 0 y 100. Tambin pondremos en el puerto


serie el valor ledo.

Estas son las condiciones de funcionamiento.

Condicin 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 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

3.12. Secuenciador
En esta prctica 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 disearn 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 cdigo de secuencia se va a integrar en una funcin, 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 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

Ejemplo de la funcin "a0"

Estas funciones sern invocadas desde el programa principal ejecutndose con un


tiempo de retardo "t".

El proceso consistir en la ejecucin en secuencia (una detrs de la otra) de estas


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

Secuenciador2

Ahora, lo que queremos aadir 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 botn). Si el
valor de la entrada PIN7 es "1" se pasar al estado a0=0000 (las cuatro salidas en "0".)

Este sera el programa:

41
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

3.13. Semforo.
En este ejemplo mostramos la posibilidad de realizar un semforo.

Se crearn 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
lmparas del semforo. Se establece un retardo de 1 seg. para cada cambio de estado del
semforo.

Se dispondr de un botn en el pin digital PIN4 que, si mantenemos pulsado, ejecutar


la secuencia normal del semforo; 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 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

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:

Posicin Angulo Tiempo

1 0 3000

2 90 3000

3 180 3000

Gobierno de un servo angular mediante una entrada analgica.

Vamos a gobernar el servo angular mediante una entrada analgica, canal A0 de


Arduino. Esta seal se asocia a la variable "Control", que es la que gobernar la
posicin del servo. Imprimiremos la variable para verla.

Como el valor mximo de la seal de gobierno "Control" ser 100, se debe realizar el
mapeado de la seal recogida en el PIN A0 de 0-1023 a 0-100 mediante el bloque de
funcin "Mapear"

43
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

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 implementacin es muy sencilla: se definen las variables de entrada y salida para


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

44
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

4. Descripcin de las Libreras


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 Analgicas
Bloques que controlan la ejecuion de suencias de acciones
Operaciones matemticas
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 librera es la que contiene los bloques mas genricos que tienen que ver
con la lectura o escritura de valores en los pines de arduino.

45
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

La libreria de cntrol contiene los bloques que permiten el control en la ejecucin el


programa

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

46
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

La librera de bloques de Texto incluye bloque de funcin que procesan informacin 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 librera

47
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

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 librera tambin se incluyen bloque para el tercambio de datos a traves del bus
I2C de Arduino.

48
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

La librfera "Almacenamiento" incoprora bloques de funcin que permiten la escritura y


lectura de datos en la EPROM de Arduino

49
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

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 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

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


librera

Esta librera permite la definico de nuevas funciones y su invocacion en un programa.

51
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

Las librerias que aparecen a continuacin estan integradas por elementos caractersticos
de los principlaes fabricantes y suministradores de elementos conectables cn Arduino

52
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

53
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

54
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

55
Mixly V:0.95 Gua de Usuario y Prcticas J.M. Ruiz Gutirrez

Jos Manuel Ruiz Gutirrez


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

56

You might also like