16. Indicador de ascensor - angelmicelti/Aprendiz-de-Maker GitHub Wiki
En una conocida cadena de hoteles encontré un indicador en la parte superior de los ascensores que se podía implementar fácilmente con electrónica asequible al nivel de E.S.O.
Dejo aquí unos bocetos:


Diseños con Inkscape
Con esta distribución se indican en el ascensor la subida y la bajada del mismo:
Yo he ampliado la funcionalidad, añadiendo las figuras de izquierda y derecha:
Carcasa
He construido una sencilla carcasa formada por dos triángulos equiláteros encajados a media pieza a la altura de los puntos medios de dos lados.
En el centro se nos forma un rombo, en el que voy a alojar dos ledes.

El desarrollo de las dos piezas necesarias puede verse a continuación:

Tienes el archivo DXF disponible en este enlace.
He construido ambas piezas en cartón, reciclando una caja de medicamentos:

Para cerrar, por la parte superior, he fabricado una tapa de plástico de 6x6 cm:

Placa electrónica
He implementado el circuito con 6 ledes, unos pines a 90º y unas resistencias SIL de 220 ohmios, lo cual nos da suficiente para conectar a Arduino o a una FPGA del tipo Alhambra II.
Vista anterior

Vista posterior

Circuito lógico
Tabla de verdad
Asocio a cada uno de los cuatro pulsadores una variable lógica: U, D, L y R (respectivamente, arriba, abajo, izquierda y derecha). Las salidas (a, b, c, d y e) corresponderán a los ledes que forman parte del indicador.
| n | U | D | L | R | a | b | c | d | e | f |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 |
| 2 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 |
| 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 8 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 |
| 9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 10 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 13 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 14 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Una vez que tengo esta tabla de verdad, simplifico las funciones lógicas (a, b, c, d, e y f) para obtener lo siguiente:

implemento con puertas lógicas, utilizando el simulador Digital, para que me quede el siguiente esquema:

Implementación en IceStudio y FPGA.
Finalmente, traslado la implementación a una FPGA Alhambra II y construyo el circuito lógico empleando IceStudio, el software para programar dicha FPGA.

Puedes descargar el archivo de IceStudio en este enlace.
Vídeo
Y aquí tenemos el montaje funcionando:

Explicación del vídeo:
He conectado los cuatro pulsadores U, D, L y R a los puertos D13, D12, D11 y D10 de la FPGA. Así mismo, he colocado los seis ledes (nombrados como a, b, c, d, e y f) a los pines D5, D4, D3, D2, D1 y D0 de la placa.