Para os LEDs , a maneira óbvia de fazer isso é ter uma saída para cada linha e cada coluna do tabuleiro de xadrez: um total de 8 + 8 = 16 pinos. Os anodos seriam conectados aos fios da linha e os catodos ao fio da coluna. Para o LED que você deseja acender, você tornaria o fio do ânodo positivo (lógica 1) e o fio do cátodo negativo (lógica 0), mantendo os outros no estado reverso (para que os demais LEDs tenham polarização neutra ou reversa).
Estou assumindo aqui que o microcontolador fornece voltagens suficientemente altas / baixas para que você possa conectar um LED de um para outro. Se não for esse o caso, você precisará de um transistor ou buffer para cada linha. Com a alimentação de 5V, é apertado, considerando que o LED cai cerca de 2V e você deseja uma queda de tensão razoável em relação ao seu resistor limitador de corrente (observe que você só precisa instalá-los nas linhas de linha ou nas linhas de coluna, não em ambas).
Se suas saídas forem tri-state (ou seja, além da lógica 0 e lógica 1, elas podem ser definidas para um estado de alta impedância, talvez configurando-as temporariamente como entradas), você poderá ficar esperto e usar uma grade 4x8, com LEDs. conectados em pares antiparalelos. É importante definir saídas não utilizadas com alta impedância nesta configuração, caso contrário, os LEDs indesejados acenderão.
Em qualquer um dos casos, você terá que pensar no desenho atual e se é aceitável arriscar a possibilidade de um erro de software acender todos os LEDs em uma fileira ao mesmo tempo (que, se não for considerada, pode sobrecorrente dessa linha do microcontrolador .)
O caso dos sensores é mais complicado. Eu vou assumir que você usa sensores resistivos, embora os fototransistores não sejam necessariamente garantidos para conduzir em apenas uma direção.
Você pode usar as mesmas saídas de 8 linhas usadas para iluminar seus LEDs, mas precisará de 8 entradas de coluna dedicadas à detecção. Você, sem dúvida, já viu circuitos para teclados como este. Lembre-se de que eles foram projetados apenas para pressionar uma tecla de cada vez . Se o usuário pressionar 1,3,7 e 9 juntos, o teclado não poderá detectar se o usuário libera alguma dessas quatro teclas, porque ainda existe um caminho atual pelos outros três comutadores.
Uma solução usada em teclados musicais (projetados para ter mais de um elemento da matriz conduzindo por vez) é ter um diodo em série com cada comutador.
Outra solução seria comprar quatro CIs decodificadores de 4 a 16 com saídas de coletor aberto (ou dreno aberto se estiver usando ICs MOSFET) como este: http://www.unicornelectronics.com/ftp/Data%20Sheets/74159.pdf Coletor aberto significa que as saídas do IC apenas afundam a corrente, não a fonte. Assim, você pode conectar 16 sensores a 16 saídas do chip, e as outras extremidades comuns, juntamente com um resistor de pullup (você conectaria seu ADC aqui também). Você reduz uma saída (condução) e as outras 15 permanecem altas (não condutivas). Isso contrasta com a saída lógica padrão, onde as outras 15 saídas estariam despejando corrente no ponto comum.
A entrada para esses ICs é binária de 4 bits para selecionar uma das 16 saídas, mas eles também têm uma entrada extra para ativar / desativar o chip. Assim, você poderia ter um conjunto de 64 coletores de coletores abertos, conectados a 64 sensores, com as outras extremidades dos sensores comuns a um único resistor de pullup e conversor de analógico para digital. Você precisaria de um total de 8 saídas no seu microcontrolador para isso: quatro para receber os sinais de seleção de 4 a 16 (comuns a todos os quatro chips) e quatro para receber os sinais de ativação (um para cada chip).
EDIT: 3 a 8 decodificadores (também chamados de 1 de 8 = 1 linha de 8) parecem estar mais disponíveis que 4 a 16, mas 8 ICs são muito mais confusos que 4. Outro tipo de IC que pode ser útil é o contador octal (e seu primo mais comum, o contador de décadas , que pode ser configurado como um contador octal conectando sua nona saída à linha de redefinição.) Isso requer que um pulso serial avance de uma saída para a próxima, portanto, seria necessário menos Pinos de E / S no microcontrolador que os CIs do decodificador. Eles normalmente têm entradas adicionais para redefinir e ativar. Existem também os chamados registradores de deslocamento de IC , disponíveis em dois tipos: um para converter séries em paralelo e outro para converter paralelos em séries. Finalmente, existembuffers , que você pode colocar entre o Rasberry Pi e o tabuleiro de xadrez para que o Pi não seja destruído em caso de sobrecorrente. Tudo isso pode ser útil em circuitos de multiplexação.