Arduino Nano - Botão - Relé

Este tutorial ensina você a usar o Arduino Nano e um botão para controlar o relé. Ao conectar o relé a uma trava solenoide, lâmpada, fita LED, motor ou atuador..., podemos usar um botão para controlá-los. Vamos aprender duas aplicações diferentes:

Aplicação 1 - O estado do relé é sincronizado com o estado do botão. Em detalhes:

Aplicação 2 - O estado do relé é alternado cada vez que o botão é pressionado. Mais especificamente:

Na Aplicação 2, precisamos fazer o debounce do botão para garantir que ele funcione corretamente. Vamos ver por que isso é importante comparando o comportamento do relé quando usamos o código Arduino com e sem debounce do botão.

Sobre o Relé e o Botão

Se você não conhece o relé e o botão (incluindo pinagem, funcionamento e programação), os tutoriais a seguir podem ajudar:

Diagrama de Ligação

Diagrama de ligação do Arduino Nano com botão e relé

This image is created using Fritzing. Click to enlarge image

Veja A melhor forma de alimentar o Arduino Nano e outros componentes.

Aplicação 1 - O estado do relé está sincronizado com o estado do botão

Código Arduino Nano

/* * Este código de Arduino Nano foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano/arduino-nano-button-relay */ const int BUTTON_PIN = 8; // The Arduino Nano pin connected to button's pin const int RELAY_PIN = 2; // The Arduino Nano pin connected to relay's pin void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode } void loop() { int button_state = digitalRead(BUTTON_PIN); // read new state if (button_state == LOW) { Serial.println("The button is being pressed"); digitalWrite(RELAY_PIN, HIGH); // turn on } else if (button_state == HIGH) { Serial.println("The button is unpressed"); digitalWrite(RELAY_PIN, LOW); // turn off } }

Passos Rápidos

  • Conecte um Arduino Nano ao seu computador com um cabo USB.
  • Abra o Arduino IDE e selecione a placa e a porta corretas.
  • Copie o código e abra-o no Arduino IDE.
  • Clique no botão Upload do Arduino IDE para compilar e fazer o upload do código para o Arduino Nano.
Arduino IDE Upload Code
  • Pressione o botão e segure-o por alguns segundos.
  • Observe a mudança no estado do relé.

Você vai ver que o estado do relé está sincronizado com o estado do botão.

Explicação do Código

Veja a explicação linha por linha contida nos comentários do código-fonte!

Aplicação 2 - O botão alterna o Relé

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

/* * Este código de Arduino Nano foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano/arduino-nano-button-relay */ const int BUTTON_PIN = 8; // The Arduino Nano pin connected to button's pin const int RELAY_PIN = 2; // The Arduino Nano pin connected to relay's pin int relay_state = LOW; // The current state of relay int prev_button_state; // The previous state of button int button_state; // The current state of button void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if(prev_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); // toggle state of relay relay_state = !relay_state; // control relay according to the toggled state digitalWrite(RELAY_PIN, relay_state); } }

Explicação do Código

Você pode encontrar a explicação nas linhas de comentário do código do Arduino Nano acima.

No código, a expressão relay_state = !relay_state é equivalente ao código a seguir:

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

Passos Rápidos

  • Copie o código e abra-o no Arduino IDE.
  • Faça o upload do código para o Arduino Nano.
  • Pressione e solte o botão várias vezes.
  • Observe a mudança no estado do relé.

Você pode notar que o relé liga ou desliga toda vez que você pressiona o botão, mas isso nem sempre acontece da mesma forma. Às vezes ele pode alternar rapidamente várias vezes com apenas um pressionamento do botão, ou pode não alternar de forma alguma (alternar duas vezes muito rápido, o que não dá para ver a olho nu).

⇒ Para resolver esse problema, precisamos fazer o debounce do botão.

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

Fazer o debounce de um botão pode ser desafiador para iniciantes. Felizmente, a biblioteca ezButton torna isso fácil.

Por que o debounce é necessário? Veja o Arduino Nano - Tutorial de Debounce de Botão para mais informações.

/* * Este código de Arduino Nano foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano/arduino-nano-button-relay */ #include <ezButton.h> const int BUTTON_PIN = 8; // The Arduino Nano pin connected to button's pin const int RELAY_PIN = 2; // The Arduino Nano pin connected to relay's pin ezButton button(BUTTON_PIN); // create ezButton object for pin 7; int relay_state = LOW; // The current state of relay void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. 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 relay_state = !relay_state; // control relay according to the toggled state digitalWrite(RELAY_PIN, relay_state); } }

Passos Rápidos

  • Instale a biblioteca ezButton. Consulte o Como Fazer para ver as instruções.
  • Copie o código e abra-o com o Arduino IDE.
  • Clique no botão Upload do Arduino IDE para fazer o upload do código para o Arduino Nano.
  • Pressione e solte o botão várias vezes.
  • Observe a mudança no estado do relé.

Você vai notar que o relé liga ou desliga apenas uma vez sempre que você pressiona o botão.

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!