(Logo, pesquisa)

Cursos Materiais Sobre Contato

Utilização de Botão (pushbutton) com Arduino

 

(Quem diabos é pull-up e pull-down?)

Introdução

Se você está começando com Arduino e decidiu usar um botão em seu projeto, provavelmente já se deparou com termos como "resistor pull-up" e "resistor pull-down". E a primeira reação costuma ser: "Quem diabos são esses dois?"

Este artigo vai te explicar — de forma clara, prática e com um toque de humor — como usar botões com Arduino e o que realmente significam essas tal de pull-up e pull-down. Prometemos: no final, você nunca mais vai deixar um pino flutuando por aí.


O Que é um Botão no Arduino?

Um botão (ou push-button) é um simples dispositivo de entrada que, quando pressionado, fecha um circuito, permitindo que a corrente elétrica passe. Em termos de Arduino, usamos um botão para enviar um sinal digital (0 ou 1) para a placa.

A ideia é simples: quando pressionado, o botão envia um sinal para um pino do Arduino. Mas o problema começa quando você liga um botão ao Arduino sem os cuidados necessários. O pino começa a “flutuar”.


Pinos Flutuantes: O Que É Isso?

Imagine um pino de entrada sem nenhuma referência elétrica — nem ligado ao GND (0V) nem ao VCC (5V). Ele fica indeciso, instável, e o Arduino pode ler qualquer coisa: ora 1, ora 0, mesmo sem você apertar o botão.

Resultado: o botão parece "assombrado", acionando sozinho. Para resolver isso, entram em cena os resistores de pull-up e pull-down.


Quem São Pull-Up e Pull-Down?

Pull-up e pull-down são técnicas de conexão com resistores para manter um pino em estado estável (HIGH ou LOW) quando o botão não está pressionado.

Fonte: AutoCore Robótica


1. Pull-down resistor

  • Conecta o pino ao GND através de um resistor.

  • Mantém o pino em nível lógico BAIXO (0) por padrão.

  • Quando o botão é pressionado, ele liga o pino ao VCC, colocando o valor em ALTO (1)


2. Pull-up resistor

  • Conecta o pino ao VCC através de um resistor.

  • Mantém o pino em nível lógico ALTO (1) por padrão.

  • Quando o botão é pressionado, ele liga o pino ao GND, colocando o valor em BAIXO (0).


2. Pull-up interno

  • Conecta o GND direto do botão para o pino,

  • Utiliza uma declaração na linha de programação na função setup. EXEMPLO:

                        pinMode(13, INPUT_PULLUP);
  • Quando o botão é pressionado, ele liga o pino ao GND, colocando o valor em BAIXO (0).


Qual Usar? Pull-Up ou Pull-Down?

Por padrão, a maioria dos projetos com Arduino usa pull-up, porque:

  • O Arduino já tem resistores pull-up internos;

  • Economiza componentes;

  • Evita leituras instáveis sem muito esforço.


Exemplo de Código com Pull-Down




PROGRAMAÇÃO


int estadoBotao = 0;

void setup()
{
  pinMode(2, INPUT); //Declara pino 2 como entrada
  pinMode(LED_BUILTIN, OUTPUT); //Declara o pino 13 (do LED interno) como saída
}

void loop()
{
  // Lê o estado do botão pela entrada digital 2
  estadoBotao = digitalRead(2);
  // Checa se botão está pressionado.  Se sim,
  // estadoBotao é HIGH (alto ou 1)
  if (estadoBotao == HIGH) {
    // liga o LED
    digitalWrite(LED_BUILTIN, HIGH);
  } else {
    // desliga o LED
    digitalWrite(LED_BUILTIN, LOW);
  }
  delay(10); // Um pouco de delay para melhorar simulação
}


Dica: O Botão Está "Invertido"?

Sim, com pull-up interno o botão é "ativo em LOW" — ou seja, é pressionado quando o pino vai para 0. Parece estranho, mas é perfeitamente normal.


Conclusão

Pull-up e pull-down podem parecer assustadores no início, mas são apenas resistores que ajudam o Arduino a decidir o que está acontecendo no pino de entrada quando nada está sendo pressionado. E se você entendeu a lógica, nunca mais vai deixar seus pinos flutuando por aí, causando bugs e sustos no meio do projeto.

Então da próxima vez que alguém te perguntar “quem diabos é pull-up?”, você já pode responder: "O cara que mantém a ordem quando ninguém mais está no circuito."