Libro




CURSO DE ARDUINO con ArduinoBlocks

IDE de Arduino Visualino Logo ArduinoBlocks mBlock
Versión IDE Arduino
(programación en código)

Versión Visualino
( bloques+ código)
Versión ArduinoBlocks
( sólo bloques - online)
Versión mBlock
(sólo bloques)
Vamos a adentrarnos en un  ambiente distinto: cambiamos el software por el hardware. ¿De qué forma? Aprenderemos a manejar una placa de Arduino.
Arduino es una placa de circuito electrónico que no tiene una función fija sino que puede utilizarse de muchas maneras, tantas como se nos ocurran,. Su uso dependerá de los elementos que le conectemos y del programa que grabemos en ella.
Podemos acceder a la web deArduino a través de la dirección: www.arduino.cc
Para realizar las prácticas con Arduino necesitamos el material electrónico que se  describe en la siguiente LISTA DE MATERIALES.
Muchas webs ofrecen circuitos y programas para experimentar con Arduino. Una de ellas, de la que hemos obtenido información es: www.fritzing.org siendo muy recomendable el programa libre Fritzing, que puede descargarse desde su web y que hemos utilizado para los diseños de circuitos con placa de prototipos. Este programa permite diseñar circuitos mediante placa de prototipos, obteniendo a la vez su esquema y pudiendo usar el diseño para crear una placa PCB (placa de circuito impreso) que puede fabricarse a partir del modelo resultante, e incluso encargarse a la web de Fritzing para que ellos lo fabriquen (previo pago en este caso, claro). También es muy interesante el KIT Fritzing basado en Arduino, pues contiene casi todo el material que se necesita para las prácticas propuestas.
Como en todos los capítulos, la idea del curso y los archivos de video han sido obtenidos de www.miriadax.net, de un curso de Xnergic-TecnoCampusMataró (TCM) dirigido y presentado por Marco Antonio Rodríguez, al cual agradecemos calurosamente su esfuerzo.

Manejo básico de Arduino

SCRATCH
Se recomienda ver todos los videos en PANTALLA COMPLETA y usar unos AURICULARES. Los videos imprescindibles para realizar el curso se marcan con una tabla con fondo Naranja. Los ejercicios aparecen en color Verde.

MÓDULO 4. ARDUINO. FUNCIONAMIENTO BÁSICO. SENSORES Y ACTUADORES.

(Pincha en los enlaces para acceder al canal de Youtube y ver los videos)
4.1 INTRODUCCIÓN
Las caraterísticas de Arduino que lo hacen recomendable para su uso en educación son:
  • Se trata de hardware y software libre. Eso no quiere decir que sea gratis sino que podemos encontrar, de forma legal, mucha información en internet sobre la placa y los programas. Esta información la podemos usar para aprender y para realizar nuestros proyectos, así como para comunicarnos con otros usuarios de Arduino.
  • Los componentes que podemos conectar a la placa de Arduino son elementos de uso común: LEDs, motores, LDR... que podemos encontrar fácilmente en tiendas de electrónica.
NOTA: en caso de que en tu localidad no dispongas de acceso fácil a una tienda de electrónica, existen muchas on-line, como por ejemplo www.cetronic.es. que tiene una seccióon del catálogo dedicada a Arduino: Placas, Kits, sensores y otros complementos.
4.2 ¿CÓMO FUNCIONA LA PLACA DE ARDUINO?
En este apartado se explican los componentes básicos de la placa de Arduino y los distintos PINES:
  • Elementos básicos: Microcontrolador, conector USB, conector de alimentación y botón RESET.
  • PINES:
    • Digitales (del 0 al 13). Pueden usarse de Entrada o Salida digital. Sus valores sólo pueden ser: Nivel Bajo (0V) o Nivel Alto (5V)
    • Entradas Analógicas (del A0 al A5). Arduino lee la entrada (comprendida entre 0 y 5V), transformándola en un número entre 0 y 1024 (mediante una "regla de tres": si 5 Voltios equivalen a 1024, entonces X Voltios equivalen a...)
    • Alimentación hacia el exterior: 3,3V, 5V y GND (Tierra o Masa)
Antes de empezar a trabajar con Arduino, necesitas disponer al menos de lo siguiente:
    • Hardware:
      • La placa de Arduino
      • Un cable Micro-USB para conectarlo al ordenador
    • Software. Vamos a utilizar tres variantes distintas:
      • Sólo código (IDE de Arduino), es el modo tradicional de usar Arduino, mediante programación con texto. Es muy interesante si se quiere optimizar el uso de memoria. IDE son las siglas, en inglés, de Entorno de Desarrollo Integrado.
      • Sólo bloques (mBlock). Mediante una interfaz basada en Scratch podemos programar la placa Arduino, además del robot mBot que trae por defecto el programa. Es la opción más sencilla si conocemos ya Scratch. Como inconveniente, el programa que genera requiere más memoria en la placa de Arduino, ya que se guardan muchos elementos accesorios que no hacen falta en todos los programas.
      • Bloques y código relacionados (Visualino). Es una buena opción intermedia. Conservando la misma estructura de los programas del IDE de Arduino, se utilizan bloques para organizar los programas de modo visual, en forma similar a Scratch. Además, conforme creamos el programa, se nos muestra el texto equivalente al código. Incluye algunos bloques para ciertos bloques comunes a varios modelos comerciales que podemos usar si utilizamos componentes electrónicos similares.
      • Bloques y código relacionados en versión on-line (ArduinoBlocks). Es una aplicación on-line muy similar a Visualino, pero que al ser online se va actualizando periódicamente e incluye gran cantidad de prototipos comerciales y placas para programar. Se conserva la estructura de los programas del IDE de Arduino pero utilizando bloques, de modo que no es necesario recordar la sintaxis de las instrucciones, aunque sí las necesidades de Arduino. Tras crear el programa, se puede visualizar y copiar el código equivalente para Arduino, de modo que si no puede utilizarse directamente la aplicación para conectar la placa de Arduino, sí que puede copiarse el programa para pegarlo en el IDE de Arduino.
El curso que presentamos se centra en ArduinoBlocks. En cualquier caso es necesario conocer lo básico del lenguaje del IDE de Arduino para poder depurar los programas realizados a partir de bloques, como Visualino, mBlock o ArduinoBlocks. Por tanto comenzaremos aprendiendo las órdenes básicas del IDE de Arduino. Si ya conoces este interface o quieres probar Visualino, mBlock o ArduinoBlocks, accede a través del acceso directo correspondiente:

Vamos a ver cómo conseguir los programas que podemos usar:


