Para los LEDs , la manera obvia de hacerlo es tener una salida para cada fila y cada columna del tablero de ajedrez: un total de 8 + 8 = 16 pines. Los ánodos se conectarán a los cables de la fila y los cátodos al cable de la columna. Para el LED que desea encender, haría que su cable de ánodo sea positivo (lógica 1) y su cable de cátodo negativo (lógica 0), mientras mantiene los otros en el estado inverso (por lo tanto, los LED restantes tienen polarización inversa o neutral).
Supongo que el microcontrolador proporciona un voltaje suficientemente alto / bajo para que pueda conectar un LED de uno a otro. Si ese no es el caso, necesitará un Transistor o buffer para cada línea. Con el suministro de 5 V está apretado, considerando que el LED cae aproximadamente 2 V y desea una caída de voltaje razonable sobre su resistencia limitadora actual (tenga en cuenta que solo necesita instalarlos en las filas o en las líneas de la columna, no en ambas).
Si sus salidas son tri estado (es decir, además de la lógica 0 y la lógica 1, se pueden configurar en un estado de alta impedancia, quizás configurándolas temporalmente como entradas). póngase listo y use una cuadrícula de 4x8, con los LED conectados en pares antiparalelos. Es importante configurar las salidas no utilizadas a alta impedancia en esta configuración, de lo contrario los LED no deseados se encenderán.
En cualquier caso, tendrá que pensar en el dibujo actual , y si es aceptable arriesgar la posibilidad de que un error del software encienda todos los LED seguidos al mismo tiempo (que si no se tiene en cuenta, podría sobrecorriente esa línea de fila del microcontrolador.)
El caso de los sensores es más complicado. Supondré que usas sensores resistivos, aunque no se garantiza necesariamente que los fototransistores conduzcan en una sola dirección.
Puede usar las mismas salidas de 8 filas que utiliza para encender sus LED, pero necesitará 8 entradas de columna dedicadas a la detección. Sin duda, habrá visto circuitos para teclados de esta manera. Tenga en cuenta que están solo diseñados para tener una tecla presionada a la vez . Si el usuario presiona 1,3,7 y 9 juntos, el teclado no puede detectar si el usuario libera una de estas cuatro teclas porque todavía existe una ruta actual a través de los otros tres interruptores.
Una solución utilizada en los teclados musicales (que están diseñados para tener más de un elemento de conducción de la matriz a la vez) es tener un diodo en serie con todos y cada uno de los interruptores.
Otra solución sería comprar cuatro circuitos integrados decodificadores de 4 a 16 con salidas de colector abiertas (o abrir drenaje si se usan circuitos integrados MOSFET) como este: enlace Colector abierto significa que las salidas del IC solo tomarán corriente, no la fuente. De este modo, puede conectar 16 sensores a 16 salidas del chip y los otros extremos en común con una resistencia de extracción (también conectaría su ADC aquí). Si baja una salida (conductora) y las otras 15 permanecen altas (no conductora). Esto contrasta con la salida lógica estándar, donde las otras 15 salidas estarían vertiendo corriente en el punto común.
La entrada a estos IC es de 4 bits binarios para seleccionar una de las 16 salidas, pero también tiene una entrada adicional para habilitar / deshabilitar el chip. Por lo tanto, es posible que tenga un conjunto de 64 lavamanos abiertos, conectados a 64 sensores, con los otros extremos de los sensores en común a una sola resistencia pullup y un convertidor analógico a digital. Necesitaría un total de 8 salidas en su microcontrolador para esto: cuatro para tomar las señales de selección de 4 a 16 (comunes a los cuatro chips) y cuatro para tomar las señales de habilitación (una para cada chip).
EDITAR: 3 a 8 decodificadores (también llamados 1 de 8 = 1 línea de 8) parecen estar más disponibles que 4 a 16, pero 8 IC es mucho más desordenado que 4. Otro tipo de IC que podría ser útil es el contador octal (y su primo más común, el contador de décadas , que puede configurarse como un contador octal al conectar su novena salida a la línea de reinicio.) Estos requieren un impulso en serie para avanzar de una salida a la siguiente, por lo que necesitarían menos pines de E / S en el microcontrolador que los IC del decodificador. Por lo general, tienen entradas adicionales para restablecer y habilitar. También hay IC llamados registros de desplazamiento , que están disponibles en dos tipos: uno para convertir series en paralelo, y el otro para convertir en paralelo a series. Finalmente, hay buffers , que puede colocar entre su Rasberry Pi y su tablero de ajedrez para que el Pi no se destruya en caso de sobrecorriente. Todos estos pueden ser útiles en circuitos de multiplexación.