LAS VARIABLES EN S4A

Objetivos

 

  • Presentar el concepto de condiciones iniciales.
  • Introducir los bloques de “Variables”.
  • Aprender un poco más de los bloques “Operadores”.
  • Profundizar en el manejo de los bloques de control.
  • Mejorar nuestra capacidad para crear algoritmos y programas más complejos.
  •  

    Material requerido.

     

    ArduinoUNO Arduino Uno o compatible y con el firmware para S4A cargado.
    Img_3_4Img_3_6 Una Protoboard más cables.
    componente Un diodo LED
    Img_3_5

    Cuatro resistencia de 330 Ohmios.

    Img_5_1  Un pulsador.

     

     

    PLANTEAMIENTO DEL ALGORITMO: CONDICIONES INICIALES

     

    El esquema y el montaje son los mismos que los de los del programa del pulsador de la sesión 6. La diferencia es que en esta ocasión utilizaremos el pulsador como un interruptor, de forma que una pulsación encienda el LED y la siguiente la apague. 

    Vamos a construir el programa de forma que siempre que empecemos a ejecutar el programa el LED esté apagado. Para ello tendremos que hacer que al iniciarse el programa se ejecute el bloque “digital 10 apagado” una sola vez, y después ya se ejecute el resto de forma cíclica hasta que lo paremos.

    Como queremos que se ejecute una única vez, lo pondremos debajo del bloque “al presionar” y antes del bloque “por siempre”.

    digital 10

    A este tipo de estructura le llamaremos condiciones iniciales, ya que sólo se ejecuta sólo una vez y al iniciarse el programa.

     

    UTILIZACIÓN DE VARIABLES

     

    Para poder encender o apagar el LED dependiendo del estado en que se encuentre, lo primero que tenemos que conseguir es saber en todo momento cuál es el estado de la salida digital 10. Para ello vamos a introducir el concepto de variable.

    • Una variable nos permite guardar un valor para utilizarlo cuando lo necesitemos.
    • En este caso usaremos una variable para guardar el estado de la salida digital 10 y de esa forma saber si el LED está encendido o apagado.

    Para crear una variable nueva iremos a la categoría de bloques “Variables” y haremos click en “Nueva variable”. Nos pedirá un nombre. Como la queremos para guardar el estado del LED, la llamaremos simplemente “led”.

    menu variables

    Al aceptar veremos que se nos crean nuevos bloques relacionados con la variable led que acabamos de crear, y en el escenario se nos mostrará el valor que tiene almacenada la variable. Podemos arrastrarla para colocarla donde queramos.

    variables s4a

    Como necesitamos saber en todo momento en qué estado se encuentra el LED, lo que haremos será fijar el valor a false cuando la salida digital 10 esté a LOW (LED apagado), y  a true cuando lo esté a HIGH (LED encendido).

    • Recordad que una salida digital es un valor booleano, sólo puede tomar dos valores, por eso nuestra variable también será booleana y tomará sólo dos valores, true o false.

    fijar variable

    Ahora ya queremos que el resto de instrucciones se ejecuten de manera cíclica si cumple cierta condición. Para ellos utilizaremos el el bloque de “Control” “por siempre si …”, que combina en un sólo bloque los bloques “por siempre” y “si …”.

    Para detectar cuándo se acciona el pulsador crearemos una condición igual a la que hicimos en la sesión anterior.

    bloque por siempre si s4a

    • Recordad que la salida digital 2 lee HIGH(true) cuando apretamos el pulsador porque hemos realizado el montaje con la resistencia en PULLDOWN.
    • De esta forma los bloques que estén dentro del bloque “por siempre si…” se ejecutarán una vez si se presiona el pulsador.
    • Podéis probar a montar el circuito con la resistencia en PULLUP como explicamos en la sesión 6.

    Hasta ahora nuestro programa conoce el estado del LED al iniciarse el programa y detecta cada vez que presionemos el pulsador.

    Lo que nos falta es que sea capaz de encender el LED si está apagado y de apagarlo si está encendido. Para ello tendremos que usar el bloque de “Control” “si  /  si no” para comprobar el estado de la variable “led” que hemos creado.

    si no led interruptor s4a

    • Hemos utilizado el bloque de “Variables” “led”. Este bloque tiene almacenado el último valor que ha cogido la variable.
    • Hemos utilizado el operador “… = …” para saber si ha guardado HIGH o LOW (true o false), ya que esta variable toma valores booleanos.

    Ya sólo nos queda decirle lo que tiene que hacer en cada caso:

    • Si el LED está apagado, la variable “led” tendrá guardado false y cumplirá la condición, así que lo encenderemos.
    • Si no está apagado (o lo que es lo mismo, está encendido), lo apagaremos.
    • Tenemos que recordar que queremos guardar en la variable “led” el estado del LED conectado a la salida digital 10, así que cada vez que lo encendamos o apaguemos, guardaremos su valor en la variable.

    bloques interruptor

    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 S4A se comunica con nuestro Arduino para enviar y recibir señales cada 75ms, o sea más de 10 veces por segundo; lo que significa que si tardamos más que ese tiempo en soltarlo, habrá leído varias veces el estado del pulsador y cada vez que lo lea lo encenderá o lo apagará.

    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.

    bloques interruptor s4a

    • Si ahora mantenemos el pulsador apretado, el LED parpadeará cada 0,3 segundos.
    • Siempre que ejecutemos el programa de nuevo el LED estará apagado.
    • Podemos ver el valor que tiene almacenada la variable “led” en cualquier momento en el escenario.

    Podéis descargar el programa completo desde aquí: Interruptor.

    Resumen de la sesión

     

    En esta sesión hemos aprendido varias cosas importantes:

  • El concepto de condiciones iniciales.
  • Para que sirven las variables y cómo utilizarlas.
  • A crear algoritmos más complejos.
  • Comprender un poco mejor cómo se relacionan el entorno S4A y nuestro Arduino. 
  • Deja una respuesta