Manual mind+

69
1 Mind+ Manual de Usuario y Tutorial Básico Mind+ es una potente herramienta de Programación Visual para Arduino Prof. José Manuel Ruiz Gutiérrez Marzo 2014

Transcript of Manual mind+

Page 1: Manual mind+

1

Mind+

Manual de Usuario y Tutorial Básico

Mind+ es una potente herramienta de

Programación Visual para Arduino

Prof. José Manuel Ruiz Gutiérrez

Marzo 2014

Page 2: Manual mind+

2

Índice

1. ¿Qué es Mind+?

2. ¿Cuestiones básicas para empezar?

3. Nuestro primer trabajo con Mind+

4. Intermitente usando bloque retardo.

5. Intermitente usando Bloque Temporizador

6. Activación de una salida en modo biestable

7. Secuencia de encendido sin bucle

8. Semáforo

9. Secuencia de encendido con bucle.

10. Temporizaciones. Monoestables.

11. Lee un valor analógico y lo envía al puerto

12. Intermitente con variación de tiempo.

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

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

15. Contador con bucle de suma

16. Contador de dos bits.

17. Contador 3 bits

18. Control de un Servo y salida PWM

19. Activación de Servo siguiendo una curva de valores dada.

20. Generador de señal Lineal (Rampa)

21. Generador de impulsos.

22. Emulación Sensor Capacitivo

23. Receptor básico de Infrarrojos

24. Gobierno de Salida con Infrarrojos

25. Medida de Temperatura con Alarma

26. Medida de temperatura y humedad

27. ANEXO I

José Manuel Ruiz Gutiérrez

Marzo 2014. Ver1

Este trabajo está bajo licencia Creative Commons Attribution 3.0 Unported License)

Page 3: Manual mind+

3

1. Que es MindPLus (Mind+)?

Se trata de una herramienta de programación gráfica que permite realizar aplicaciones

para la Plataforma Open Hardware Arduino.

El entorno está basado en la elaboración de un esquema a base de bloques de función

enlazados que se ajustan a las distintas funciones que se realizan sobre los terminales de

la tarjeta Windows encaminadas a la gestión de las E/S de esta.

Mind+ dispone una amplia librería de bloques de función con los que podemos realizar

una amplia gama de aplicaciones.

Ventajas de la Herramienta:

Su carácter grafico. Esto nos descarga de la laboriosa labor de escribir nuestros

programas en el IDE de Arduino.

Generación de código. Esta posibilidad permite generar y descargar el código

sobre el micro controlador y después poder liberar la conexión con el PC y tener

nuestra aplicación totalmente programada.

Page 4: Manual mind+

4

Amplia colección de librerías. Existe una amplia gama de librerías de bloque de

función que permiten la manipulación de los pines de Arduino.

Posibilidad de edición de los bloques de librería e incluso creación de bloques

propios. Para esto la herramienta viene acompañad de un software llamado

BlockMaker con el que es posible incluir nuevos bloques con código compatible

con el IDE de Arduino e incluso compatibilizando las llamadas a las librerías de

Arduino.

Page 5: Manual mind+

5

Muy adecuado a la educación. Esta herramienta es muy útil para la educación ya

que permite de in modo fácil estudiar las posibilidades de la plataforma Arduino.

Permite la conexión con distintas plataformas Arduino. Se puede realizar la

programación de distintas variedades de Arduino.

La herramienta en el momento de finalizar este manual se encuentra en fase de

evaluación con la versión0.96c que se puede descargar http://www.mindplus.cc/

Min+ permite la sencilla creación de prototipos en muy poco tiempo. Nos libera de la

tediosa escritura de código y está abierto a la ampliación.

Page 6: Manual mind+

6

Estas son las etapas en el desarrollo de una aplicación

Versiones disponibles de Mind+

Existen tres versiones de Mind+: para Windows, para Mac y para Linux

Requisitos para el funcionamiento.

Es importante que nuestro ordenador tenga instalado ya el driver correspondiente para el

reconocimiento de la tarjeta Arduino. Debemos saber también en que numero de puerto

esta conectada. Esto se puede hacer directamente desde el IDE de Arduino en su menú

de opciones “Herramientas” lo podemos encontrar.

En la página web de Mind+ hay documentación en la que se describe con detalle la

instalación del software.

Page 7: Manual mind+

7

2. Cuestiones básicas para empezar.

NOTA MUY IMPORTANTE:

Este manual se ha realizado con una versión de las librerías de funciones parte de ellas

traducidas al español. Para poder cargar los ejemplos que se abordan es preciso

colocar la carpeta –Español dentro de la carpeta Blocks que a su vez esta dentro de la

carpeta Resources.

..\Mind+\resource\Blocks

..\Mind+\resource\Blocks\-Español

Los ejemplos se pueden colcar en una carpeta dentro de la carpeta Mind+

..\Mind+\Ejemplos manual

Las librerías han sido traducidas solo a nivel de sus nombres y ventanas de texto de

ayuda que muestran en cada uno de sus terminales.

Bloques de función.

Los bloques de función tienen una estructura básica que conviene tener en cuenta. En la

figura vemos un ejemplo.

