Su mención de los interruptores "analógicos" es engañosa. Aparentemente desea leer una matriz de conmutadores de palanca de 18 x 16. Deberías haber dicho esto por adelantado.
Sí, en el caso de fuerza bruta, esto requeriría 288 líneas de entrada al microcontrolador. Sin embargo, puede hacer algo llamado multiplexación . Ya que sus interruptores están dispuestos físicamente en un patrón de 18 x 16, y eso es casi óptimo de todos modos, usted los organiza eléctricamente en una matriz X-Y. Esto solo requiere 18 + 16 líneas en lugar de 18 x 16 líneas.
Digamos que tienes 18 columnas y 16 filas. Cada uno de los 18 cables de la columna está conectado a un lado de los interruptores en su columna. Las líneas de fila están conectadas a los otros lados de los interruptores en su fila. Al encender un interruptor, por lo tanto, se corta una línea de columna en una línea de fila.
Dado que 16 es un buen número de bits para leer al mismo tiempo, haremos una secuencia a través de las columnas. Imagine que el firmware eleva una de las líneas de columna a la vez, con descensos débiles en las líneas de fila. Si un interruptor está activado, elevará su línea de fila cuando se active su línea de columna. Las secuencias de firmware a través de las líneas de columna, y lee las líneas de fila por separado para cada columna.
Esa es la idea básica, pero no funciona de forma eléctrica, al menos no si más de un interruptor podría estar encendido a la vez. Los interruptores funcionan en ambos sentidos. Si un interruptor está activado, su línea de fila se eleva cuando se activa su columna. Sin embargo, cualquier otro interruptor cerrado en esa fila ahora eleva su línea de columna, lo que puede aumentar otras líneas de fila, etc.
La solución es hacer que los switches sean unidireccionales. Esto se hace poniendo un diodo en serie con cada uno. El diodo permite que un interruptor cerrado aumente su línea de fila cuando su línea de columna es alta, pero hace que sea imposible levantar una línea de fila desde una línea de columna alta, independientemente del estado del interruptor.