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

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.

J.M. Ruiz Gutirrez

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.

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
Bloques

En el rea de "Bloques" se muestran las libreras, al pulsar sobre


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

rea de
Mens

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


aplicacin

rea de
Trabajo

Es la parte principal de la aplicacin sobre este rea se arrastran y


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

rea de
Cdigo

En este rea, que es ocultable, se muestra el cdigo en formato del


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

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.

Mixly V:0.95

Gua de Usuario y Prcticas

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

J.M. Ruiz Gutirrez

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
asignado

o bien recoger el valor que tiene

. 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

"falso" (apagado)

Se imprime el valor por el terminal.

2.7.

J.M. Ruiz Gutirrez

Se retarda un tiempo que hemos definido como


"Tiempo_Abierta"

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

Aspecto final de la pantalla:

19

J.M. Ruiz Gutirrez

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

21

J.M. Ruiz Gutirrez

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

25

J.M. Ruiz Gutirrez

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

29

J.M. Ruiz Gutirrez

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

35

J.M. Ruiz Gutirrez

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

38

J.M. Ruiz Gutirrez

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

A2 >= 60

A2 >= 75

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

A1

A2

A3

A4

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

3000

90

3000

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

53

J.M. Ruiz Gutirrez

Mixly V:0.95

Gua de Usuario y Prcticas

54

J.M. Ruiz Gutirrez

Mixly V:0.95

Gua de Usuario y Prcticas

55

J.M. Ruiz Gutirrez

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