Chaves Tácteis com apenas um pino analógico

chave táctil

 

O mais comum é vermos um conjunto de chaves/botões/teclas usando pinos digitais. Porém com apenas um pino analógico podemos ler o estado de algumas chaves utilizando o recurso divisor de tensão resistivo.

O problema é o acionamento combinado. Se a mão for trêmula não teremos uma leitura correta 🙂 . Brincadeiras a parte, dependendo da aplicação esta não é uma solução adequada e neste caso é melhor usar um teclado matricial, tanto é que nem vamos implementar os três botões simultâneos.

Neste projeto, vamos usar um divisor de tensão para gerar valores diferentes a cada botão pressionado. Com este recurso teremos como saída (Vout) uma fração da tensão de entrada (Vin), proporcional aos resistores em série (R1 e R2) dado por este circuito:

circuito_divisor_tensao
fonte Wikipedia

A tensão de saída será dada pela expressão:

fonte wikipedia
fonte wikipedia

A ligação na protoboard é bem simples. Vejam o esquema a seguir.

esquema

Funcionamento

Supondo que o botão 3 (B3) foi pressionado, teremos para R1 = 100K ohms e R2 = 100K ohms. A tensão de entrada é a do Arduino, ou seja 5V.

esquema

Aplicando a expressão (não esqueça de compatibilizar as unidades – volts e ohms):

Vsaida = 100000 / ( 100000 + 100000 ) . 5 = 2,5 volts

O retorno de um pino analógico varia de 0 a 1023, então para ficar mais simples os cálculos e não precisar ficar convertendo a leitura em volts faça da seguinte forma:

Valor pino = 100000 / ( 100000 + 100000 ) . 1024 = 512

Montando uma tabela botão pressionado x  leitura do pino analógico obtivemos os seguintes valores:

botão valor lido
1 932
2 696
3 512
1+2 947
1+3 940
2+3 777

Importante! Os valores obtidos da leitura e dos cálculos podem não ser os mesmos devido a  tolerância dos resistores e não se esqueçam que quando pressionamos mais de um botão ao mesmo tempo, os resistores (R1) ficam em paralelo.  Por exemplo: pressionando o botão 1 e 3 temos o seguinte resistor equivalente (RE)

1 / RE = (1 / 10000) + (1 / 100000)

RE = 1 / 0,0001 + 0,00001 = 9090 ohms

Aplicando a expressão

Valor pino = 100000 / (  9090 + 100000 ) . 1024 = 939 aproximadamente, que está próximo do valor obtido na tabela acima (940).

Montagem

Lista de material:

  • 3 chaves tácteis
  • 1 resistor de 10K ohms (marrom, preto e laranja)
  • 1 resistor de 40K ohms (amarelo, preto e laranja)
  • 1 resistor de 100K ohms (marrom, preto e amarelo)
  • 1 protoboard
  • fios jumpers
  • 1 Arduino (qualquer modelo)

sketch

Após montar o circuito, execute este sketch para obter os valores (como na tabela acima), pois como explicado anteriormente, devido a tolerância dos resistores os valores podem ser bem diferentes.

 

void setup() {
  Serial.begin(9600);
}
void loop() {
  int pinoBotao = analogRead(A0);
  Serial.println( pinoBotao );
}

 

Anote os valores para cada botão pressionado e altere os valores do array arrValores[] do sketch a seguir.

/* Exemplo usando divisores de tensao para leitura
  de botoes com apenas uma entrada analogica. */

int arrValores[] = { 932, 696, 512, 947, 940, 777 };

void setup() {
  Serial.begin(9600);
}

void loop() {
  int pinoBotao = analogRead(A0);
  for ( int indice = 0; indice <= 5; indice++ ) {
    if ( arrValores[ indice ] == pinoBotao ) {
      Serial.print("Botao \t");
      Serial.println( indice + 1 );
      delay(500); break;
    }
  }
}

 

Uma resposta para “Chaves Tácteis com apenas um pino analógico”

Deixe um comentário