IDE de ArduinoIDE de Arduino
Descárgalo desde la web de Arduino. Escoge la versión adecuada e instala el programa antes de conectar la placa al cable USB. (Existe una versión on-line: Arduino Web Editor a la que se puede acceder si nos registramos).
Puedes descargar estas versiones que ya se han comprobado en WXP:

USO del IDE de ARDUINO
Abre el programa y verifica que está configurado correctamente el puerto al que has conectado la placa de Arduino. Para ello:

1. Comprueba, en el administrador de dispositivos, en cuál de los puertos COM se ha conectado Arduino. En nuestro caso está en COM3.

2. En el programa de Arduino, en la opción 'Herramientas' escoge ese mismo puerto para la comunicación con la placa.

Una vez configurado, aparecerá en la esquina inferior un mensaje que nos avisa del puerto que se utilizará para Arduino.





ArduinoBlocksLogoArduinoBlocks

Es un recurso online, al que puedes acceder a través de la web ArduinoBlocks.



Lo primero que tendrás que hacer es seleccionar el idioma deseado, entre los que se ofrecen.
Idioma ArduinoBlocks

Entonces cambia la pantalla de inicio a otra con el idioma escogido.
Pantalla bienvenida ArduinoBlocks

En la pantalla de bienvenida se nos ofrece a oportunidad de Probar el recurso:Proba ahora

Aparece entonces el cuadro de controles de ArduinoBlocks. A la izquierda vemos los distintos bloques que pueden incorporarse al programa, agrupados por apartados. Y en el centro un conjunto de bloques agrupados formando un programa que realiza la intermitencia del PIN13, que es el que está conectado con el LED que lleva incorporado Arduino, por tanto puede servirnos de prueba para comprobar fácimente el funcionamiento, pues no tenemos que conectar ningún componente externo. Sólo necesitamos la placa de Arduino y un cable USB.
Prueba intermitencia PIN13


Es el momento de conectar Arduino al ordenador mediante el cable USB.

Conectar Arduino

Arduino instalado


La primera vez que conectes Arduino, el ordenador instalará los Drivers de la placa y mostrará un mensaje en el que informa del puerto en el que se ha instalado Arduino (COM1, COM2, COM3...)

Administrador dispositivos





Si no te aparece el mensaje, no te da tiempo a verlo, o el ordenador no te lo muestra porque tuvieras ya instalados los drivers, puedes comprobar en qué puerto está conectado Arduino en el "Panel de control" de tu ordenador , accediendo al "Administrador de dispositivos"
















Recursos ArduinoBlocks Connector


Necesitamos también instalar ArduinoBlocks connector, un programa que conecta la web con nuestra placa a través del puerto USB. Podemos obtenerlo desde el apartado "Recursos" pinchando en la opción de ArduinoBlocks Connector.







Hay versiones para distintos sistemas operativos. Escoge el que corresponda a tu ordenador, descárgalo y después instálalo. En el caso de WindowsXP he probado en distintos equipos y por algún tipo de problema no funciona adecuadamente, pero hay solución, como ya se verá más adelante.

ABConnector

Por si no puedes descargarlo de la página, aquí tienes varias versiones de ArduinoBlocks Connector para Windows:

Una vez instalado, debe aparecer en el menú de programas. Debe pulsarse sobre el icono para conectar la placa con la web de ArduinoBlocks.
 icono ArduinoBlocks

Uso de ArduinoBlocks

1.- Entra de nuevo en la portada de ArduinoBlocks. Puedes hacerlo desde cualquier parte de la misma, pulsando en el icono de la parte superior derecha, que te dirige directamente a la ventana inicial.
ArduinoBlocks volver

2.- Escoge la opción de Probar o de Iniciar: Botones Probar-Iniciar

3.- Crea un nuevo programa o, en el caso de que escojas Probar  usa el que viene de prueba, el cual puedes modificar:


Todo programa debe contener, como mínimo, dos bloques.
  • Uno de ellos, el de Inicializar, corresponde con la orden Setup del IDE de Arduino, y sirve para indicar configuraciones iniciales o variables globales, entre otras cosas.AB Setup
  • El segundo es el bucle, en el que se incluyen las órdenes que van a leerse y ejecutarse cíclicamente, o sea, repetidamente y en ese orden.AB Bucle


       Una vez creado, el aspecto de la ventana será el siguiente:

programa ejemplo


4.- Busca el icono de ArduinoBlocks Connector, en el escritorio o el menú Inicio y ejecútalo. ArduinoBlocks Connector inicio

La primera vez que funcione ArduinoBlocks es posible que salga un aviso del cortafuegos (Firewall), donde se debe permitir el acceso.
Cortafuegos ABConnector

5.- Mientras ArduinoBlocks Connector esté en funcionamiento aparecerá una ventana en el escritorio. Ésta puede minimizarse, pero no cerrarse, o se perderá la conexión.
ArduinoBlocks en funcionamiento

6.- Mientras ArduinoBlocks Connector está activo, aparecerá a la derecha del panel de control el puerto donde está conectado Arduino. Además, se "iluminan" otros botones que permiten, entre otras cosas, "Subir" el archivo a Arduino.
ABlocks conectado

7.- Tal vez sea necesario "Actualizar" la conexión para que la detecte el sistema, pulsando el icono correspondiente.
Actualizar conexión ArduinoBlocks


8.- Una vez detectado el puerto donde está conectada la placa (Arduino UNO en el ejemplo), puedes cargar el archivo en Arduino, pulsando el botón denominado "Subir"AB Subir

9.- Terminado el proceso, aparece un mensaje avisando del resultado de la carga.
 AB Exito en la carga

10.- ¿Y si no carga correctamente, o en nuestro sistema operativo (como WindowsXP), no funciona ArduinoBlocks Connector? Se pulsaría en el icono "Bloques" para escoger la opción "Ver código".
Ver código

11.- Copiamos el código desde la ventana que se abre.
Copiar código

       Otra opción incluso mejor es "descargar código", que descarga directamente el archivo para Arduino:
Descargar codigo

12.- A continuación se abre el IDE de ArduinoArduino IDE en el escritorio

(si aún no dispones de él, lo puedes descargar desde la misma ventana de "Bloques" anterior).

 Bloques- ArduinoIDE
(También puedes descargarlo en esta misma web, accediendo al apartado del IDE de Arduino)

13.- Se abre directamente el archivo descargado, o se pega el código en el IDE:
Arduino IDE pegado


14.- Se comprueba que la Placa y el puerto detectados son correctos.
AB IDE detectar placa y puerto

15.- Y se sube el archivo a la placa. AB IDE subir




Iniciar sesión en ArduinoBlocks
En el paso 3 puedes optar por Iniciar sesión  lo cual tiene la ventaja de que puedes guardar tu proyecto en forma de bloques de arduinoBlocks.
Iniciar Sesión o Nuevo usuario
Debes introducir tus datos de Inicio de sesión para entrar en tu cuenta.


