Saltar a contenido

3.4. A03-Pulsador

Teoría

En la tabla siguiente vemos la simbología y algunos ejemplos del aspecto físico de estos elementos.

Símbolos y aspecto real de un pulsador
Símbolos y aspecto real de un pulsador

Se trata de un dispositivo que es capaz de abrir o cerrar el paso de la corriente eléctrica mientras permanece accionado, es decir, su función no queda anclada como por ejemplo en los interruptores de la luz de casa, en donde el accionamiento permanece hasta que no se vuelve a accionar. En un pulsador, por contra, su activación dura mientras lo mantenemos pulsado y vuelve a su estado de reposo en cuanto dejemos de pulsarlo.

Mediante la configuración adecuada podemos convertir un pulsador en un elemento de entrada a algún pin de nuestra placa UNO. Las configuraciones más básicas posibles con pulsadores las podemos ver en la imagen siguiente.

Configuración circuito elemental con pulsador
Configuración circuito elemental con pulsador

Concepto de variable y de contador

El concepto de variable en programación consiste simplemente en asignarle un nombre significativo a un espacio de memoria donde almacenar determinada información durante la ejecución normal del programa. El concepto es muy amplio y complejo y en nuestro caso no vamos a entrar en detalles sobre el mismo, pero si indicar que no se debe confundir con el concepto de variable matemática, ya que una expresión como x = x + 1 que es una aberración en matemáticas tiene todo el sentido en programación. Lógicamente en matemáticas no se puede cumplir pero en programación significa que a la variable x se le sume uno y el resultado se vuelva a guardar en la misma variable.

En ArduinoBlocks podemos crear tres tipos de variables, numéricas, de texto o booleanas. En la animación siguiente podemos ver como se pueden crear, eliminar y renombrar variables.

Crear, renombrar y eliminar variables

En programación, llamamos contador a una variable cuyo valor se incrementa o decrementa en un valor fijo para cada iteración del bucle para el que se ha definido. El uso habitual de un contador es simplemente contar el número de veces que itera un bucle en general o de forma mas extensa contar, solamente, aquellas iteraciones en las que se cumpla una determinada condición.

Por ejemplo, supongamos que tenemos una variable de nombre Estado de valor inicial cero y que se incremente cada vez que accionamos un pulsador, de esta forma si en un bucle vamos incrementando la variable de uno en uno, tenemos:

Estado = 0 // valor inicial

Estado = 1 // Estado = Estado + 1

Estado = 2 // Estado = Estado + 1

...

Condicionales

Las sentencias condicionales son aquellas que nos permiten tomar decisiones en función de si ocurre o no ocurre determinada cosa. En el caso de ArduinoBlocks estas las podemos encontrar en el bloque lógica. Este bloque contiene los elementos que vemos en la imagen siguiente:

Bloque lógica
Bloque lógica

El funcionamiento es el siguiente: se evalúa la condición que ponemos en "si" y si el resultado es verdadero, o sea condición cierta, se realizan las acciones que pongamos en "hacer" y si no es cierta dichas acciones no se realizan. En el apartado condición se pueden poner infinidad de factores como pueden ser el estado de sensores, realizar comparaciones, hacer operaciones matemáticas, etc. Lógicamente el resultado de evaluar la condición debe ser verdadero o falso lo que se resuelve en el caso de la programación en Arduino diciendo que si el resultado es 0, el resultado de la evaluciación es falso y si es 1 o cualquier otro valor es verdero.

Si hemos sido observadores hemos visto en los bloques "si" de "Lógica" un signo mas (+) en la parte superior izquierda tanto del condicional "if" como la del "if ... else" tal y como se destaca en la imagen siguiente.

Añadir opciones else if
Añadir opciones else if

Cada vez que pulsemos sobre el signo mas se añadirá una cláusula "else if" a la principal y podemos añadir tantas como necesitemos. Esta cláusula nos va a permitir establecer una nueva condición.En la imagen siguiente vemos añadidas dos para el caso de "if ... else". En la imagen observamos el código equivalente y las distintas condiciones que se pueden establecer.

Clausula if...else con dos else if
Clausula if...else con dos else if

El signo menos (-) que aparece en la imagen sirve para eliminar la correspondiente cláusula "else if".

Actividad A03_1

En esta actividad haremos un sencillo programa que encienda el LED amarillo (D5) cuando pulsemos el pulsador de la izquierda (D4). En la Figura 3.4.1 vemos el programa completo. La solución la tenemos disponible en Smart-home-A03_1.

Solución A03_1

Figura 3.4.1. Solución A03_1

Actividad A03_2

En esta actividad haremos el mismo programa que en la anterior, pero utilizando la clausula else. En la Figura 3.4.2 vemos el programa completo. La solución la tenemos disponible en Smart-home-A03_2.

Solución A03_2

Figura 3.4.2. Solución A03_2

Actividad A03_3

Resolver la actividad A03_2 de forma que el funcionamiento sea al contrario, es decir, que el LED amarillo esté siempre encendido y al accionar el pulsador izquierdo se apague. La solución la tenemos disponible en Smart-home-A03_3.

Solución A03_3

Figura 3.4.3. Solución A03_3

Actividad A03_4

Hacer un programa que al accionar el pulsador izquierdo se encienda el LED amarillo y que al accionar el pulsador derecho (8) se apague. Como ampliación se sugiere modificar el programa para que encienda y apague los dos LEDs blanco y amarillo a un tiempo o de forma alternada. La solución la tenemos disponible en Smart-home-A03_4. La solución en esta ocasión está en utilizar el operador NOT y el operador AND. Para obtener mas información sobre operadores lógicos podemos ir al enlace.

Solución A03_4

Figura 3.4.4. Solución A03_4

Actividad A03_5

Hacer un programa que emita, usando uno de los pulsadores como si fuese un telégrafo, el código Morse universal de solicitud de socorro, SOS.

El alfabeto Morse lo vemos en la Figura 3.4.5, donde podemos observar que la S son tres puntos o pulsaciones cortas y la O son tres rayas o pulsaciones largas. Sin entrar en mas detalles daremos la solución considerando SOS como una palabra (es lo universalmente adoptado) de forma que no haremos pausas entre letras.

Alfabeto Morse

Figura 3.4.5. Alfabeto Morse

La solución la tenemos disponible en Smart-home-A03_5.

Solución A03_5

Figura 3.4.6. Solución A03_5

Actividad A03_6

Hacer un programa que al accionar el pulsador izquierdo encienda el LED amarillo y que este permanezca encendido hasta que no accionemos el mismo pulsador dos veces mas (3 pulsaciones en total), en cuyo caso se apagará. La solución la tenemos disponible en Smart-home-A03_6.

Solución A03_6

Figura 3.4.7. Solución A03_6