Las cajas de parámetros permiten la introducción de los parámetros (numérico, texto,

PIN, etc.), también pueden recibir valores de otros bloques (bloques de salida).

Las salidas entregan normalmente estado ON, OFF que sirven para activar la entradas

de otros bloques.

Los conectores se establecen con la ayuda del ratón: manteniendo pulsado el botón

derecho del ratón sobre el bloque de comienzo de la conexión y arrastrando y soltado en

el terminal final de la conexión.

Los terminales, para ser unidos, deben ser de la misma naturaleza en cuanto a los datos

que emiten o reciben.

Page 8: Manual mind+

8

Ayuda:

Todos los bloque muestran una caja de texto de ayuda cuando dejamos el raton sobre el

termina correspondiente. Esta ayuda nos permite comprender mejor la funcionalidad de

ese terminal.

Borrar bloques y enlaces:

Para borrar un bloque se marca con el ratón (botón izquierdo), el bloque se queda

marcado con un contorno amarillo y luego pulsamos directamente en el icono de la

papelera (parte superior derecha de la barra de menú) y se borra. También se borra si

pulsamos la tecla DEL.

Para borrar un enlace se procederá de similar manera. Se marca el enlace a borrar, se

colorea de amarillo y se pulsa el botón de la papelera o la tecla DEL.

Page 9: Manual mind+

9

Conexiones entre Bloques.

El bloque Start emite la orden de activación de los bloques, aunque también

estos se pueden activar con las salidas de otros bloques o incluso se pueden establecer

realimentaciones ente la salida y la entrada de un mismo bloque.

En el caso A se activa la función Leer Digital uniendo la salida Start con la entrada de

este bloque.

Es posible conectar las salidas de un bloque con las entradas de otros, con el fin de

realizar la activación de unas funciones detrás de otras, tal como se indica en el caso B

de la figura.

En ocasiones se pueden realizar realimentaciones de bloques. Así lo podemos ver en el

caso C de la figura anterior. Esto permite que se este ejecutando el bloque de manera

permanente. La idea es que una vez realizada la operación, los bloques activan sus

salidas para permitir la actuación progresiva de las siguientes.

Los bloques intercambian entre ellos información. Por ejemplo si deseamos realizar una

estructura condicional tomando un valor leído en una entrada analógica para activar una

salida si se cumple una condición tendremos que realizar conexiones entre bloque que

se envían información. En la figura lo vemos.

Se lee el canal analógico A0 y se envía el valor al bloque IF, a la vez, para activar el

bloque IF llevamos la salida del bloque Leer Analógica a la entrada del bloque IF. En

este caso cuando se lee el valor del canal A0 se activa seguidamente la salida del bloque

de lectura. Vemos que la salida del bloque IF la conectamos al bloque Escribir Digital,

Page 10: Manual mind+

10

ya que del mismo modo que en el caso anterior, una vez ejecutado el bloque IF se

activan las salidas de este bloque, para permitir el desarrollo de la secuencia de

ejecución.

Una misma salida de activación puede ir a más de una entrada. Se supone que en este

caso los bloques que son excitados por la misma señal se ejecutan a la vez.

En la figura vemos que la entrada digital PIN2 gobierna a la vez, mediante un bloque

Leer Digital, las salidas PIN3 y PIN13 de los dos bloques Escribir Digital.

Flujos de datos y órdenes.

No olvidemos que los conectores rojos son para trasladar datos e informaciones y los

conectores azules son para trasladar órdenes.

El menú.

En cuanto al menú del entorno es muy sencillo. En la figura vemos los principales

comandos.

Componentes de librería.

Page 11: Manual mind+

11

Hay dos formas de mostrar los componentes de librería una en la que se muestran los

más usuales e importantes y otra en la que se muestran todos. Se conmuta mediante los

botones que figuran en la parte inferior izquierda.

En la figura vemos los dos tipos de librerías, la básica y la completa. Las librerías están

en una carpeta dentro de la carpeta en donde está el programa Mind+ llamada:

\MindPlusV096c\Mindplus096c\resource\Blocks

Dedicaremos en este o en otro manual un espacio al comentario de cómo modificar y/o

crear nuevos bloques de función con la herramienta BlockMaker.

Nota IMPORTANTE Sobre las Librerías

Para la realización de este trabajo he traducido las librerías que viene con la versión de

distribución de Mind+ al español y las he colocado en una carpeta llamada “Español”.

Los ejemplos que voy a realizar en este manual están co9nstruidos con esta librería

traducida, por lo que es necesario disponer de ella copiada en la carpeta de los bloques:

\MindPlusV096c\Mindplus096c\resource\Blocks\-Español

Page 12: Manual mind+

12

3. Nuestro primer trabajo con Mind+

En este primer ejemplo hacemos uso del bloque “Intermitente” que se encuentra en la

librería de “Bloques Básicos”.

La función que realiza es activar una salida que seleccionamos en su parámetro de

entrada “PIN de Salida” y el valor del tiempo que deseamos que dure activada y

desactivada esta salida.

Al pulsar dos veces sobre el triángulo rojo del parámetro se abrirán sendas ventanas de

recogida de datos en las que seleccionamos el PIN y el tiempo.

