Cerradura de combinación

Cerradura de combinación

Una cerradura con combinación. Hay que configurar un código de 5 dígitos utilizando los LEDs para abrirlo.

Difícil

2 Unidades clase

a partir de los 10 años

Historia

Con los 25 LEDs en el Calliope se puede construir una gran cerradura de combinación.
El programa debe habilitar la entrada de código con los 2 botones. El botón A conmuta a través de las columnas (= dígito del código), el botón B se utiliza para ajustar el valor del dígito del código actual (entre 0 y 4).

Al principio está el código
Primero definimos la combinación correcta de números como "cadena de caracteres", dibujamos el primer píxel en la esquina superior izquierda y fijamos el color del LED en rojo ("el bloqueo está cerrado"). Ajustamos la velocidad a un valor alto para que los pitidos sean agradablemente cortos:

Conmutación a través de las columnas
Ahora nos aseguramos de que al pulsar la tecla A, la columna que se va a configurar en ese momento esté activada. Además, cambiamos el valor de la columna actualmente editada a 0, de modo que siempre empezamos por arriba al introducir los valores:

Si el marcador de posición "edit_column" es mayor que 4, tenemos que ponerlo a 0, porque sólo tenemos 5 columnas (0,1,2,3,4):

Finalmente apagaremos todos los LEDs de la columna a la que acabamos de cambiar. Luego dejamos que el valor actual de la columna parpadee 3 veces brevemente:

Fijar el valor de la columna
El valor debe incrementarse en 1 cada vez que se pulse el botón. De nuevo empezamos en 0 si el valor es mayor que 4.Antes de la subida apagamos el LED del valor anterior, después de la subida encendemos el LED con el nuevo valor ajustado:

Ahora sólo tienes que comprobar si el código es correcto y luego girar el LED verde!
Cada vez que un programador dice esta frase, tiene el 20% de la tarea hecha - ¡ahora se está complicando!
Para comprobar si el código se introdujo correctamente, pasaremos por las columnas y comprobaremos si el valor establecido corresponde al valor de la cadena de soluciones (que definimos cuando iniciamos el programa) en la posición correspondiente.
Así que ponemos el contador "code_correct" a 0, y comprobamos todas las columnas en un bucle. Para ello, primero establecemos un marcador de posición en el que extraemos el número de la cadena de solución para la columna actual. Se utiliza el bloque "carácter en posición" para obtener el carácter en la posición de la columna. Dado que se trata de un carácter, y queremos compararlo con un número, este carácter debe convertirse en un número. Esto se hace mediante el bloque "Parse to integer":

Ahora pasaremos por todas las filas de la columna actual. Si el LED de una fila está encendido (punto x y - el bloque es "true"), miramos si la fila coincide con la "solución de la columna" determinada en el paso anterior, y contamos el marcador de posición code_correct arriba por 1.

Ahora sólo tenemos que comprobar (¡esta vez realmente!) si todas las columnas se han introducido correctamente. Este es el caso si el marcador de posición code_correct tiene el valor 5! Señalamos la tarea correcta ajustando el LED de color a verde. En la rama de otra manera de la comparación ponemos rojo. Esto sucede cuando la entrada de código es cambiada por los botones y ya no corresponde a la solución.

En lugar de ajustar el color del LED, ahora puede utilizar los pines para controlar algo que abre y cierra algo "real", por ejemplo, con un servo.

Esquemas

Este texto también se publica bajo el epígrafe CC BY-SA 3.0 DE license. It was originally publicado Germanpor Daniel Havlik y traducido al inglés por el Calliope equipo.

Usted puede encontrar el archivo terminado a continuación.

El programa se puede abrir directamente con el editor MakeCode.

hex