Manual mind+

405 visualizaciones

Publicado el

Manual mind+

Publicado en: Educación
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
405
En SlideShare
0
De insertados
0
Número de insertados
26
Acciones
Compartido
0
Descargas
12
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Manual mind+

  1. 1. 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
  2. 2. 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)
  3. 3. 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.
  4. 4. 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.
  5. 5. 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.
  6. 6. 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.
  7. 7. 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+resourceBlocks ..Mind+resourceBlocks-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.
  8. 8. 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.
  9. 9. 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,
  10. 10. 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.
  11. 11. 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: MindPlusV096cMindplus096cresourceBlocks 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: MindPlusV096cMindplus096cresourceBlocks-Español
  12. 12. 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.
  13. 13. 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.
  14. 14. 14
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. 18 Este serie el montaje sobre protoboard del ejemplo. Fichero: blink_con_temporizador
  19. 19. 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.
  20. 20. 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.
  21. 21. 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.
  22. 22. 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
  23. 23. 23
  24. 24. 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
  25. 25. 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.
  26. 26. 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.
  27. 27. 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)
  28. 28. 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.
  29. 29. 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.
  30. 30. 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.
  31. 31. 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.
  32. 32. 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.
  33. 33. 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
  34. 34. 34 Fichero: sensor luz El montaje es el de la siguiente figura
  35. 35. 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.
  36. 36. 36 El fichero del ejemplo es: sensor luz escalado Este sería el montaje en protoboard.
  37. 37. 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:
  38. 38. 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
  39. 39. 39 Los ficheros en donde están estos ejemplos son: tono y tono1 El montaje es el mismo que el anterior.
  40. 40. 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
  41. 41. 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.
  42. 42. 42
  43. 43. 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.
  44. 44. 44 El fichero de este ejemplo es: contador4. El esquema de montaje es el que se muestra a continuación.
  45. 45. 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.
  46. 46. 46 En la figura siguiente se muestre el ejemplo completo. El fichero que lo contiene es: servo1 El montaje en protoboard es el siguiente.
  47. 47. 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.
  48. 48. 48 Pantalla visualizando datos El ejemplo se encuentra en el fichero: servo2 El montaje de la aplicación en protoboard es el siguiente.
  49. 49. 49
  50. 50. 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.
  51. 51. 51 Este sería el montaje en protoboard. El fichero del ejemplo es: generador linea1
  52. 52. 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
  53. 53. 53 El montaje en protoboard del caso primero es el siguiente. El segundo caso se montaría en protoboard de esta manera.
  54. 54. 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
  55. 55. 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
  56. 56. 56 Fichero: sensor capacitivo2 La siguiente imagen es el montaje en protoboard.
  57. 57. 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.
  58. 58. 58 El montaje sobre protoboard sería el siguiente. El nombre del fichero es: receptor infrarrojos
  59. 59. 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
  60. 60. 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
  61. 61. 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
  62. 62. 62 28. ANEXO I Principales Bloques de Mind+ Utilizados en este manual. INTERMITENTE LED (Salida Digital) RETARDO
  63. 63. 63 TEMPORIZADOR INTERUPTOR SWITCH BOTON (Entrada Digital)
  64. 64. 64 LEER ANALOGICA (Entrada Analogica) ESCRIBIR ANALÓGICA ENVIAR PUERTO SERIE
  65. 65. 65 IF ALTAVOZ (Buzzer) TONO SUMA
  66. 66. 66 PONER ANGULO SERVO ESCALAR GENERADOR CURVA
  67. 67. 67 GENERADOR LINEAL SENSOR CAPACITIVO TRIGGER CAPACITIVO DETECTOR CONFIGURAR RECEPTOR IR
  68. 68. 68 RECEPTOR CODIGO IR ENVIA CÓDIGO IR SENSOR DE TEMPERATURA LM35 SENSOR DE HUMEDAD Y TEMPERATURA DHT11
  69. 69. 69 José Manuel Ruiz Gutiérrez Marzo 2014. Ver1 Este trabajo está bajo licencia Creative Commons Attribution 3.0 Unported License)

×