La realización del conexionado de los bloques es muy sencilla. Basta con pulsar en el

lugar “START” y manteniendo pulsado llegar a al triángulo azul de entrada o

activación. En la figura vemos el procedimiento.

Page 13: Manual mind+

13

Una vez realizado el conexionado del bloque y colocados sus parámetros pulamos en el

icono “Upload” y aparecerá la venta de la siguiente figura. Si es necesario

seleccionamos la tarjeta que tenemos conectada y también el puerto (por defecto ya nos

indicará el adecuado).

Pulsaremos en el texto Upload y el programa se cargará en la tarjeta Arduino.

Después pulsamos en “Done” y nuestro programa estará funcionando.

El ejemplo se encuentra en el fichero: blink.mps

El siguiente es el montaje de este ejemplo.

Page 14: Manual mind+

14

Page 15: Manual mind+

15

4. Intermitente usando bloque retardo.

Esta vez vamos a realizar un intermitente que básicamente funcionará como el anterior

pero lo implementaremos con otros bloques.

Bloques a usar: 2 Bloques LED de la librería “Mind+Kit”

2 Bloques Retardo de la librería “Tiempo”

El bloque LED tiene dos entradas por las cuales lo activamos o lo desactivamos ON y

OFF son los nombres de estas. En la parte superior tiene una entrada de parámetros por

la que seleccionábamos el PIN sobre el que queremos trabajar. En realidad el bloque

hace lo que la función digital.Write del IDE de Arduino.

Las salidas del bloque igual que la entrada son ON y OFF se activan cuando se ejecuta

la función LED.

Cableamos la entrada ON a START para activar el bloque

Con la entrada OFF se desactivaría la salida.

Cuando activamos la entrada ON se activa también la salida ON y si desactivamos con

la entrada OFF también se activa la salida OFF

El bloque de Retardo se activa a través de su entrada ON y una vez finalizado el

tiempo se activa su terminal de salida.

Hemos colocado los bloque LED asociados al PIN 5 unidos por los bloques de

Retardo, teniendo en cuenta que una vez finalizado el tiempo del primer bloque de

Retardo se debe desactivar la salida PIN 5 y a la vez se activa el bloque de Retardo

Page 16: Manual mind+

16

segundo que una vez finalizado su tiempo su salida volverá a activar el PIN 5

(realimentación).

Hemos seleccionado 500 ms de tiempo pero aquí podemos controlar el tiempo se

encendido (primer bloque de Retado) y el de apagado (segundo bloque de Retardo)

Una vez realizado el cableado se procedería a descargar la aplicación sobre la tarjeta

(mediante el botón “Upload”)

El montaje sobre protoboard seria el siguiente.

Fichero del ejercicio: blink1

Page 17: Manual mind+

17

5. Intermitente usando Bloque Temporizador

Vamos a utilizar en este ejemplo un nuevo bloque llamado “Temporizador” y que

funciona exactamente como un temporizador. Cuando se activa su señal de entrada ON

se pone a temporizar, sacando por su salida de parámetro el “Valor de Tiempo

Actual”. Una vez que termina el tiempo se activa la primera salida (superior) del

bloque. Mientras temporiza la salida inferior se mantiene activa.

El valor del tiempo se introduce en el bloque como un parámetro mediante la caja de

entrada de valor que aparece cuando pulsamos dos veces seguidas en la entrada de este

parámetro.

La idea es activar y desactivar una salida digital, que esta vez hemos seleccionado en el

PIN3. Para conseguir el “basculamineto de la señal” lo hacemos mediante el bloque

“Interruptor Switch” que actúa como biestable.

En la siguiente figura vemos este nuevo bloque “Interruptor Switch”.

La salida del temporizador la realimentamos con la entrada para que de ese modo se

generen las temporizaciones en modo “bucle” consiguiendo el encendido y apagado

del Led conectado en el PIN3

Page 18: Manual mind+

18

Este serie el montaje sobre protoboard del ejemplo.

Fichero: blink_con_temporizador

Page 19: Manual mind+

19

6. Activación de una salida en modo biestable

Antes de nada explicare como funciona un nuevo bloque de función que vamos a

utilizar: Bloque Botón.

Este bloque se encarga de programar un PIN digital de Arduino en una entrada digital.

Los parámetros que le debemos designar son el PIN y el tiempo de retardo antirrebotes.

Sus entradas son dos: Una la que activa el bloque y otra la que lo desactiva.

Sus salidas son dos y simplemente son las salidas ON y OFF de cualquier bloque

general que sirven para trasladar la orden de activación del bloque siguiente en

secuencia, después de ejecutada en este caso la lectura del PIN de entrada establecido.

El bloque de la figura pertenece a las librerías Mind+Kit pero hay uno similar definido

en la librería “Básicos”.

El bloque similar de la librería “Básicos es el siguiente.

A) Por flanco de subida

Con esta aplicación gobernaremos una salida digital con una entrada digital en

modo biestable, es decir con memoria. Se trata de utilizar un bloque muy

interesante llamado “Interruptor Swtich” que recibe impulsos e su entrada y

cambia el estado de sus salidas guardando el estado en el que se queda, es decir

se trata de un biestable.

Page 20: Manual mind+