Si aún no has creado tu cuenta, puedes hacerlo desde esta ventana, pulsando el botón "Nuevo usuario" e introduciendo los datos requeridos.

Para la clave, recuerda que no te están pidiendo que escribas la contraseña de tu correo. Inventa una nueva para ArduinoBlocks.
Una vez iniciada la sesión se te ofrece la opción de abrir uno de tus proyectos, o de empezar uno nuevo.


Puedes crear un proyecto propio, ejercer de profesor y crear uno para tus alumnos, o unirte a un proyecto creado por tu profesor.
Nuevo proyecto



En el caso del Proyecto Personal, como mínimo debes introducir el Nombre del proyecto y el Tipo.

Respecto al Tipo, se refiere al modelo de placa o Robot que vas a utilizar.

Al terminar de introducir datos, pulsa el botón "Nuevo proyecto".


Observa que se abre la pantalla de edición pero se activan nuevos iconos. Entre ellos, el de Guardar  para que puedas conservar en tu cuenta este proyecto, en forma de bloques de ArduinoBlocks, y tenerlo disponible cada vez que entres.





Aunque lo mejor para aprender realmente Arduino es utilizar montajes y componentes reales, en caso de que no tengas acceso a una placa Arduino, no dispongas de los componentes necesarios o simplemente, prefieras aprender a nivel teórico, puedes usar un simulador de circuitos electrónicos y Arduino como Tinkercad
.

Tinkercad
Se trata de una web donde se puede diseñar objetos 3D y también simular circuitos electrónicos, incluyendo placas de control como Arduino y otras. Deberás crear una cuenta para acceder.


1.
Una vez que accedas con tu nombre de usuario, escoge la opción Circuits y luego Create new Circuit (crear nuevo circuito)














2. En la ventana que se abre puedes escoger entre múltiples componentes: resistencias, LEDs, transistores... incluyendo placas Arduino y de prototipos (BreadBoard)







3. Arrastra los componentes a la zona de la izquierda y monta un circuito. Puedes cambiar sus valores como necesites. También se puede modificar el nombre que se asigna por defecto al montaje.


















4. Para simular un circuito, escoge la opción Code. Aparecerá un sistema de bloques que no vamos a usar. Cambia el modo a Text. Te preguntará si deseas eliminar los bloques. Responde que sí.





5. A continuación borra el programa de texto que trae escrito por defecto Tinkercad.












6. Ya puedes escribir el texto de tu programa. O pegar el que hayas obtenido de otro editor como el IDE de Arduino, Visualino o mBlock

Copiando desde mBlock...
Copiando desde Visualino...

Copiando desde ArduinoBlocks

Copiando desde el IDE de Arduino...


...y pegando en TinkerCAD:
7. Una vez pegado el texto se puede iniciar la simulación para ver el resultado del programa:

8. Cuando quieras detener la simulación pulsa el botón correspondiente:




4.3 ACTUADORES SENCILLOS - LED

4. 3. ACTUADORES SENCILLOS - LED (Ejercicios):


Además del material básico que se explica más arriba, para esta práctica necesitarás:
    • Una placa Protoboard (también llamada de Prototipos o de montaje)
    • Un LED de 5mm
    • Una Resistencia de 220 Ohmios
    • cable de conexiones (facilitará la conexión hasta la placa de Arduino)
LED
(LED = Light Emittig Diode = Diodo Emisor de Luz)
Recuerda que el LED no puede conectarse de cualquier forma. Como sólo admite unos 2,5V necesita una resistencia para disipar el voltaje sobrante. Además, debe conectarse con la polaridad correcta: el Ánodo (A) hacia el voltaje positivo (+) y el Cátodo (K) hacia el negativo (-) o Masa (0V o Tierra)

Observa el corte que tiene el bulbo del LED justo en el lugar donde se sitúa el Cátodo (K). Esa es la patilla que debe conectarse al polo Negativo o Masa (0V)


