Arduino - Botão Alterna Relé

Em um tutorial anterior, aprendemos a ligar o relé quando o botão é pressionado e desligar o relé quando o botão é solto. Neste tutorial, vamos aprender a alternar o relé a cada vez que o botão é pressionado.

Conectando o relé a uma lâmpada, fita LED, motor ou atuador... podemos usar o botão para alternar a lâmpada, fita LED, motor ou atuador...

O tutorial inclui duas partes principais:

Sobre Relé e Botão

Se você não conhece o relé e o botão (pinagem, como funcionam, como programar...), aprenda sobre eles nos seguintes tutoriais:

Diagrama de Ligação

Diagrama de Ligação Arduino Botão Relé

This image is created using Fritzing. Click to enlarge image

Código Arduino - Botão Alterna Relé Sem Debounce

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-button-toggle-relay */ // constants won't change const int BUTTON_PIN = 7; // Arduino pin connected to button's pin const int RELAY_PIN = 3; // Arduino pin connected to relay's pin // variables will change: int relayState = LOW; // the current state of relay int lastButtonState; // the previous state of button int currentButtonState; // the current state of button void setup() { Serial.begin(9600); // initialize serial pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode currentButtonState = digitalRead(BUTTON_PIN); } void loop() { lastButtonState = currentButtonState; // save the last state currentButtonState = digitalRead(BUTTON_PIN); // read new state if(lastButtonState == HIGH && currentButtonState == LOW) { Serial.println("The button is pressed"); // toggle state of relay relayState = !relayState; // control relay arccoding to the toggled state digitalWrite(RELAY_PIN, relayState); } }

Passos Rápidos

  • Conecte o Arduino ao PC via cabo USB
  • Abra a Arduino IDE, selecione a placa e a porta corretas
  • Copie o código acima e abra com a Arduino IDE
  • Clique no botão Upload na Arduino IDE para carregar o código no Arduino
  • Mantenha o botão pressionado por alguns segundos e depois solte-o.
  • Veja a mudança do estado do relé

Explicação do Código

Leia a explicação linha por linha nos comentários do código!

No código, relayState = !relayState é equivalente ao seguinte código:

if(relayState == LOW) relayState = HIGH; else relayState = LOW;

※ Nota:

Na prática, o código acima às vezes não funciona corretamente. Para que ele sempre funcione corretamente, precisamos fazer o debounce do botão. Fazer o debounce do botão não é fácil para iniciantes. Felizmente, graças à biblioteca ezButton, podemos fazer isso facilmente.

Código Arduino - Botão Alterna Relé Com Debounce

Por que precisamos de debounce? ⇒ veja o tutorial Arduino - Debounce de Botão

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-button-toggle-relay */ #include <ezButton.h> // constants won't change const int BUTTON_PIN = 7; // Arduino pin connected to button's pin const int RELAY_PIN = 3; // Arduino pin connected to relay's pin ezButton button(BUTTON_PIN); // create ezButton object that attach to pin 7; // variables will change: int relayState = LOW; // the current state of relay void setup() { Serial.begin(9600); // initialize serial pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if(button.isPressed()) { Serial.println("The button is pressed"); // toggle state of relay relayState = !relayState; // control relay arccoding to the toggled state digitalWrite(RELAY_PIN, relayState); } }

Passos Rápidos

  • Instale a biblioteca ezButton. Veja Como Fazer
  • Copie o código acima e abra com a Arduino IDE
  • Clique no botão Upload na Arduino IDE para carregar o código no Arduino
  • Pressione o botão várias vezes
  • Veja a mudança do estado do relé

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!