20

La manera de activar este bloque biestable puede ser o bien actuando con el

flanco se subida o bien de bajada de las señal de entrada. En ambos casos se

mantiene la función de memoria pero cambia el modo de activación.

En el montaje vemos que un bloque “Botón” gobierna al bloque “Interruptor

Switch” y lo hace en su salida.

La entrada que designamos es el PIN2 y la salida el PIN3.

Cuando pulsemos el botón del pulsador puesto en el PIN2 cambiara de estado la

salida PIN3.

Fichero: boton_activa_al_Pulsar

B) Por flanco de bajada

En este montaje he introducido un nuevo bloque “Escribir Digital” que este en la

librería “Básicos” y que funciona exactamente igual que el bloque LED ya

comentado anteriormente.

Las dos entradas sirven para poner en 0 o e 1 el PIN que designemos en la

entrada de parámetros “Selecciona PIN”. Las salidas sirven para propagar las

ordenes de activacio0n y desactivación de los bloques que vengan a

continuación.

Este montaje en lo único que varía es en el conexionado de las salidas del bloque

“Interruptor Switch” con el bloque “Escribir Digital” que están cruzadas.

Page 21: Manual mind+

21

En este caso se gobierna el bloque “Iterruptor Switch” con flancos de bajada

en su entrada.

Fichero: boton_activa_al_Soltar

El montaje sobre protoboard es el siguiente.

Page 22: Manual mind+

22

7. Secuencia de encendido sin bucle

En algún caso podríamos querer encender hasta tres LEDs en secuencia con tiempos

distintos. Para ello bastaría encadenar Retardos y bloques LED.

Este es el ejemplo que vemos en la figura.

Utilizaremos tres salidas digitales PIN3, PIN4 y PIN5 que estarán gobernadas mediante

los bloques de función LED de la librería Min+Kit.

Los bloques de Retardo los fijamos a 500 ms.

Debemos fijarnos en el conexionado de los bloques ya que los bloques LED poseen dos

salidas una ON y otra OFF las salidas que usamos son las ON, esto significa que cuando

se activa el bloque LED (se enciende el Led conectado en el PIN) a la vez se pone en

marcha el bloque Retardo, el cual una vez transcurrido su tiempo se activa su salida que

será la misma que active el siguiente bloque LED.

No olvidemos que la secuencia una vez ejecutada no vuelve a realizarse dado que no

hemos realimentado la última acción del bloque LED con el primero. Tendríamos que

pulsar el botón de “Reinicio” de la tarjeta de Arduino para conseguir realizar e nuevo el

encendido de los LEDs.

La secuencia se realiza nada mas iniciar Arduino y una vez encendidos los Leds se

quedan así. Para volver a ejecutar la secuencia debemos pulsar el botón Reset de la

tarjeta Arduino.

El fichero del ejemplo se denomina secuencia_simple

El montaje es el de la figura siguiente

Page 23: Manual mind+

23

Page 24: Manual mind+

24

8. Semáforo.

En este ejemplo mostramos la posibilidad de realizar un semáforo simplemente

realizando el enlazado de bloques de “Retardo” y “Escribir Digital” realimentadas.

Las salidas establecidas son PIN3, PIN4 y PIN5.

El montaje es el siguiente.

El fichero del ejemplo es: semáforo

Page 25: Manual mind+

25

9. Secuencia de encendido con bucle

A continuación vemos la realización de una secuencia de encendido de Leds en forma

de bucle repetitivo. Se utilizaran de nuevo las salidas digitales PIN3, PIN4 y PIN5.

Vemos que los bloques utilizados son simplemente de dos tipos: Escribir Digital y

Retado

En esta ocasión colocaremos los bloques de “Retardo” de tal manera que los leds

realicen la secuencia siguiente.

Nº Sec. PIN3 PIN4 PIN5

1 1 0 0

2 1 1 0

3 1 1 1

4 0 1 1

5 0 0 1

1 1 0 0

… … … …

Fichero: secuencia_bucle

Otra posibilidad de realizar una secuencia sería la que se lleva a cabo con el montaje

siguiente.

Page 26: Manual mind+

26

Nº Sec. PIN3 PIN4 PIN5

1 1 0 0

2 0 1 0

3 0 0 1

4 1 0 0

… … … …

Fichero: secuencia_bucle2

El montaje sobre protoboard es el siguiente.

Page 27: Manual mind+

27

10. Temporizaciones. Monoestables.

Par realizar temporizaciones se recurre al bloque “Temporizador” con este se pueden

implementar monoestables. En esta practica montaremos dos tipos de monoestables.

A) Temporización con flanco de subida

En este primer tipo se trata de activar la temporización con un flanco de subida,

es decir cuando la señal en el PIN2 de entrada pasa de valer 0 a valer 1 (al pulsar

el botón)

Este diagrama de tiempo muestra con claridad el efecto del monoestable a nivel

temporal.

Los bloques que se utilizan son tres. El bloque “Leer Digital” recoge el valor de

la entrada PIN2 y cuando se produce el cambio de nivel –flanco ascendente- se

activa el temporizador al que le hemos colocado el parámetro de tiempo en valor