Esquema del circuito:


  • 4.3.A. Monta el circuito del video, usando la Placa de Prototipos para hacer las conexiones. En las imágenes siguientes puedes ver el programa utilizado y esquemas de las conexiones. Guarda siempre el programa para usarlo en el momento de enseñar la práctica al profesor.
    4.3.A. LED
    Esquema:

    Proto-Board:

    Programa:
    ArduinoBlocks:
    IDE:


    NOTA: La orden delay(500) produce un retardo de 500 milisegundos (medio segundo)



    RECUERDA: Siempre antes de transferir el programa a Arduino es conveniente:
    1. Iniciar el programa ArduinoBlocks Connector:icono ArduinoBlocks
    2. Mantener la ventana de ArduinoBlocks Connector abierta (en todo caso, minimizada, pero no cerrarla hasta terminar de usar la transferencia de archivos): ArduinoBlocks en funcionamiento
    3. Usar un cable USB para conectar el PC y Arduino:
    4. Comprobar que se ha detectado la placa en el puerto adecuado (COM#...): ABlocks conectado
    5. Pinchar sobre "Subir" para realizar la transferencia: AB Subir
    6. Descargar el código para tenerlo disponible: Descargar codigo
    7. Si no funciona la transferencia mediante ArduinoBlocks Connector, Abrir el archivo descargado, comprobarlo y subirlo usando el IDE de Arduino: AB IDE subir

  • 4.3.B. Cambia el programa para que haga algo distinto:
    • distinto tiempo de intermitencia
    • distinta secuencia
    • Usar otra salida digital
    • ...

  • 4.3.C Trata de reproducir una señal de S.O.S. en código Morse:  ... _ _ _ ...  que equivale a las siguientes señales de luz:
    • corta, corta, corta,
    • Larga, Larga, Larga,
    • corta, corta, corta,
    • pausa prolongada


  • 4.3.D. SEMÁFORO: Haz un montaje mediante Arduino y una placa Protoboard usando 3 LEDs de colores Rojo, Ámbar (o Amarillo) y Verde, situando los colores por este orden y en la disposición de un semáforo para vehículos. Después crea el programa necesario para controlar el semáforo, usando una secuencia similar a la real:
    • 1º - Luz verde
    • 2º - Luz Ámbar intermitente
    • 3º - Luz Roja, y se repite el proceso.
4.3.D. SEMÁFORO
 Esquema:

Proto-Board:

  • 4.3.E. JUEGO DE LUCES. Monta varios LEDs usando la placa Protoboard, y diseña un nuevo programa que haga efectos de luces. Como posible ejemplo, se ofrece el siguiente montaje:
4.3.E. Ampliación. JUEGO DE LUCES
Esquema:

Proto-Board:

4.4 SENSORES - DIVISOR DE TENSIÓN
Vamos a usar sensores, como LDR y pulsadores, conectándolos a Arduino mediante un circuito especial: el DIVISOR DE TENSIÓN. Este sistema es válido para sensores que actúen como resistencias (LDR, Termistores, sensores de humedad...), y también para pulsadores o interruptores, pues pueden considerarse como una resistencia muy grande (incluso infinita) cuando están abiertos y como una resistencia de valor 0 cuando están cerrados. Antes de hacer la práctica analizaremos en qué consiste este circuito y cómo funciona:

EL DIVISOR DE TENSIÓN
Se trata de un circuito que consta de:
  • Una fuente de tensión (por ejemplo una pila o batería)
  • 2 resistencias en Serie
Se llama divisor de tensión porque la tensión de la pila se divide, es decir, se reparte entre las dos resistencias del circuito. Como veremos con las fórmulas, se reparte de forma proporcional a cada resistencia, por ejemplo, si R2 es el doble de R1, V2 también será el doble de V1.







¿Cómo podemos saber el voltaje que corresponde a cada Resistencia? Primero calculamos la intensidad que recorre las dos resistencias. Como todos los componentes están en serie, la intensidad que pasa por cada resistencia es la misma que pasa por todo el circuito, y puede calcularse según la fórmula que se indica.
Para hallar el voltaje que hay en los extremos de la segunda resistencia, se multiplica su valor por el de la Intensidad que la recorre. De este modo vemos cómo V2 depende de R2.

Por tanto, el voltaje que llega a la entrada de ARDUINO, depende del valor de la resistencia R2.

Observa que hemos usado un PUNTO DE REFERENCIA COMÚN (Masa, Tierra, GND o Ground), tanto para el voltaje de la pila como para el voltaje de la resistencia 2 y para el de la placa de ARDUINO. A este punto de referencia le corresponde el valor de 0 Voltios a partir del cual se mide el voltaje en cualquier otro punto del circuito.


El voltaje en los extremos de la otra resistencia es la cantidad que falta hasta completar el total de la pila. (También se podría calcular multiplicando I por R1).

En resumen:
  • el voltaje se reparte entre R1 y R2,
  • este reparto es directamente proporcional al valor de cada resistencia: A mayor resistencia, mayor es el voltaje
Por tanto:
Cuanto mayor sea R2 respecto R1, mayor será la parte del voltaje total que le corresponde.

4. 4. SENSORES - DIVISOR DE TENSIÓN (Ejercicios):
  • MATERIALES NECESARIOS, aparte del material básico hace falta:
    • Una resistencia de 100K (KiloOhmios) {en lugar de 10K como se dice en el Video}
    • Un micropulsador para placa Protoboard
    • Una LDR (Fotorresistencia)
    • Un cable USB para transferir datos con el ordenador, a través del puerto serie.

¿QUÉ ES EL PUERTO SERIE?
Es un canal de comunicación entre Arduino y el ordenador, a través de un cable, que habitalmente es el USB, aunque los datos que se transfieren también aparecen en los pines denominados Rx (Receptor) y
Tx (Transmisor), que corresponden respectivamente a los pines D0 y D1. Por este motivo, si se va a utilizar el puerto serie, no deben utilizarse estos pines para otra función.
Para más información puede consultarse el apartado sobre el puerto serie de la web de Luis Llamas.

EL PUERTO SERIE EN ARDUINOBLOCKS

Para acceder a los bloques de instrucciones relacionados con el puerto serie hay que acudir al menú de "Bloques" y ,en el apartado "Comunicaciones" escoger la opción de "Puerto serie". Ahí aparecen todos los bloques que ofrece ArduinoBlocks relacionados con este componente.


  • 4.4.A. Entrada Analógica con un Pulsador.
    • Montaremos un divisor de tensión colocando en serie:
      • El pulsador
      • La resistencia de 100K
    • Conectaremos un extremo a la toma de tensión de 5V del propio ARDUINO
    • El otro extremo lo conectaremos a la propia toma GND de ARDUINO.
    • Entre el pulsador y la resistencia colocaremos un cable que llevaremos a una de las entradas analógicas de ARDUINO (en este caso, la A0).
    • No hace falta especificar en el apartado 'setup' que un pin analógico actuará como entrada.

4.4.A.1. ENTRADA ANALÓGICA CON PULSADOR
Esquema:

Programa:
ArduinoBlocks:

En un primer momento, creamos el programa sin utilizar variables


IDE:
IDE desde ArduinoBlocks:
(Sin usar variables)

(Sin usar variables)

Nota: ArduinoBlocks incluye en el programa para el IDE otras órdenes, para que sólo se lea el puerto serie cuando haya datos disponibles en el mismo)



Proto-Board:
Instrucciones:
  1. Una vez montado el circuito, realizado el programa y transferido éste a la placa de Arduino, deberás activar la Consola Serie, que es una pantalla que te permite Recibir y Enviar datos a través del Puerto Serie. Para ello pulsa el Botón Consola que está junto al indicador de conexión del puerto serie.





  1. Se abre entonces la ventana del Monitor Serie de ArduinoBlocks, donde puedes observar en la parte superior los botones de control y debajo un espacio que está en blanco incialmente.

  1. Para iniciar el proceso de lectura y recepción de datos hay que pulsar el botón "Conectar":

  1. En este instante empieza a recibirse datos del puerto Serie, que van apareciendo a gran velocidad en la ventana inferior:

  1. Observa la lectura que aparece en la pantalla del Monitor Serie cuando no pulsas el botón y también cuando lo pulsas. Anota el resultado en una tabla como la siguiente:
4.4.A.1. Entrada Analógica con Pulsador

Lectura del Monitor Serie
Sin pulsar:
Pulsando:


  1. Al terminar de hacer las comprobaciones puedes "Desconectar" el monitor serie:

  1. Y si deseas, deja en blanco la pantalla con el botón "Limpiar":

  • 4.4.A.2. Entrada Analógica con el Pulsador conectado a 3,3V. Se trata de usar el mismo circuito y programa anteriores pero ahora conectaremos el pulsador a la toma 3V3 de Arduino (3,3V) en lugar de a la de 5V. De este modo comprobaremos cómo varía la lectura en la entrada analógica de modo proporcional a la tensión que se le presente.
