Botão de pressão: como usar este elemento simples com Arduino

botão

Un botão de pressão é um botão que permite interromper ou enviar um sinal eletrônico. Com este elemento simples combinado com outros elementos, você pode criar projetos para uma infinidade de aplicativos. O uso deste tipo de botão é muito comum quando se trata de projetos Arduino. E combinando vários desses botões você pode criar um teclado um pouco mais complexo, embora já existam teclados programáveis ​​para esses usos ...

By the way, você não deve confundir o botão de pressão com um interruptor. São coisas totalmente diferentes. A diferença é que a chave ou chave é ativada ou desativada a cada pressionamento feito nele. Enquanto o botão de pressão ficará apenas em um estado enquanto a pressão estiver sendo exercida sobre ele. Já comentei que pode enviar ou interromper, isso porque existem dois tipos fundamentais de botões.

símbolo do botão de pressão

Existir NÃO ou botões normalmente abertos e NF ou normalmente fechados. Isso também soará para você a partir dos relés. E sim, é exatamente a mesma operação. Quando você tem um NC, ele deixa a corrente passar por seus terminais e só interrompe enquanto você o pressiona. Por outro lado, o NA não deixa a corrente passar quando não há pressão sobre ela e só a deixa passar quando você a pressiona.

Sabendo que, é quase tudo que você precisa saber sobre um botão de pressão para iniciar sua conexão e programação usando o Arduino. A verdade é que se trata de um elemento tão simples que não há muito mais a dizer sobre este tipo de botões.

Integração de botão de pressão com Arduino

circuito com Arduino

La conectando um botão de pressão fazer com que ele interaja com o Arduino não poderia ser mais simples. Um exemplo é o diagrama que você pode ver nessas linhas. Isso seria o suficiente para começar a experimentar. Mas é claro que, com esse esquema, você pouco pode fazer. Seria necessário você colocar um pouco de imaginação para decidir o que aquele botão vai controlar. Na verdade, se você lê hwlibre.es com frequência, já deve ter visto alguns artigos onde usamos botões de pressão ...

Maneiras de conectá-lo

pull-up e pull-down

Uma coisa que você deve saber é a questão do anti-salto e como conectar esses botões. Primeiro, vamos para a maneira de conectá-los, que você já sabe que pode ser com os resistores pull-up e pull-down:

  • Puxar para cima- Com esta configuração de resistor, quando o botão é pressionado, o microcontrolador ou Arduino pode ver ou ler um zero naquele pino. Ou seja, ele o interpreta como um sinal BAIXO.
  • Puxar para baixo: Neste caso é o oposto, você pode ler ou receber um sinal 1 ou HIGH através do pino conectado.

Não confunda com o NC ou NA, que é outra coisa diferente, como vimos anteriormente. Isso é independente do outro ...

Anti-Bounce

Os botões têm um efeito rebote quando pressionado. Ou seja, ao ser pressionado ou liberado, há uma flutuação no sinal que passa por seus contatos e pode fazer com que passe de um estado ALTO para BAIXO ou vice-versa sem realmente querer que isso aconteça. Isso pode produzir um efeito indesejado no Arduino e fazer com que ele faça coisas estranhas, como ativar um elemento quando realmente queríamos desligá-lo com o botão de pressão, etc. Isso porque o Arduino interpreta os saltos como se tivesse sido pressionado mais de uma vez ...

Esse efeito negativo tem uma solução. Para tal, deve ser implementado um pequeno condensador no circuito anti-bounce (método de hardware) ou software (modificando o código fonte), quer tenha sido utilizada configuração pull-up ou pull-down ou se é NF ou NÃO. Em todos esses casos, a solução deve ser implementada para evitar esses rebotes.

Por exemplo, circuitos pull-up e pull-down com o capacitor anti-salto eles seriam parecidos com isto:

rebote

Enquanto o método de software Isso pode ser visto neste snippet de código:

if (digitalRead (botão) == LOW) // Verifique se o botão está pressionado
{
pressionado = 1; // A variável muda de valor
}
if (digitalRead (botão de pressão) == HIGH && pressionado == 1)
{
// Execute a ação desejada
pressionado = 0; // A variável retorna ao seu valor original
}

Exemplo de projeto simples

anti-salto com botão de pressão e Arduino

Depois de aprendermos o assunto das maneiras de conectar nosso botão de pressão e o circuito anti-ressalto, veremos um exemplo prático para controlar um LED com o botão de pressão. O esquema é igualmente simples, como você pode ver.

Uma vez conectado corretamente, o próximo passo é escrever o código no Arduino IDE para programar seu painel e começar a experimentar os botões. Um exemplo de código simples para controlar nosso circuito seria o seguinte:

// Exemplo de esboço para controlar o botão
pino interno = 2;
estado interno;
pulsante int = 0;
configuração vazia ()

{
pinMode (2, INPUT); // Para ler o pulso fazendo a entrada do pino

pinMode (13, OUTPUT); // Para o LED

Serial.begin (9600);
}
void loop ()

{
if (digitalRead (2) == HIGH)

{

pino = 2;

antiBounce (); // Chamada para a função anti-salto

}
}
// Função anti-salto de software
void anti-bounce ()

{
enquanto (digitalRead (pin) == LOW);
estado = digitalRead (13);
digitalWrite (13, estado!);
enquanto (digitalRead (pin) == HIGH);

}


5 comentários, deixe o seu

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Marcelo Castillo placeholder image dito

    Frio!!! Muito obrigado, tenho construído um CNC e, paradoxalmente, os botões têm sido as coisas mais difíceis de ajustar.

  2.   Liliana dito

    Oi! Consulto como novato, na conexão com o GND… ..o fio preto não deve sair da linha negativa, que está localizada acima da mostrada no diagrama 2?

  3.   Giovanni dito

    Excelente explicação .. alguns anos atrás eu fiz um projeto de ignição de carro e a verdade é que nunca consegui digitar corretamente. Para a ignição .. Vou tentar este método. Muito obrigado por esta grande ajuda

  4.   Omar Romero Rincon dito

    Olá, estou fazendo um projeto com três botões e 5 leds com a seguinte sequência.
    1 botão envia um sinal para 2 LEDs, que chamei de 1 e 2.
    o segundo botão envia sinal para 3 LEDs, chamados 2,3 e 4.
    meu terceiro botão envia um sinal para outros 3 LEDs, chamados 3,4, 5 e XNUMX.

    Consegui fazer essa sequência, só tenho um problema, ao apertar 2 botões manda um sinal falso para o LED que deve ficar aceso fazendo com que pisque intermitentemente, controlei colocando um delay (de 2 segundos, que é o que eu preciso para que os LEDs fiquem acesos e depois desliguem. então minha pergunta é como posso colocar a função millis em meu programa, não entendo como funciona o millis, quero saber se você pode me ajudar fazendo um exemplo para 3 botões usando milis em cada um deles, preciso de milis para poder pressionar os botões a qualquer momento sem atrasar o arduino.

    1.    Isaac dito

      Oi Omar,
      Eu recomendo que você veja nosso tutorial do Arduino:
      https://www.hwlibre.com/programacion-en-arduino/
      E você também pode ver nosso artigo sobre millis ():
      https://www.hwlibre.com/millis-arduino/
      Uma saudação.