Conectando botões do tipo Push Buttons com o Arduino | Magos do Arduino


Magos do Arduino

Botões do tipo push button

Entenda como funciona e aprenda a usar botões do tipo push buttons com o Arduino

Magos do Arduino

Como funcionam os push buttons

Os botões de push buttons possui 4 conexões.

Push Button

As duas da direita são conectadas, o mesmo aplica-se às da esquerda.

Ao pressionar o botão, as conexões da direita e da esquerda se conectam.

O que significam resistores de Pull Up e Pull Down

Os microcontroladores trabalham com valores 0 e 1, ou 0v e 5v.

Ao conectarmos botões, é importante NÃO manter estados flutuantes, portanto sempre devemos estar conectados a 0v ou 5v.

Pull Up e Pull Down é uma técnica para atender a essa necessidade, fazendo o uso de um resistor conectado ao 5v (Pull Up) ou 0v/GND (Pull Down).

Pull Up é simples de implementar no Arduino porque ele possui um resistor Pull UP internamente que pode ser habilitado via código.

Debouncing

Outro aspecto importante ao trabalhar com botões é fazer o uso da técnica chamada de debouncing.

Debouncing é uma técnica utilizada para gerar um atraso assim que pressionamos o botão.

Isso é importante pois ao pressionarmos um botão, ele pode gerar múltiplos cliques.

No Arduino podemos fazer o debouncing usando a função delay.

Conectando o push button com o Arduino

Neste projeto você criará dois circuitos que fazem uso de resistores Pull Up e Pull Down.

Para a criação deste circuito serão necessários os seguintes componentes:

  • 1x breadboard
  • 1x Arduino UNO
  • 1x Push button
  • 1x Resistor de 10k para o circuito Pull Down
  • Jumpers

Circuito com push button Pull Up

Para montar o circuito, visualize na imagem a seguir como conectar os componentes entre a placa Arduino e a breadboard.

Repare que neste circuito de Pull Up não usamos nenhum resistor na breadboard, e isso se deve ao fato de que a placa Arduino possui internamente conectado aos pinos de GPIO um resistor de 10k, portanto o Pull Up é feito de modo interno e não no nosso circuito.

Circuito Push Button Pull Up

Schematics do LED

A seguir temos o schematics do circuito, que detalha suas conexões e fornece detalhes mais específicos do que o circuito da imagem anterior.

Schematics LED

Código fonte para circuito Pull Up

Uma vez criado o circuito, use o código fonte a seguir no Arduino IDE para fazer o upload dele na placa Arduino e assim ver o resultado do circuito em funcionamento.

// define o pino onde será conectado o push button
#define BTN_PIN 2 

void setup() {
    pinMode(BTN_PIN, INPUT_PULLUP); // inicializa o pino do push button como pull up
    pinMode(LED_BUILTIN, OUTPUT); // inicializa o led da placa Arduino como saída
}

void loop() {
    int valorBtn = digitalRead(BTN_PIN); // faz a leitura do estado corrente do push button

    if (valorBtn == HIGH) { // caso não pressionado 
    digitalWrite(LED_BUILTIN, LOW); // led apagado
    } else { // caso push button pressionado
    digitalWrite(LED_BUILTIN, HIGH); // acende o led
    }
}

Circuito com push button Pull Down

Para montar o circuito, visualize na imagem a seguir como conectar os componentes entre a placa Arduino e a breadboard.

Repare que neste circuito de Pull Down usamos um resistor de 10k na breadboard ligado ao terra/gnd, fazendo com que o estado do push button quando solto será Low/baixo (0V).

Circuito Push Button Pull Up

Schematics do LED

A seguir temos o schematics do circuito, que detalha suas conexões e fornece detalhes mais específicos do que o circuito da imagem anterior.

Schematics LED

Código fonte para circuito Pull Down

Uma vez criado o circuito, use o código fonte a seguir no Arduino IDE para fazer o upload dele na placa Arduino e assim ver o resultado do circuito em funcionamento.

// define o pino onde será conectado o push button
#define BTN_PIN 2

void setup() {
    pinMode(LED_BUILTIN, OUTPUT); // inicializa o led como output/saída
    pinMode(BTN_PIN, INPUT); // inicializa o pino do push button da placa Arduino como input/entrada
}

void loop() {
    int valorBtn = digitalRead(BTN_PIN); // faz a leitura do estado corrente do push button

    if (valorBtn == HIGH) { // caso push button pressionado
    digitalWrite(LED_BUILTIN, HIGH); // acende o led
    } else { // caso não pressionado
    digitalWrite(LED_BUILTIN, LOW); // led apagado
    }
}