4.4.A.2. ENTRADA ANALÓGICA CON PULSADOR CONECTADO EN LA TOMA DE 3,3V
Se trata de realizar la misma práctica anterior pero, para comprobar cómo varía el valor recibido en la entrada analógica, se conecta el pulsador a la toma de 3,3V de Arduino en lugar de a la de 5V.
Esquema:
Proto-Board:
Instrucciones:
  1. Monta el circuito y activa el Monitor Serie de ArduinoBlocks. Comprueba ahora lo que ocurre al pulsar o no y anótalo en otra tabla:
    4.4.A.2 Entrada Analógica con el Pulsador conectado a la toma de 3V3 (3,3V)

    Lectura del Monitor Serie
    Sin pulsar:
    Pulsando:


  2. ¿Qué diferencias observas respecto a los resultados del circuito anterior?
  3. Los valores que has obtenido son los límites que usa Arduino para 'leer' el voltaje de una entrada digital. Por tanto. ¿Qué valor corresponde a cada uno de los siguientes voltajes?:
    Voltaje en la entrada
    Valor que asigna Arduino
    0 V

    3,3 V
    5 V

  4. Si hubiera 2,5 V en la entrada ¿Qué valor mostraría el Monitor Serie de Arduino? (puedes calcularlo mediante una 'regla de tres')
  5. Si el Monitor Serie indica un valor de 350. ¿Qué tensión (voltaje) hay en la entrada correspondiente?



4.4.A.3. ENTRADA ANALÓGICA CON PULSADOR. USANDO UNA VARIABLE
Se trata de la misma práctica anterior, conectando de nuevo el pulsador a la toma de 5V, pero utilizando una variable, que llamaremos "X" en la que guardaremos el valor de la lectura del Monitor Serie en cada momento.
Esquema: El mismo montaje del apartado 4.4.A
Programa:
ArduinoBlocks:
Programa equivalente al anterior, usando una variable: x (ver abajo)



IDE: IDE desde ArduinoBlocks:
Como novedad, usamos una variable 'x' para que guarde el valor de la lectura del pin.
Esta lectura se transfiere al puerto serie, para que a través del cable USB podamos verla desde el ordenador.

Sigue los pasos siguientes para crear un variable en ArduinoBlocks:
  1. En "Bloques" pulsa la opción "Variables" y, entre las que se ofrecen en el desplegable, en este caso escoge una variable de tipo numérico pinchando en la opción "Crear variable...(Número)"
  2. Dale un nombre a la variable:
  3. A partir de ahora aparecen las opciones de la variable en el apartado "Variables", pudiendo ya utilizarse en los programas.
Proto-Board: El mismo montaje del apartado anterior
Instrucciones: (iguales al apartado 4.4.A.1 anterior)
  1. Una vez montado el circuito, realizado el programa y transferido éste a la placa de Arduino, deberás activar la Consola Serie, que es una pantalla que te permite Recibir y Enviar datos a través del Puerto Serie. Para ello pulsa el Botón Consola que está junto al indicador de conexión del puerto serie.
     


  1. Se abre entonces la ventana del Monitor Serie de ArduinoBlocks. Para iniciar el proceso de lectura y recepción de datos hay que pulsar el botón "Conectar":

  1. Anota los resultados en una tabla como la siguiente:
4.4.A.3. Entrada Analógica con Pulsador,
usando una variable


Lectura del Monitor Serie
Sin pulsar:
Pulsando:


  • 4.4.B. Entrada Analógica con el Pulsador Invertido. Es el mismo circuito con divisor de tensión anterior pero ahora cambiamos la posición de los elementos:
    • El pulsador se conecta ahora a la toma de tierra GND.
    • La resistencia de 100K se conecta a la toma de tensión de 5V.
    • La tensión de salida, por tanto, será la que hay en extremos del pulsador. Y se lleva a la misma entrada analógica que antes.

4.4.B. ENTRADA ANALÓGICA CON PULSADOR INVERTIDO
Esquema:

Programa: El mismo de la práctica anterior
Proto-Board:
Instrucciones:
  1. Monta el circuito y activa el Monitor Serie de ArduinoBlocks. Experimenta con el pulsador y anota en una tabla como la siguiente los resultados:
    4.4.B. Entrada Analógica con Pulsador Invertido

    Lectura del Monitor Serie
    Sin pulsar:
    Pulsando:
  2. ¿Qué diferencias observas con respecto al funcionamiento del anterior circuito?


  • 4.4.C. Entrada Digital con un Pulsador. Aunque no se explica en el video, el mismo montaje del divisor de tensión también se puede aplicar a una entrada digital. La única diferencia destacable reside en el programa:

4.4.C. ENTRADA DIGITAL CON UN PULSADOR
Esquema:
Previo: En este caso utilizamos una entrada "Digital" en lugar de una "Analógica". Una entraea digital sólo puede adquirir dos valores posibles: 1/0, o bien ON/OFF, o ALTO/BAJO, o HIGH/LOW, o VERDADERO/FALSO, o TRUE/FALSE, etc... Por ello no podemos usar una variable numérica para almacenar este dato, sino que usaremos una variable del tipo Booleano (del álgebra de Boole).


Sigue los pasos siguientes para crear un variable Booleana en ArduinoBlocks:
  1. En "Bloques" pulsar la opción "Variables" y, entre las que se ofrecen en el desplegable, en este caso escogemos una variable de tipo numérico pinchando en la opción "Crear variable...(Boolean)"
  2. Asigna un nombre a la variable:
  3. Ya aparecen las opciones de la variable en el apartado "Variables" y pueden utilizarse en los programas.


Programa:

Observa las diferencias respecto el anterior con entrada analógica:
  • Hay que especificar que el pin digital 7 actuará como entrada
  • Se utiliza una orden para leer una señal digital en lugar de una analógica.

ArduinoBlocks


IDE: IDE desde ArduinoBlocks:

Observa las diferencias respecto el anterior con entrada analógica:
  • Hay que especificar que uno de los pines digitales actuará como entrada
  • Se utiliza una orden distinta para leer una señal digital en lugar de una analógica.

En la imagen del programa se muestra cómo:
  • Se especifica que el PIN digital 7 actúa como entrada (INPUT)
  • La orden de lectura es digitalRead en lugar de analogRead

Al usar el bloque "Leer digital Pin", ArduinoBlocks realiza automáticamente la asginación del PIN correspondiente como entrada (INPUT)

Proto-Board:
Instrucciones:
  1. Tras montar el circuito activa el Monitor Serie de ArduinoBlocks. Comprueba lo que ocurre ahora cuando pulsas o no y anótalo en otra tabla:
    4.4.C. Entrada Digital con un Pulsador

    Lectura del Monitor Serie
    Sin pulsar:
    Pulsando:

  • 4.4.D. Entrada Digital con el Pulsador Invertido. Igual que en el caso anterior invertimos la posición del pulsador y la resistencia y comprobamos el resultado cuando se introduce el punto medio en una entrada digital. El programa es el mismo del circuito anterior.

