Interruptor

Objetivos

 

  • Presentar las variables.
  • Utilizar los bloques de «Operadores» para hacer comparaciones.
  • Utilizar los pulsadores como interruptores.[/three-fourth]
  •  

    Kit de inicio para seguir el curso

     

    Programacion Mblock

    Kit de inicio a mBlock

    Para poder seguir este curso te recomendamos que compres nuestro kit de inicio mBlock.

    Comprar Kit inicio mBlock

    Las variables

     

    En la sesión anterior trabajamos con los pulsadores de la placa para hacer que se encendieran y apagasen los leds en función de si el pulsador estaba pulsado o no. Pero muchas veces lo que buscamos es un comportamiento diferente, y queremos que funcionen como interruptor.

    Pensad en cualquier luz de vuestra casa o colegio, no queremos tener que estar pulsando el interruptor todo el rato que necesitemos tener la luz encendida, evidentemente. Queremos que cuando le demos una vez se encienda, y al volver a darle se apague. Pues eso es precisamente lo que vamos a hacer en esta ocasión.

    Zap

    Para poder hacerlo vamos a necesitar una nueva herramienta: las variables. Podemos pensar en las variables como una especie de caja, en la que vamos a guardar las cosas que queramos para consultarlas o modificarlas cuando lo necesitemos.

    Por ejemplo, imaginad un cajón de vuestra casa. Podríamos guardar dentro de él un euro cada día. Al de unos días podemos consultar cuanto dinero tenemos, o podemos meter 5 euros aprovechando que nos ha dado la paga el abuelo. Muchas veces querremos saber si tenemos más de cierta cantidad de dinero, para ver si podemos ya darnos ese capricho que, casi seguro, nos merecemos.

    Pues una variable funciona más o menos así. Vamos a ponerlo en práctica.

     

    Programando un interruptor

     

    En este caso la variable, en vez de para guardar dinero, vamos a usarla para guardar el valor del led, y así saber si está encendido o apagado cuando demos al pulsador. Vamos a ver en este pequeño esquema cómo queremos que funcione el programa:

    Esquema

    Si os fijáis bien, el truco está en que cada vez que encendemos el led ponemos la variable a 1, y al apagarlo a 0. Así podemos consultar su valor y utilizar una estructura de tipo condicional para apagarlo o encenderlo según sea conveniente.

    Pero hay algo más. Hasta ahora hemos metido todos los bloques dentro de un bloque «por siempre» para repetirlo de forma indefinida. Sin embargo si os fijáis en el esquema, antes de repetir el bucle en el que comprobamos el pulsador, apagamos el led y fijamos la variable a 0. Esto lo hacemos para asegurarnos de que al comenzar el programa tengamos la situación controlada y estar seguros de que el led esté apagado.

    Vamos a pasarlo a bloques. Lo primero que vamos a hacer es crear la variable. Tenemos que ir a la categoría de «Datos y bloques», de color naranja. Una vez dentro seleccionamos «Crear variable» y le damos el nombre que queramos, normalmente uno que nos recuerde para qué la estamos utilizando. En mi caso la llamaré «Led».

    Automáticamente se nos crearán 5 nuevos bloques naranjas:

    mblock

    De momento vamos a fijarnos en los dos primeros.El primero, el redondito que tiene una «v» con el nombre de la variable, nos sirve para consultar el valor de la variable, y el de «fijar led a 0», nos sirve para darle el valor que queramos. Con estas herramientas ya podemos crear la primera parte del programa:

    mblock

    Ahora ya vamos a colocar el bloque «por siempre», y dentro lo primero que vamos a comprobar es si alguien ha presionado el pulsador con un bloque «si …», como hicimos en la sesión anterior:

    mblock

    Y a continuación tenemos que actuar en función de lo que vaga la variable, para lo que necesitaremos el bloque«si… si no…». Tenemos que meterlo dentro de la otra condición. Para ellonecesitaremos de un nuevo tipo de bloques, los «Operadores»

    Estos bloques de color verde os van a servir para hacer todo tipo de comparaciones, y algunas otras operaciones que ya veremos más adelante. De momento vamos a fijarnos en el de igualdad «… = …», que, si os fijáis, encaja dentro del bloque «si … si no …». Lo utilizaremos para comparar el valor de la variable «Led» con 0 o 1, y saber así si el led está encendido o apagado.

    mblock

    Tal y como hemos construido la condición, estamos comprobando en la primera parte si la variable está a 0, es decir que el led está apagado. Por lo tanto, si esto se cumple tenemos que encenderlo. Pero además, no se nos puede olvidar, que tenemos que fijar el valor de la variable a 1, ya que ahora el led estará encendido. Utilizaremos el segundo de los bloques de variables de los que hemos hablado. Y en la segunda parte del «si … si no…» hacemos lo contrario. Apagamos el led y fijamos la variable a 0.

    Si en este punto probásemos el programa veremos que a veces funcionará bien y otras no, y que si mantenemos el pulsador presionado el LED se encenderá y se apagará continuamente. Esto se debe a que  Arduino es mucho más rápido que nosotros, y ejecuta el programa muchas veces por segundo. Por lo tanto leerá varias pulsaciones, y encenderá y apagará el led muchas veces sin que nos demos cuenta. Si coincide que se queda igual que estaba, nos parecerá que no ha hecho nada.

    La solución para esto es muy sencilla. Simplemente le diremos que después de encender o apagar el LED espere un tiempo antes de seguir ejecutando el programa, de manera que no volverá a leer el pulsador hasta que pase ese tiempo. Con 0,3 segundos tenemos tiempo de sobra.

    mblock

    Aquí os dejamos un vídeo explicándolo todo y con el resultado del programa:

     

    Resumen de la sesión

     

    En esta sesión hemos aprendido varias cosas importantes:

     

  • Hemos presentado varios tipos de bloques nuevos.
  • Sabemos crear y usar variables en nuestros programas.
  • Hemos usador operadores para hacer comparaciones.
  • Hemos creado un programa para usar un pulsador como interruptor.
  •  

    Deja una respuesta