de 3000 ms. La salida del temporizador se lleva finalmente a un bloque se salida

digital “Escribir Digital” que es el que gobierna el estado del PIN3 de Arduino

al que le hemos colocado un diodo led. Obsérvese que las salidas del

“Temporizador” y las entradas del bloque “Escribir Digital” están cruzadas.

Fichero: monoestable1

B) Temporización con flanco de bajada

En este segundo tipo de monoestable se trata de activar la temporización con un

flanco de bajada, es decir cuando la señal en el PIN2 de entrada pasa de valer 1

a valer 0 (al soltar el botón)

Page 28: Manual mind+

28

Este segundo diagrama de tiempo muestra con claridad el efecto del monoestable a

nivel temporal.

Los bloques que se utilizan en este segundo montaje son exactamente los mismos. La

salida del temporizador se lleva finalmente a un bloque se salida digital “Escribir

Digital” pero se hace directamente de la primera salida del bloque “Temporizador” a

la primera entrada del bloque “Escribir Digital” y la segunda a la segunda.

Fichero: monoestable2

El montaje en la protoboard es el siguiente.

Page 29: Manual mind+

29

11. Lee un valor analógico y lo envía al puerto

Aquí vamos a trabajar con los siguientes bloques: 1 Bloque de Leer Analógica

1 Bloque Envía Número P.Serie

1 Bloque Retardo

El Bloque de lectura analógica realiza la función equivalente a la instrucción

analog.Read de IDE de Arduino. El blooque se activa por la entrada ON y genera una

orden de lectura en el canal analógico indicado en la entrada de parámetros “Selecciona

PIN de Arduino”. Los valores de lectura real oscilan entre 0 y 1024 pero en este bloque

podemos realizar el escaldo de ese rango y llevarlo a otro por ejemplo de 0 a 100, estos

valores se acotan mediante los parámetros de entrada “Valor Desde” y Valor Hasta”.

El valor de salida se recoge en el terminal de datos “Valor Salida” La salida “Activa

Siguiente Bloque” traslada la oren para gobernar el siguiente bloque que pusiéramos.

El siguiente bloque que hemos incluido es el bloque “Envía Número P. Serie” que se

encarga de enviar al puerto serie el valor que coloquemos en su entrada de parámetros

segunda “Dato Numérico” colocando un texto en la entrad primera “Etiqueta Texto

Enviar”. La orden de envía se ejecuta cuando en la entrad del bloque aparece un “1”

True y su salida “Activo Cuando acaba el envío” indica que se ha ejecut5ado la orden

El montaje es muy sencillo. Se activa con START el bloque “Leer Analógica” llevando

el dato “Valor Salida” a la entrada del bloque de envío al puerto. Por otro lado la salida

del bloque se lleva a la entrada de este bloque de envío para que se ejecute.

Page 30: Manual mind+

30

La salida del bloque de envío al puerto se lleva a un temporizador para que con una

cadencia de 500 ms. Se repitan los envíos (realimentándose al bloque de envío)

Cuando descarguemos la aplicación a la tarjeta Arduino podremos visualizar el valor

que se está leyendo mediante el “Monitor de Puerto” que tiene Mind+. Icono

que automáticamente abre una ventana de visualización como la de la figura.

Habilitando la casilla aparecen retornos línea automáticos en la

visualización.

Fijémonos en el número puerto y en la velocidad es importante .

La velocidad debe ser 9600 porque así está programado el bloque.

Page 31: Manual mind+

31

Desde esta ventana también podemos enviar datos a Arduino. Ya veremos algún

ejemplo más adelante.

El fichero de esta aplicación es: analogica1

En la figura siguiente vemos el montaje en protoboard de la aplicación.

Page 32: Manual mind+

32

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

Inyectamos el valor leído en el canal A0 en la entrada de parámetro “Tiempo” del

bloque “Retardo”.

Actuaremos en la salida PIN3 en donde escribiremos Cero y Uno con este retardo

establecido. Lo más importante es ver como la salida del segundo retardo se lleva no

solo al primer bloque de “Escribir Digital” para que la vuelva a activar.

No olvidemos que las entradas de los bloques “Escribir Digital” sirve para poner a 1 o a

0 la salida PIN3.

El fichero de esta práctica es: blink2

La figura siguiente representa el montaje de esta practica.

Page 33: Manual mind+

33

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

El bloque IF tiene la estructura del la figura.

El valor que leemos lo llevamos a al primer término del bloque condicional “IF”

que lo que hace es comparar si el valor de A0 es menor que 0. Si se cumple la

condición se activa la salida primera del bloque y si no se activa la segunda. Al

realizar la conexión directa de las salidas 1 y 2 del bloque “IF” a las entradas 1 y 2

del bloque “Escribir Digital” el PIN3 estará en estado 1 cuando no se cumple la

condición y se pondrá a 0 cuando se cumpla. El valor leído también se envía al

puerto serie mediante el bloque “Envía Número P.Serie” con cadencias de 500ms

que establecemos con el bloque “Retardo”.

En la siguiente imagen se ve la pantalla de Mind+ en modo monitorización con la

venta de visualización del puerto serie abierta y mostrando cada

Page 34: Manual mind+

34