4.4.D. ENTRADA DIGITAL CON EL PULSADOR INVERTIDO
Esquema:
Proto-Board:
Instrucciones:
  1. Monta el circuito y activa el Monitor Serie de ArduinoBlocks. Comprueba ahora lo que ocurre al pulsar o no y anótalo en otra tabla:
    4.4.D. Entrada Digital con el Pulsador Invertido

    Lectura del Monitor Serie
    Sin pulsar:
    Pulsando:


  2. ¿Qué diferencias observas respecto al circuito anterior?

  • 4.4.E. Entrada Analógica con una LDR. Para observar el efecto del divisor de tensión con dos resistencias, experimenta con este circuito en el que usamos una resistencia fija de 100K y otra resistencia que depende de la luz (LDR).

LDR
LDR = Light Depending Resistance = Resistencia Dependiente de la Luz

Una LDR es una Resistencia cuyo valor en Ohmios dependerá de la cantidad de luz que reciba. Su forma de variación es CONTRARIA al incremento de luminosidad, es decir:

Si Aumentamos la luz que recibe, la LDR disminuye su Resistencia:  (a +Luz  -R) y viceversa (a -Luz  +R)

4.4.E. ENTRADA ANALÓGICA CON UNA LDR

Esquema:
Programa:
mBlock: IDE:

(Es el mismo del apartado 4.4.A)

(El mismo del 4.4.A)

Proto-Board:
Instrucciones:
  1. Tras montar el circuito 4.4.E.  y activar el Monitor Serie, completa una tabla como la siguiente:
4.4.E. Entrada Analógica con una LDR

Lectura del Monitor Serie
LDR a plena Luz:

LDR en Sombra:

LDR tapada completamente:

  1. Observa que la lectura del monitor está entre los valores extremos 0 y 1023.
  2. Imagina que invertimos la posición de la LDR. Sin montar el circuito rellena la tabla siguiente con los valores aproximados que podríamos obtener:

4.4.F. ENTRADA ANALÓGICA CON UNA LDR EN POSICIÓN INVERSA:

4.4.F. Entrada Analógica con una LDR Invertida

Lectura del Monitor Serie
LDR a plena Luz:
LDR en Sombra:
LDR tapada completamente:


Salida Digital Variable tipo PWM: Aplicación a la iluminación de un LED.
PWM
PWM = Pulse Width Modulation = Modulación por Anchura del Pulso
Hasta ahora hemos visto cómo se puede encender o apagar un LED mediante una salida Digital de Arduino.
    • Una Salida Digital proporciona una señal del tipo TODO/NADA, es decir, el LED se puede encender del todo o apagar del todo.
    • Arduino produce salidas digitales con dos posibles niveles de tensión:
      • Nivel "Bajo" o "LOW", de 0V, que se representa en el sistema binario por la cifra "0"
      • Nivel "Alto" o "HIGH", de 5V, que se representa en notación binaria por la cifra "1"

Aplicando una tensión variable podríamos conseguir que el LED se encendiera o apagara gradualmente. Arduino Uno no dispone de Salidas Analógicas, que son las que producen una tensión variable. Por tanto la señal de la derecha no es posible obtenerla directamente de esta placa.

Entonces ¿Cómo puede conseguirse que un LED se encienda con un nivel de luminosidad intermedio entre TODO y NADA? Para eso pueden utilizarse las Salidas Digitales PWM.
SALIDAS DIGITALES PWM~ DE ARDUINO
  • PWM significa Pulse Width Modulation, es decir, Modulación por Anchura de Pulsos.
  • Observarás que, en la placa de Arduino, entre los PINES Digitales, algunos están marcados por un signo ~ que, según viene rotulado en la placa, corresponde a PINES tipo PWM~
  • En Arduino Uno hay seis PINES PWM~ : ~3 ~5 ~6 ~9 ~10 ~11
  • Estos pines pueden usarse como entradas o salidas Digitales normales, pero si se usa con ellos la orden analogWrite entonces  se comportan como Salidas PWM~
  • Las salidas PWM~ son salidas Digitales, por tanto sólo pueden ofrecer una tensión de 5V (nivel alto) o 0V (nivel bajo)
  • Entonces ¿Cómo es que sirven para conseguir que un LED ilumine más o menos?
  • La diferencia con una salida digital normal está en que la señal PWM~ es Digital pero en forma de pulsos, es decir, intermitente.
  • Una señal PWM~ tiene tensiones de 5V o 0V, pero no de forma continua sino intermitente. Lo importante es cuánto tiempo permanece en 5V y cuánto en 0V, dentro de un periodo concreto. Vamos a aplicar este tipo de señal a un LED para observar el efecto. Fíjate en el diagrama de la derecha.
  • Todas las señales que aparecen son pulsos. Pero no todos los pulsos son iguales. Dentro del mismo periodo de tiempo (Ciclo),  hay señales que permanecen más tiempo en nivel bajo (0V) y otras que están más tiempo en el nivel alto (5V).
  • Cuanto más tiempo está la señal a nivel alto, más luminosidad se observa en el LED.
  • Los pulsos son tan rápidos que el ojo no llega a distinguirlos. Lo que interpreta nuestro cerebro es el valor promedio de luminosidad que llega a percibirse.
  • Si los pulsos son cortos, es decir, se mantienen en 5V poco tiempo y mucho en 0V, entonces el efecto general para el ojo es que el LED se ve encendido con menos intensidad, aunque en realidad lo que ocurre es que está encendido durante menos tiempo.
  • Si los pulsos son largos, o sea, se mantienen en 5V mucho tiempo y poco en 0V, el efecto para el ojo es que el LED se ve encendido con más intensidad, aunque en realidad lo que está pasando es que está encendido durante más tiempo.

  • En Arduino, una señal de pulsos cortos corresponde a un valor PWM pequeño.
  • Y una señal de pulsos largos corresponde a un valor PWM alto.
  • Los valores extremos para una señal PWM en Arduino son los siguientes:
    • El valor mínimo PWM es 0 y equivale a una señal que permanece continuamente en 0V.
    Si comparamos con la señal digital del principio de este apartado, equivale a una señal digital normal del tipo "LOW"
    • El valor máximo PWM es 255 y equivale a una señal de 5V continuos.
    Podemos observar que es equivalente a una señal digital normal del tipo "HIGH"



  • 4.4.G. Salida Digital Variable tipo PWM. LED con iluminación variable ESCALONADA.
    • Vamos a volver a realizar el montaje de la práctica 4.3 pero ahora conectaremos el circuito del LED a una salida PWM de Arduino, por ejemplo a la ~3.
    • Realiza el montaje siguiente y escribe el programa en Arduino:
4.4.G. Salida Digital Variable tipo PWM. LED con iluminación variable ESCALONADA.
Esquema:

