Sempre que for necessário coletar informações em campo, no chão de fábrica, ou mesmo passar “orientações” a um pequeno robô, podemos utilizar um teclado. Para enviar informações, ou instruções, utilizamos uma tecla ou um conjunto delas.
Quando temos uma ou poucas teclas a ideia inicial é termos uma I/O para cada tecla. Essa solução esbarra em 2 problemas
- Hardware: exige muitas I/Os
- Software: exige um consumo excessivo de software para leitura de teclas. Esse problema pode ser contornado pelo acionamento da leitura das teclas a uma interrupção externa.
Teclados matriciais.
Uma forma interessante foi associar as teclas em forma de matriz.
Essa solução diminui sensivelmente o número de I/Os utilizadas a medida que cresce o número de teclas. As mais populares utilizam grupos de 12 ou 16 teclas:
No diagrama abaixo temos um exemplo de implementação de um teclado matricial de 12 teclas.
Em termos de hardware temos uma redução de I/Os, sendo maior quanto o número de teclas (matriz maior). Para 12 teclas em forma de matriz temos 7 I/Os, sendo 4 linhas e 3 colunas.
Essa redução provoca um crescimento de software, pois a rotina de leitura.
O acionamento rotina de leitura pode ser associada a interrupção externa que exige uma I/O adicional (interrupção externa).
A rotina de leitura consiste em ativar uma das colunas (1) e deixar as outras desativadas (0). Desta forma inicia-se a varredura das linhas e identificar qual linha está ativada (1), desta maneira, pode-se identificar qual tecla foi pressionada. Na sequência deve-se repetir o processo para cada coluna. Ao final do processo é possível identificar a tecla pressionada.
Essa rotina torna-se extensa, mesmo que o número de teclas seja reduzido e acaba tornando o software extenso. Para o caso de teclas pressionadas simultaneamente a rotina trona-se ainda mais complexa.
Conversor A/D
Utilizando um conversor A/D o número de I/Os diminui a uma única entrada analógica, se o periférico existir no microcontrolador.
Um exemplo de solução é apresentada no livro “Micontroladores PIC18 – Aprenda e Programe em Linguagem C” de Alberto Noboru Miyadaira, página 281.
Dessa forma cada tecla pressionada produz uma tensão diferente na saída do circuito. A identificação passa apenas pela identificação da faixa de valores convertidos. Essa faixa deve ser criada pela tolerância dos componentes envolvidos. A escala de valores absolutos pode ser obtida a partir de uma simples simulação do circuito.
A questão de duas ou mais teclas pressionadas simultaneamente produz novos valores de tensão e por consequência novos valores obtidos no A/D, ou seja, basta adicionar novas faixas de pesquisa de acordo com as combinações desejadas.
A questão de isolação da rotina de leitura também é resolvida por uma interrupção externa.
Nenhum comentário:
Postar um comentário