Skip to main content

MONTAJE 4 Interruptor luz

El anterior programa ya es un ejemplo de uso de estos botones digitales que están conectados a los pines digitales 2 y 3 de Arduino. Ten en cuenta que sólo pueden leer niveles lógicos.

RETO1MONTAJE4-ENCENDIDOAPAGADO

Al pulsar el botón D2 se enciende los 3 leds del Echidna y al soltarlo se apagan. El programa “tunealo”también tiene que tener un poco,efecto quitandoen un sprite

Solución con EchidnaScratch

Cambiamos el ososprite comodel disfrazgato por otro más acorde y añadiendocambiamos unel objetodisfraz, queno cambielo segúndesarrollamos D2aquí pues vimos cómo se hace con el MONTAJE1

2024-12-03 13_31_41-EchidnaML.png

El código :

2024-12-03 13_38_56-EchidnaML.png

El fichero lo tienes en el Github : https://github.com/JavierQuintana/Echidna

Solución con mBlock

Elegimos un objeto que cambie el disfraz, y le ponemos el código

echidna-d2-encendido-apagado1.png
Y al arduino:

echidna-d2-encendido-apagado2.png

El programa lo tienes aquí https://planet.mblock.cc/project/3228733

RETO2MONTAJE4-ENCENDIDOAPAGADO-AVANZADO

Al pulsar D2 tiene que encenderse los leds, y sólo se apagaran si se vuelve a pulsar D2. O sea, utilizar sólo un pulsador para encender y apagar los leds.

Solución EchidnaShield

En este caso creamos una variable ENCENDIDO que registra si están los leds y el sprite encendidos o no

El código es

2024-12-03 13_56_27-EchidnaML.png

Para evitar que el programa sea engorroso, se ha creado los bloques ENCENDER y APAGAR, pero perfectamente se puede meter estas instrucciones dentro del algoritmo principal y pasar de bloques.

FIJATE que la variable ENCENDIDO se cambia a 1 o a 0 para que refleje el estado en el que ha quedado el sistema

2024-12-03 13_58_18-EchidnaML.png

2024-12-03 13_58_49-EchidnaML.png

El programa lo tienes en : https://github.com/JavierQuintana/Echidna

Solución con mBlock
echidna-d2-encendido-apagado3.png

El objeto que cambia el disfraz es igual que en RETO1

El programa lo tienes aquí https://planet.mblock.cc/project/3228741

UNA CURIOSIDAD Fíjate como hay un retraso de 0.5 segundos para que "te de tiempo de apartar el dedo del pulsador" en caso contrario, volvería al otro estado. Si no sabes lo que quiero decir, quita la instrucciones "Espera 0.5 segundos" y verás qué pasa.

UN POCO DE PARÉNTESIS TEÓRICO Fíjate en el enunciado del RETO1: “al pulsar el botón D2 se enciende y al soltarlo se apaga” ES UNA MÁQUINA LÓGICA pues el estado de la máquina sólo depende de las entradas (en este caso de un botón): Pulsar la entrada (botón D2) produce una salida concreta (encender leds).

CONTINUAMOS ...

Pero tal y como está redactado, el RETO2 tiene que memorizar el estado anterior, no es trivial el enunciado “Al pulsar D2 tiene que encenderse los leds, y sólo se apagaran si se vuelve a pulsar D2.” ES UNA MÁQUINA SECUENCIAL pues el estado de la máquina depende de las entradas y de lo que ha pasado antes. Pulsar la entrada (botón D2) NO produce una salida concreta (depende si estaba apagado o encendido anteriormente).

No pasa nada si no lo entiendes del todo, es teoría.

La programación se complica necesitamos añadir una variable que recuerde lo que ha pasado antes la vamos a llamar _encendido _que recordará si está encendido los leds o no:

Muchos de nuestros aparatos electrónicos se encienden y se apagan con el mismo botón, así que a partir de ahora aprecia que su funcionamiento no es trivial.