Programa:

mBlock
IDE


Observa que en el apartado void setup no se rellena nada, ya que las salidas PWM no hace falta especificarlas, pero es obligatorio ponerlo.

El apartado void loop es el programa que se repite continuamente.
consiste en varias órdenes seguidas, por ejemplo:
analogWrite(3,50); escribe en la salida ~3  el valor PWM 50.
delay(500); introduce un tiempo de espera, un retardo, de 500 milisegundos (o sea, 1/2 segundo)

Proto-Board:
Instrucciones:
  1. Monta el circuito y carga el programa.
  2. Comprueba su funcionamiento.




  • 4.4.H.1. Salida Digital Variable tipo PWM. Comprobación de los valores PWM en el Monitor Serie.
    • En la práctica 4.4.A estudiamos cómo usar el monitor Serie para comprobar el valor de tensión que hay en cierto punto del circuito.
    • Vimos que:
      • un valor 0 (el mínimo posible) equivale a 0V
      • un valor 1023 (el máximo posible) equivale a 5V
    • Vamos a comprobar, en el caso de salidas PWM, qué valores encontramos.
4.4.H.1. Salida Digital Variable tipo PWM. Comprobación de los valores PWM en el Monitor Serie. Sin usar variables.
Esquema:
Conecta
un cable directamente desde la salida ~3 hasta la entrada Analógica A0.

Programa
mBlock
IDE





Ve probando distintos valores PWM en la orden:
fijar pin PWM __ a __


Como vamos a usar el monitor serie, hay que activarlo mediante la orden Serial.begin(9600);
Escogemos una velocidad de lectura de 9600 baudios para el IDE

En la parte que se repite continuamente ("loop" o lazo) escribimos valores en la salida PWM~3 mediante la orden analogWrite

Para leer los valores que aparecen en la entrada Analógica A0 hay que usar analogRead(A0); pero lo que queremos es que la lectura de estos valores se envíe a la pantalla del monitor serie

Por tanto, para que los valores de la entrada A0 aparezcan en la pantalla del monitor serie usaremos Serial.println(analogRead(A0));
Proto-Board:
Instrucciones:
  1. Monta el circuito y carga el programa.
  2. Cambia el programa, probando distintos valores para la salida PWM~3, por ejemplo: 0,  50,  150,  255
  3. Activa el Monitor Serie y comprueba los valores que recibe.
  4. ¿Qué conjunto de medidas aparece en cada caso?

Valor PWM
Medidas en el Monitor Serie
0

50

150

255

  1. ¿Concuerdan esos valores con lo que se ha explicado sobre las señales PWM? Explica por qué.




  • 4.4.H.2. Comprobación de los valores PWM en el Monitor Serie. Usando variables.
    • Se trata de la misma práctica anterior, pero usando una variable en el programa.
    • Se trata de conectar una de las salidas PWM a una entrada analógica para comprobar qué valores aparecen.
4.4.H.2. Comprobación de los valores PWM en el Monitor Serie. Usando variables.
Esquema:
Conecta
un cable directamente desde la salida ~3 hasta la entrada Analógica A0.

Programa
mBlock
IDE





Ve probando distintos valores PWM en la orden:
fijar pin PWM __ a __




En este caso vamos a definir una variable int x; para guardar la letura de la entrada analógica.

Como vamos a usar el monitor serie, hay que activarlo serie con la orden Serial.begin(9600);
Escogemos una velocidad de lectura de 9600 baudios para el IDE.

En la parte que se repite continuamente ("loop" o lazo) escribimos valores en la salida PWM~3 mediante la orden analogWrite

Leemos esos valores en la entrada Analógica A0 con x=analogRead(0);

Y pasamos esos valores a la pantalla monitor serie mediante Serial.println(x);
Proto-Board:
Instrucciones:
  1. Monta el circuito y carga el programa.
  2. Cambia el programa, probando distintos valores para la salida PWM~3, por ejemplo: 0,  50,  150,  255
  3. Activa el Monitor Serie y comprueba los valores que recibe.
  4. ¿Qué conjunto de medidas aparece en cada caso?

Valor PWM
Medidas en el Monitor Serie
0

50

150

255

  1. ¿Concuerdan esos valores con lo que se ha explicado sobre las señales PWM? Explica por qué.



  • 4.4.I. Salida Digital tipo PWM. LED con iluminación VARIABLE.
    • Vuelve a realizar el mismo montaje de la práctica 4.4.G.
    • Ahora vamos a tratar de conseguir que el LED se encienda y apague gradualmente.
    • Realiza el montaje siguiente y escribe el programa propuesto.
4.4.I. Salida Digital tipo PWM. LED con iluminación VARIABLE.
Programa
mBlock
IDE


Se utiliza una variable denominada "i" para hacer el efecto de crecer y decrecer.

La sección nueva del programa es la que incluye la orden:
for (...condiciones...) {...órdenes...}

La orden  "for" es un bucle de repetición con una condición de finalización. Esta orden se podría traducir como:

mientras se cumplan las siguientes (...condiciones...) repite las siguientes {...órdenes...}

Las condiciones vienen definidas por tres parámetros que se sitúan entre paréntesis, separadas por punto y coma:
Valor inicial:
(int i=0; Se define una variable del tipo Número entero y nombre "i" cuyo valor inicial es 0.
Condición final:
 i<256; El valor final de la variable "i" tiene que ser menor que 256.
Incremento:
i=i+5) Al valor actual de "i" se le suma 5 y continuamos con el proceso.

Mientras se cumpla la condición final (i<256), se ejecutan las órdenes que vienen entre llaves{...}, que son las siguientes:
{analogWrite (3,i); Se escribe en la Salida Analógica PWM~3 el valor actual de "i"
delay(20);} Retardo de 20 miliSegundos

Tras cumplir estas órdenes se vuelve a revisar las condiciones entre paréntesis (...) y se comprueba si se sigue cumpliendo que i<256. Mientras sea así, se vuelve a sumar 5 a la variable "i" y se vuelve a ejecutar las órdenes.
Cuando ya no se cumpla la condición final, el programa sale del bucle "for" y pasa a las siguientes instrucciones, si las hay.

Por tanto, lo que ocurre es que el programa va escribiendo en la salida analógica PWM~3  los valores: 5, 10, 15, 20, 25,...  hasta 255, dando como resultado que el LED conectado allí va aumentando su luminosidad gradualmente.
Esquema:

Proto-Board:
Instrucciones:
  1. Monta el circuito y prueba el programa propuesto.
  2. Comprueba que el LED aumenta y disminuye su luminosidad de forma gradual
  3. Explica cómo opera la sección del programa etiquetada como Decreciente.




  • 4.4.J. VARIABLE DE VALOR ALEATORIO.
    • No vamos a usar ningún montaje, sólo utilizaremos el monitor Serie para obtener los datos