Fichero: sensor luz

El montaje es el de la siguiente figura

Page 35: Manual mind+

35

14. 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 A0 realizando hasta tres

comparaciones con la instrucción IF de tal manera que podamos detectar tres niveles

de iluminació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

Si A0 >= 40 entonces activaremos la salida PIN3

Si A0 >= 60 entonces activaremos la salida PIN3

Si A0 >= 75 entonces activaremos la salida PIN3

En la siguiente pantalla vemos la aplicación con la ventana de visualización del

puerto abierta.

Page 36: Manual mind+

36

El fichero del ejemplo es: sensor luz escalado

Este sería el montaje en protoboard.

Page 37: Manual mind+

37

15. Buzzer. Distintos montajes

a. Activación de sonido al levantar botón (flanco de bajada)

En este montaje se trata de leer el valor de una entrada digital PIN2 y en función

del valor leído activar o no el “Altavoz” es la función Buzzer.

Los parámetros de esta función se muestran en el esquema de la siguiente figura.

La emisión del sonido será al levantar el botón, es decir en flanco de bajada.

b. Activación de sonido al pulsar (flanco de subida)

Ahora en este otro montaje lo que ocurrirá es que se emitirá el sonido al pulsar el

botón, es decir cuando la señal pase de o a 1 (flanco de subida).

El montaje en protoboard es el siguiente:

Page 38: Manual mind+

38

Los ficheros de este ejemplo son: buzzer y buzzer1

BLOQUE TONO

Un bloque parecido a “Altavoz” es “Tono”.

El bloque tono lo que hace es emitir de manera permanente un tono, siewmrpe que su

entrada ON este activada. Para dejar de sonar basta con que activemos la entrada STOP

Page 39: Manual mind+

39

Los ficheros en donde están estos ejemplos son: tono y tono1

El montaje es el mismo que el anterior.

Page 40: Manual mind+

40

16. Contador con bucle de suma

Este ejemplo nos muestra como realizar un contador haciendo uso del bloque

“Sumar +”. Se trata de realizar una realimentación del resultado con el primer

sumando, de tal manera que cuando llega la orden sumar se sume el segundo

sumando al valor del resultado de la ultima suma.

La idea es que cada vez que aparece un impulso en la entrada PIN2 se realiza una

suma. El resultado se envía al puerto para poder leerse en la ventana de

monitorización de este. La escritura del valor de la suma se realiza cada 500 ms.

En la siguiente imagen vemos el aspecto de la pantalla mientras se está ejecutando el

programa en Arduino

Fichero: contador1

Page 41: Manual mind+

41

17. Contador de dos bits.

Este ejemplo nos muestra como es posible crear un contador binario utilizando el

bloque de función “Interruptor Switch” que es en definitiva un bloque “biestable”.

Se trata de realizar un esquema que cumpla la tabla siguiente.

Impulso A

PIN4

B

PIN5

0 0 0

1 1 0

2 0 1

3 1 1

Las salidas se han seleccionado en los pines PIN4 y PIN5.

La entrada de impulsos de cuenta se establece en el PIN2 haciendo uso de un bloque

“Leer Digital·”

La conexión del bloque “Interruptor Switch” al bloque “Escribir Digital” se hace con

los dos terminales para conseguir el encendido y apagado asociado a los dos estados del

“switch”

El fichero que contiene la aplicación es: contador3

El montaje sobre protoboard es el de la siguiente figura.

Page 42: Manual mind+

42

Page 43: Manual mind+

43

18. Contador 3 bits

En este contador lo único que hemos añadido es una salida más. Ahora las salidas son

PIN3, PIN4 y PIN5 y la entrada de impulsos sigue siendo el PIN2.

Impulso A

PIN3

B

PIN4

C

PIN5

0 0 0 0

1 1 0 0

2 0 1 0

3 1 1 0

4 1 0 0

5 1 0 1

6 1 1 0

7 1 1 1

En al tabla anterior se muestran los distintos estados por los que va pasando el contador.

La figura siguiente muestra el esquema de conexionado.

Page 44: Manual mind+

44

El fichero de este ejemplo es: contador4.

El esquema de montaje es el que se muestra a continuación.

Page 45: Manual mind+

45

19. Control de un Servo y salida PWM

Con este ejemplo vamos a gobernar un servo, PIN3, haciendo uso del bloque de

función “Poner Angulo Servo” con el dato obtenido desde el canal analógico A0 en el

que conectaremos un potenciómetro. A la vez activaremos en modo PWM el PIN5.

El nuevo bloque que aparece es “Poner Angulo Servo” del que mostramos sus

parámetros a continuación.

Como el valor máximo que podemos colocar en la entrada Angulo del bloque lo que

hacemos es realizar el escalado del rango de la señal leída del canal A0 en el prpio

bloque “Leer Analógica”, que siendo de 0 a 1024 pasa a ser de 0 a 180.

La misma señal de A0 tenemos que llevarla a un pin PWM, en nuestro caso al PIN5

para ello recurrimos al bloque “Escalar” y esta vez nos llevamos la señal al rango de 0

a 255 que como sabemos es el rango permitido para las salidas analógicas PWM de la

