Para los LED , la forma obvia de hacer esto 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ían 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 a los demás en el estado inverso (por lo que los LED restantes tienen polarización neutral o inversa).
Aquí supongo que el microcontoller proporciona voltajes suficientemente altos / bajos 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 un suministro de 5 V es ajustado, teniendo en cuenta que el LED cae aproximadamente 2 V y desea una caída de voltaje razonable sobre su resistencia limitadora de corriente (tenga en cuenta que solo necesita instalarlos en las líneas de fila o en las líneas de columna, no en ambas).
Si sus salidas son de tres estados (es decir, además de la lógica 0 y la lógica 1, pueden configurarse en un estado de alta impedancia, quizás configurándolas temporalmente como entradas), entonces puede ser inteligente y usar una red 4x8, con LED conectados en pares antiparalelos. Es importante configurar las salidas no utilizadas a alta impedancia en esta configuración, de lo contrario se iluminarán los LED no deseados.
En cualquier caso, tendrá que pensar en el consumo actual , y si es aceptable arriesgarse a la posibilidad de un error de software al encender todos los LED en una fila a la vez (lo que, si no se tiene en cuenta, podría sobrecargar esa línea de fila del microcontrolador .)
El caso de los sensores es más complicado. Asumiré que usa sensores resistivos, aunque los fototransistores no están necesariamente garantizados para conducir en una sola dirección.
Puede usar las mismas salidas de 8 filas que usa para encender sus LED, pero necesitará 8 entradas de columna dedicadas a la detección. Sin duda, habrá visto circuitos para teclados como este. Tenga en cuenta que estos solo están diseñados para presionar una tecla a la vez . Si el usuario presiona 1,3,7 y 9 juntos, el teclado no puede detectar si el usuario suelta alguna 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 la matriz conduciendo a la vez) es tener un diodo en serie con cada interruptor.
Otra solución sería comprar cuatro CI decodificadores de 4 a 16 con salidas de colector abierto (o drenaje abierto si se utilizan circuitos integrados MOSFET) como este: http://www.unicornelectronics.com/ftp/Data%20Sheets/74159.pdf El colector abierto significa que las salidas del IC solo absorberán corriente, no la generarán. Por lo tanto, puede conectar 16 sensores a 16 salidas del chip, y poner en común los otros extremos junto con una resistencia pullup (también conectaría su ADC aquí). Trae una salida baja (conductora) y las otras 15 permanecen altas (no conductoras). Esto está en contraste 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 binaria de 4 bits para seleccionar una de las 16 salidas, pero también tienen una entrada adicional para habilitar / deshabilitar el chip. Por lo tanto, podría tener una matriz de 64 sumideros de colector abierto, conectados a 64 sensores, con los otros extremos de los sensores en común a una sola resistencia pullup y convertidor analógico a digital. Para esto, necesitaría un total de 8 salidas en su microcontrolador: 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 son mucho más desordenados que 4. Otro tipo de IC que podría ser útil es el contador octal (y su primo más común es el contador de década , que se puede configurar como un contador octal conectando su novena salida a la línea de reinicio). Estos requieren un pulso 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 CI del decodificador. Por lo general, tienen entradas adicionales para restablecer y habilitar. También hay llamadas registros de desplazamiento de IC , que están disponibles en dos tipos: uno para convertir series en paralelo, el otro para convertir paralelos en series. Finalmente haybuffers , que puedes poner entre tu Rasberry Pi y tu tablero de ajedrez para que el Pi no se destruya en caso de sobrecorriente. Todo esto puede ser útil en circuitos de multiplexación.