4.4.J. VARIABLE DE VALOR ALEATORIO
Programa para mBlock
Vamos a utilizar una variable que adopte un valor aleatorio. Para ello usamos la orden  "número al azar entre..." random(1,11);  que nos ofrece como resultado un número situado entre los valores indicados en los huecos


En nuestro caso vamos a usar valores entre 0 y 2 a ver qué ocurre. Usaremos como orden entonces:
random(0,3);
El resultado se saca por el monitor Serie





Programa para Arduino
Observa que el equivalente en Arduino es la orden random pero tiene ciertas diferencias:

Para obtener una variable que adopte un valor aleatorio usamos la orden: random(límite_inferior,límite_superior);
que nos ofrece como resultado un número situado entre los valores indicados entre paréntesis.


En nuestro caso queremos a usar valores entre 0 y 2. Pero si usamos:
random(0,2);
Y sacamos el resultado por el monitor Serie, observamos que aparecen sólo los números 0 y 1.
Esto ocurre así porque el límite superior no se alcanza nunca (más adelante te ofreceremos una explicación de por qué)

Si nos fijamos en lo que hace mBlock, vemos que al usar random suma "1" al valor superior, quedando realmente como:
random(límite_inferior,límite_superior + 1);

Por tanto, mBlock resuelve por nosotros este problema y nos ayuda a entender cómo podemos lograrlo en Arduino. Esto lo debemos tener en cuenta como diferencia entre un programa y otro.

Instrucciones:
  1. Escribe el programa.
  2. Abre el monitor Serie y comprueba los valores que se obtienen
  3. Modifica el programa para que los valores aleatorios que se obtengan sean: 2, 3, 4 y 5



Más sobre la función random
en Arduino
La función random(límite_inferior,límite_superior);  genera un número entero aleatorio, entre los límites que se indican entre paréntesis.
En un ordenador, la forma de generar un número aleatorio es utilizar el "reloj" del sistema. A partir de la información inicial del reloj, se va construyendo mediante una fórmula los números siguientes. El resultado son siempre valores entre 0 y 1, por ejemplo:
0,26375321
0,45863957
0,89423543
0,19384624
0,72974012
...

Por tanto, la base de cualquier generador de números aleatorios (el comando random) es un valor entre 0 y 1.

Método para obtener random(0,b);
Si usamos random(0,1); obtenemos la serie tal cual se genera
Usar random(0,2);  equivale a usar la serie generada pero multiplicando el resultado por 2.
Si usamos random(0,3); es lo mismo que multiplicar los números generados por 3.
Y así sucesivamente....
El resultado de random  (la función generadora original) es un número entre 0 y 1 pero como random(0,1)es un número entero, su parte entera nunca puede alcanzar el 1, por este motivo, random(0,2), tampoco llegará al 2, como random(0,3); no llegará al 3 y así sucesivamente.
tabla random

En cambio, no hay ningún problema en obtener valores "0" porque tomamos la parte entera del valor obtenido.

En conclusión, 
siempre que deseemos obtener un valor aleatorio entre a y b, debemos tener en cuenta que, en Arduino, para alcanzar el valor "b" hay que usar:  random(a,b+1);



4.4.K. ENCENDER UN LED ALEATORIAMENTE

Se trata de encender cada uno de los LED durante 0,5 segundos pero de forma aleatoria
Esquema:

Es el mismo circuito usado en la práctica anterior del juego de luces
Proto-Board:



Programa para mBlock Para conseguir el efecto deresado te damos las siguientes orientaciones:

  • Usaremos como base el programa para encender y apagar un LED (práctica 4.3.A):
  • La orden "número al azar entre..." nos puede servir para escoger el pin que va a encenderse y apagarse de forma aleatoria random(1,11);  cambiando los valores límite por otros que te interese.
  • Como tienes que activar y desactivar un mismo PIN en cada repetición, sería útil guardar en una variable (llamada, por ejemplo, VARIABLE) el valor aleatorio que se ha obtenido cada vez
  • Aunque en principio sería la idea más fácil, no se puede usar una variable obtenida de forma aleatoria en el comando "fijar salida pin digital ...". Esto es así porque con este método se origina una variable larga tipo "double", que no cuadra con el tipo de números que se pueden escribir en la casilla del PIN,  
  • Por tanto, tenemos que usar la orden condicional: "Si ocurre... entonces haz..."para escoger qué PIN se activa o desactiva en cada momento, en función de la VARIABLE resultante

En resumen, el programa en mBlock empezaría de la forma siguiente:



Instrucciones:
  1. Completa el programa anterior para obtener el resultado esperado.





4.4.L. JUEGO DE LOTERÍA

Ampliando a 10 LEDs el circuito del JUEGO de LUCES, vamos a imitar el funcionamiento de una máquina para sortear números:
Esquema:

Se trata del circuito del JUEGO de LUCES ampliado a 10 LEDs, uno por cada dígito
Proto-Board:



Programa para mBlock Condiciones del programa:
  • Se debe ir iluminando aleatoriamente cada uno de los dígitos.
  • Inicialmente, el cambio de iluminación de un LED a otro se produce con mucha velocidad
  • Conforme avanza el sorteo, paulatinamente se va ralentizando el tiempo que está encendido cada LED
  • Este cambio de un LED a otro se producirá al menos 30 veces
  • Finalmente, debe quedar iluminado un sólo LED, que permanecerá así durante un tiempo largo (unos 10 segundos).
  • A continuación se apagan todos los LED y se produce una pausa larga y...
  • ...vuelve a iniciarse el sorteo de otro dígito, y así indefinidamente.

Para conseguir estos efectos, tendrás que usar todo lo estudiado en los programas anteriores:
  • La orden "número al azar entre..." para escoger el PIN que va a encenderse y apagarse de forma aleatoria random(1,11);
  • Usa una variable para guardar, en cada repetición, el número resultante
  • La orden condicional  para escoger, para cada valor de la VARIABLE, el PIN que deberá activarse
  • La orden para fijar la salida del PIN digital resultante a nivel alto y bajo, sucesivamente
  • Y otra variable mediante la que modifiques el TIEMPO que va a estar encendido cada LED

En resumen: Se trata de ampliar el programa de la práctica anterior para añadir una variable TIEMPO que se vaya alargando cada vez. Finalmente queda un LED fijo durante un periodo largo. Después se repite el proceso.


Instrucciones:
  1. Modifica el programa de la práctica anterior para obtener el resultado deseado.
  2. Completa el proyecto creando una caja con una carátula en la que se ubiquen los LEDs junto a cada dígito.







arriba

libro