tarjeta Arduino. La señal PWM la sacamos al PIN5 con un bloque “Escribir

Analógica”.

El bloque “Escalar se muestra en la siguiente figura.

El bloque “Escribir Analógica” se muestra en la siguiente imagen.

Se marca el rango de entrada y el de salida y es suficiente.

Page 46: Manual mind+

46

En la figura siguiente se muestre el ejemplo completo.

El fichero que lo contiene es: servo1

El montaje en protoboard es el siguiente.

Page 47: Manual mind+

47

20. Activación de Servo siguiendo una curva de

valores dada.

En esta aplicación vamos a mover un servo de acurdo con una función de salida cuyos

datos serán secuencialmente sacados al PIN3. Para ello utilizaremos un nuevo bloque

que se denomina “Generador Curva” y que aparece en la siguiente figura.

La entrada de valores en la curva se realiza mediante una ventana en la que se pueden

definir los puntos y con la ayuda del ratón situarlos en el área.

En nuestro caso vamos los parámetros de la curva a seguir son:

Tiempo total del ciclo: 5000 ms.

Valor Mínimo: 0

Valor Máximo: 180

La salida del bloque “Generador Curva” se lleva al bloque “Poner Angulo Servo” y a la

vez la sacamos por el puerto para visualizar los valores que se van generando.

Obsérvese que la salida del bloque se realimenta con la entrada con el fin de que el

servo este realizando el ciclo establecido de forma permanente.

En la siguiente figura vemos el esquema completo del ejercicio.

Page 48: Manual mind+

48

Pantalla visualizando datos

El ejemplo se encuentra en el fichero: servo2

El montaje de la aplicación en protoboard es el siguiente.

Page 49: Manual mind+

49

Page 50: Manual mind+

50

21. Generador de señal Lineal (Rampa)

Existe un bloque llamado “Generador Lineal” que es capaz de generar una rampa de

valores acotada entre dos que se colocan en sus entradas de parámetros “Desde” y

“Hasta” La rampa se genera con una duración que también podemos establecer

mediante el parámetro “Tiempo”.

Las salidas son tres y ellas se recogen el valor actual de la rampa, el tiempo actual y el

tanto % de rampa que se lleva ejecutado en el instante.

Para probara este bloque lo que haremos será enviar al PIN3 loa señal de salida, que

previamente hemos establecido entre 0 y 255 ejecutándose la rampa en un tiempo de 5s.

La salida de valor también la llevamos al puerto serie para ver cómo va cambiando.

En la siguiente figura vemos el aspecto de la pantalla, mientras está generando la rampa,

pudiendo leer los valores en la venta de monitorización de puerto.

Page 51: Manual mind+

51

Este sería el montaje en protoboard.

El fichero del ejemplo es: generador linea1

Page 52: Manual mind+

52

22. Generador de impulsos.

Con este ejemplo vamos a demostrar cómo es posible crear un generador de impulso

(reloj) con la ayuda de un bloque “Generador Lineal”.

Si queremos una señal de 2 segundos de frecuencia (1s. Activa y 1s. Desactiva) lo que

hacemos es programar el Generador Lineal con un tiempo de 10000 ms. Y que realice la

cuenta de 0 a 10 (10 impulsos de 0.1 seg.). La salida de este se lleva a un bloque de tipo

“Interruptor Switch” que realizara la conmutación en modo biestable cada vez que

llegue un impulso de “Fin de generación de valores”.

La salida del bloque “Interruptor Switch” se lleva a un bloque de salda digital

“Escribir Digital” que asociamos al PIN3 por donde sacamos los impulsos de frecuencia

2s.

Esta figura muestra el sistema contando ya que hemos colocado un bloque de “Envio

Numero P.Serie” que saca por el puerto el estado de cuenta

La siguiente figura muestra el conexionado de los bloques en este ejemplo.

El ejemplo se encuentra en el fichero: generador lineal1

Una variación sobre este montaje sería la siguiente. En ella se generan impulsos de

frecuencia constate, marcada por el bloque “Generador Lineal” que se activa mediante

una entrada PIN2.

Este ejemplo esta en el fichero: generador lineal2

Page 53: Manual mind+

53

El montaje en protoboard del caso primero es el siguiente.

El segundo caso se montaría en protoboard de esta manera.

Page 54: Manual mind+

54

23. Emulación Sensor Capacitivo

El bloque “Sensor Capacitivo” permite configurar un sensor capacitivo indicando los

pines entre los que se deberá colocar la resistencia. Se muestra en la siguiente figura. En

su salida se muestra el valor correspondiente a la capacidad establecida entre el

conductor que une los pines de envío y recepción.

El montaje se realiza de acuerdo a la figura siguiente. Vemos que se recoge el valor de

salida del bloque “Sensor Capacitivo” y se lleva a un bloque condicional “IF” en el que

se establece la condición para que se active la salida PIN3. A la vez enviamos el valor

leído del bloque sensor al puerto serie.

Vemos una imagen de la pantalla de trabajo de Mind+ en la que aparece la ventana de

visualización del puerto serie mostrando los valores obtenidos cada vez que tocamos el

4 en el que tenemos colocada la resistencia.

Cabe la posibilidad de realizar un montaje alternativo usando el bloque “Trigger

