fbpx
ArduinoNovidadeSérie ArduinoSimulação

Como utilizar botão push button como interruptor para ligar LED com Arduino

O botão push button é um interruptor pulsador que conduz corrente elétrica apenas quando pressionado. Este componente eletrônico é muito utilizado na prototipagem de projetos eletrônicos tanto na protoboard quanto soldado na placa de circuito impresso, acionando um circuito elétrico.

A imagem mostra ilustra um botão Push Button na cor preta (chave táctil).
Figura 1: Botão push button (chave táctil).

No tutorial Ligar e Desligar LED com Botão com Arduino aprendemos como ligar ou desligar um LED com botão do tipo push button. No entanto, você deve ter percebido que o LED só permanece acionado enquanto mantemos o botão pressionado.

Neste tutorial, utilizaremos o botão push button como um interruptor, de modo que uma vez pressionado o LED continue ligado até que ele seja pressionado novamente. Para tal, utilizaremos a estrutura de repetição if…else (Se/senão) e o operador booleano NÃO lógico.


MATERIAIS NECESSÁRIOS

1 x Placa UNO SMD R3 Atmega328 compatível com Arduino UNO;
1 x Cabo USB;
1 x Protoboard;
1 x Resistor de 200 Ω ou 220 Ω;
1 x Resistor de 10 kΩ;
1 x Botão tipo push button;
1 x LED vermelho difuso de 5 mm;
Fios de jumper macho-macho.


ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES

inicialmente, certifique-se que a sua placa Arduino esteja desligada. Em seguida, monte o circuito utilizando o LED, os resistores e o botão.

Ao montar seu circuito na protoboard preste atenção nos seguintes pontos:

• O terminal mais longo do LED (ânodo) encontra-se conectado a um resistor de 220 Ω e a porta digital 10 da placa UNO. O terminal mais curto do LED (cátodo) deve ser conectado ao GND;
• O botão possui 4 terminais que são interligados aos pares, de modo que quando pressionada os 4 são conectados gerando continuidade no circuito;
• O botão deve ser montado com dois terminais abaixo da cavidade central da protoboard e os outros dois acima;
• Vamos conectar o push button com um resistor de 10 kΩ pull-down (resistor conectado no GND). Desta forma, quando o botão estiver pressionado a placa UNO retornará nível lógico alto (HIGH).

Após a montagem do circuito, certifique-se de que todas as ligações estão corretas e, então, conecte sua placa Arduino ao computador para realizar a programação.


ELABORANDO O CÓDIGO

Com o circuito montado, vamos a programação do nosso Sketch. O intuito deste projeto é utilizar o botão push button como um interruptor para acionar ou desligar um LED. Vamos entender a lógica de programação deste projeto com os seguintes pontos:

1. Declarar as variáveis

Para este projeto precisamos declarar 4 variáveis. Desta forma, atribuímos a porta digital 7, em que o botão está conectado, a variável buttonPin. Definimos a porta digital 10, em que o LED está conectado, a variável ledPin. Criamos a variável estadoButton, do tipo int, para armazenar o estado (HIGH ou LOW) do botão. Por fim, criamos a variável estadoLed, do tipo bool, para armazenar o estado do LED, inicializando-a como false. Uma variável do tipo bool é utilizada quando precisamos armazenar dois valores true (verdadeiro) ou false (falso).

2. Configurar o pino de entrada

A porta 10 (ledPin) deve ser configurada como saída e a porta 7 (buttonPin) deve ser configurada como entrada.

3. Realizar a leitura da porta digital:

Iniciamos o loop() realizando a leitura da porta digital 7 (buttonPin), para isso utilizaremos a função digitalRead(buttonPin), e armazenaremos este valor na variável estadoButton.

4. Realizar comparações

Neste projeto utilizaremos a estrutura de repetição if…else realizando múltiplos testes agrupados.

Inicialmente, precisamos comparar se a variável estadoButton encontra-se em nível alto (chave pressionada). Uma vez pressionado o botão, a variável estadoButton muda seu estado para HIGH, a condição do if será satisfeita e o estado da variável estadoLed deverá ser invertida através da instrução: estadoLed = !estadoLed;, ou seja, passará de false para true ou de true para false.

Em seguida, iremos comparar se estadoLed é igual a true. Se esta condição for satisfeita o LED deve ser ligado, através do comando digitalWrite(ledPin, HIGH);. Senão, o LED deve ser desligado por meio da instrução digitalWrite(ledPin, LOW);.

Desta forma, o Sketch deste projeto ficará da seguinte maneira:

/*
  -- COMO UTILIZAR O PUSH BUTTON COMO INTERRUPTOR --
  ==================================================
  == BLOG DA ROBOTICA - www.blogdarobotica.com ==
  ==================================================
  Autora: Carol Correia Viana
  E-mail: contato@blogdarobotica.com
  Facebook: facebook.com/blogdarobotica
  Instagram:@blogdarobotica
  YouTube: youtube.com/user/blogdarobotica
  ==================================================
*/

int buttonPin = 7;//Define buttonPin no pino digital 7
int ledPin = 10;//Define ledPin no pino digital 10
int estadoButton = 0;//Variável responsável por armazenar o estado do botão (ligado/desligado)
bool estadoLed = false;//Variável booleana responsável por armazenar o estado do LED (ligado = true/desligado = false)

void setup() {
  pinMode(ledPin, OUTPUT);//Define ledPin (pino 10) como saída
  pinMode(buttonPin, INPUT);//Define buttonPin (pino 7) como entrada
}

void loop() {
  estadoButton = digitalRead(buttonPin);//Lê o valor de buttonPin e armazena em estadoButton
  if (estadoButton == HIGH) { //Se estadoButton for igual a HIGH ou 1
    estadoLed = !estadoLed;//Inverte estadoLed
    delay(500);//Intervalo de 0,5 segundos
  }
  if (estadoLed == true) { //Se estadoLed for igual a true (verdadeiro)
    digitalWrite(ledPin, HIGH);//Define ledPin como HIGH, ligando o LED
  }
  else { //Senão
    digitalWrite(ledPin, LOW);//Define ledPin como LOW, desligando o LED
  }
}

Obrigado a todos e qualquer dúvida deixe nos comentários abaixo!

Abraços,

Carol Correia Viana

Dúvidas? Deixe seu comentário

Carol Correia Viana

Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.

Deixe uma pergunta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.