O Bounce de contato, a rápida troca on-off de um interruptor mecânico devido ao seu movimento físico, é um problema comum no teclado e outros dispositivos de entrada baseados em comutador. Quando várias teclas são pressionadas simultaneamente (uma situação comum), o contato entre o salto em cada tecla pode levar a vários sinais espúrios que estão sendo registrados, resultando em entrada incorreta. Superar isso requer soluções de hardware e software.
Soluções de hardware: *
circuitos de debouning: Esta é a abordagem de hardware mais comum. Eles essencialmente suavizam as rápidas transições on-off do interruptor. Existem vários tipos:
*
circuitos RC (Capacitor resistor): Um circuito RC simples atua como um filtro passa-baixo. O capacitor cobra lentamente, ignorando efetivamente os saltos rápidos após a pressão inicial. A constante de tempo (RC) é escolhida para ser longa o suficiente para filtrar o salto, mas curto o suficiente para não atrasar as teclas legítimas. Esta é uma solução econômica, mas sua eficácia depende das características do interruptor.
*
Schmitt Trigger: Este circuito é mais sofisticado e tem um efeito de histerese. Requer uma tensão mais alta para ligar do que desligar, ignorando as pequenas variações de tensão causadas pelo salto. Isso fornece um sinal mais limpo com uma transição mais nítida.
* Microcontroladores
com recursos internos de debouning: Muitos microcontroladores modernos têm funcionalidades internas de debouscing, simplificando o design de hardware. Eles costumam usar temporizadores ou manuseio de insumos especializados para detectar estados estáveis.
*
Melhorias mecânicas: Embora não seja estritamente uma solução de circuito, o uso de comutadores mecânicos de alta qualidade com projetos de contato melhores reduz inerentemente o salto. Esses interruptores geralmente são mais caros. Os teclados da membrana, que não possuem partes móveis físicas, não sofrem de salto de contato.
Soluções de software: *
Debouncing de software: Mesmo com o debounding de hardware, algum salto residual pode permanecer. Os algoritmos de software podem mitigar ainda mais isso. Estes normalmente envolvem:
*
Timers: A abordagem mais simples é verificar o estado-chave após um pequeno atraso (por exemplo, 10-20 milissegundos). Se o estado for consistente após esse atraso, o KeyPress será considerado válido.
*
Máquinas de estado: Máquinas de estado mais complexas podem lidar com cenários mais sofisticados, como distinguir entre uma única pressionamento de teclas e várias prensas rápidas (destinadas a um comando repetido).
*
Algoritmos de filtragem: Técnicas mais avançadas de filtragem de software, como médias móveis ou filtros medianos, podem suavizar o sinal de entrada, reduzindo os efeitos das remanescentes.
Superando teclas simultâneas: O manuseio de várias teclas pressionado simultaneamente (uma combinação de teclas, como Ctrl+C) requer considerações adicionais além de simplesmente debitando as chaves individuais.
* Teclados da matriz: Em vez de interruptores individuais para cada tecla, muitos teclados utilizam um layout da matriz. Linhas e colunas são digitalizadas para determinar qual tecla é pressionada. Isso permite inerentemente a detecção de prensas de teclas simultâneas. O software precisa interpretar a combinação de linhas e colunas ativas.
*
Pesquisa vs. interrupções: A pesquisa envolve verificando periodicamente os estados-chave, enquanto a entrada orientada por interrupções lida com cada tecla Pressione como uma interrupção. As interrupções podem levar a uma maior capacidade de resposta, mas podem exigir um manuseio cuidadoso para evitar condições de corrida quando várias chaves são pressionadas simultaneamente.
*
Filas/buffers de chave: O software geralmente utiliza filas ou buffers para armazenar temporariamente as teclas. Isso lida com situações em que várias chaves são pressionadas quase simultaneamente, garantindo que todos os presságio de chave sejam registrados na ordem correta.
Na prática, uma solução robusta geralmente combina debousing de hardware e software. Um circuito RC simples pode lidar com a maior parte do salto, com o software lidando com qualquer ruído residual ou aspectos de tempo mais sofisticados. A escolha da abordagem de hardware e software depende das restrições, orçamento e requisitos de desempenho do aplicativo. Para aplicações simples, uma solução somente para software pode ser suficiente. Para aplicações exigentes, como jogos ou controle industrial, geralmente são necessárias soluções de hardware mais robustas.