Capacitivo Detector” que directamente hace lo que el montaje anterior en un solo

bloque, es decir que integra el condicional dentro del bloque del sensor capacitivo

Fichero: sensor capacitivo1

Page 55: Manual mind+

55

El bloque “Trigger Capacitivo Detector” permite leer el valor y establecer un umbral

de disparo cuando se sobrepasa ese valor.

Este montaje hace lo mismo que el anterior

Page 56: Manual mind+

56

Fichero: sensor capacitivo2

La siguiente imagen es el montaje en protoboard.

Page 57: Manual mind+

57

24. Receptor básico de Infrarrojos

Con este montaje se pretende probar de manera sencilla la forma de trabajar con sensor

de infrarrojos.

Utilizaremos el bloque “Configurar Receptor IR” que nos permite localizar el pin de

entrada por el cual se recibirán los impulsos procedentes de una fuente de emisión de

infrarrojos, en nuestro caso un mando a distancia” lo haremos por el PIN11. Este

bloque se conecta seguidamente al bloque “Receptor Código IR” que lo que hace es

decodificar la señal recibida generando el código recibido en su pin “Salida Código”

Seguidamente lo que hacemos es llevar al puerto serie el dato para verlo, lo haremos

mediante el bloque “Envía Número P.Serie” y bloque de retardo asociado para realizar

el muestreo de valor y enviar datos cada 500ms.

En la siguiente imagen vemos el aspecto del montaje.

La siguiente imagen muestra la pantalla estando el puerto serie abierto en modo

monitorización.

Page 58: Manual mind+

58

El montaje sobre protoboard sería el siguiente.

El nombre del fichero es: receptor infrarrojos

Page 59: Manual mind+

59

25. Gobierno de Salida con Infrarrojos

Con este montaje gobernaremos un pin digital de salida PIN3 cuando se lea un

determinado código a través del sensor que colocamos en el PIN11.

Los pasos a seguir serían: Configurar el receptor IR, esperar a recibir un código que

previamente ya hemos visto con el montaje anterior y que se corresponde con una

determinada tecla de nuestro teclado infrarrojos y des pues activar un bloque de

conmutación en modo biestable, para finalmente activar el PIN3.

En nuestro caso se trata de la tecla “0” cuyo código en nuestro teclado es “16724175”

La anterior figura es el montaje del sistema y la siguiente el montaje en protoboard.

El nombre del fichero es: infrarrojosReceptorActivador

Page 60: Manual mind+

60

26. Medida de Temperatura con Alarma

Mind+ tiene en sus librerías una denominada Temperatura dentro de la cual hay un

bloque definido específicamente para el sensor LM35 de amplio uso en los montajes

con Arduino.

En la figura vemos el esquema del bloque “Sensor LM35”.

Básicamente lo que hacemos es recoger el valor del bloque sensor que hemos conectado

al pin A0 de Arduino y lo llevamos a un bloque condicional “IF” que lo compara con

un valor establecido como consigna, en nuestro caso 30. Si se cumple que el valor leído

es mayor que 30 entonces se activará la salida PIN7 en la que hemos colocando un

Buzzer.

El montaje que debemos realizar en la protoboard es el de la siguiente figura.

El nombre del fichero es: sensor temperatura

Page 61: Manual mind+

61

27. Medida de temperatura y humedad

De la misma manera que en l caso anterior, dentro de la librería Temperatura existe un

bloque denominado “Sensor DHT11” que lee dos variables: Humedad y Temperatura.

Los valores que lee los entrega en sus salidas correspondientes. El pin de conexión se

identifica en el parámetro de entrada PIN

Se han colocado dos bloques “Envía Número P. Serie” a través de los cuales se

recogen los valores y de envía al puerto con retardos de 500 ms. En la figura se muestra

el esquema.

El fichero se llama: sensor humedad temperatura

Page 62: Manual mind+

62

28. ANEXO I

Principales Bloques de Mind+ Utilizados en este manual.

INTERMITENTE

LED (Salida Digital)

RETARDO

Page 63: Manual mind+

63

TEMPORIZADOR

INTERUPTOR SWITCH

BOTON (Entrada Digital)

Page 64: Manual mind+

64

LEER ANALOGICA (Entrada Analogica)

ESCRIBIR ANALÓGICA

ENVIAR PUERTO SERIE

Page 65: Manual mind+

65

IF

ALTAVOZ (Buzzer)

TONO

SUMA

Page 66: Manual mind+

66

PONER ANGULO SERVO

ESCALAR

GENERADOR CURVA

Page 67: Manual mind+

67

GENERADOR LINEAL

SENSOR CAPACITIVO

TRIGGER CAPACITIVO DETECTOR

CONFIGURAR RECEPTOR IR

Page 68: Manual mind+

68

RECEPTOR CODIGO IR

ENVIA CÓDIGO IR

SENSOR DE TEMPERATURA LM35

SENSOR DE HUMEDAD Y TEMPERATURA DHT11

Page 69: Manual mind+

69

José Manuel Ruiz Gutiérrez

Marzo 2014. Ver1

Este trabajo está bajo licencia Creative Commons Attribution 3.0 Unported License)