Para un mapa de aventuras, estoy construyendo una sala de biblioteca con una puerta de pistón oculta que se abre al introducir el código de acceso correcto de 4 dígitos. El código de acceso se implementará insertando libros en las ranuras correctas de cada una de las 4 estanterías cinceladas separadas. Para probar el concepto, primero he construido una versión simplificada del circuito en un mundo superplano: sólo comprueba si un dígito es igual a 5 y enciende una lámpara de piedra roja si es así.
El circuito funciona, pero ocupa mucho espacio. Aquí hay una vista aérea con anotaciones - debajo de la imagen describiré lo que hace cada parte con más detalle.
Para diferenciarlos de los comparadores, he etiquetado todos los repetidores en la foto con " R ."
La señal que sale de la parte posterior de la estantería cuando se inserta el libro correcto debe tener un valor exactamente igual a 5. Esto significa comprobar las dos condiciones (s >= 5) y (s <= 5) . El primer comparador sólo emite una señal si el valor de la estantería es >= 5 . El segundo comparador está dos bloques más lejos, por lo que comprueba s <= (5 - 2) .
El siguiente paso es tomar ambos resultados y enviarlos a una puerta AND (marcada en naranja). En (s <= 5) si es verdadera, apaga el comparador inhibidor mientras que la condición (s >= 5) si es verdadera, enciende el comparador de activación. Entonces, ambas condiciones deben cumplirse para que se envíe una señal a la lámpara para encenderla.
La imagen muestra el resultado después de insertar un libro en la ranura correcta (#5) para que la lámpara esté encendida.
Me resulta difícil evitar que las trayectorias de las dos condiciones se crucen demasiado pronto. Para solucionarlo, uno de ellos pasa por encima del otro en un "paso elevado", pero eso añade un requisito de espacio vertical para la construcción. Las comparaciones de valores fijos (a valores de señal de 5 y 3, respectivamente, que ocupan 11 y 13 bloques) también parecen ineficientes.
¿Tiene alguna sugerencia para mejorarlo?