Arduino - Botão Controla Fechadura Eletromagnética

Neste tutorial, vamos aprender a usar o Arduino e um botão para controlar a fechadura eletromagnética. Quando o botão é pressionado, o Arduino desativa a fechadura eletromagnética para destrancar a porta por um certo tempo (por exemplo, 10 segundos). Depois disso, o Arduino ativa a fechadura eletromagnética para trancar a porta.

Vamos aprender em duas etapas, do fácil ao difícil:

Sobre o Botão e a Fechadura Eletromagnética

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

Diagrama de Ligação

Diagrama de Ligação do Botão e Fechadura Eletromagnética com Arduino

This image is created using Fritzing. Click to enlarge image

Código Arduino - Botão Controla Fechadura Eletromagnética 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-controls-electromagnetic-lock */ // 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 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 digitalWrite(RELAY_PIN, HIGH); // lock the door 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"); digitalWrite(RELAY_PIN, LOW); // unlock the door in 10 seconds delay(10000); // 10 seconds digitalWrite(RELAY_PIN, HIGH); // lock the door again } }

Passos Rápidos

  • Conecte o Arduino ao PC via cabo USB
  • Abra o Arduino IDE, selecione a placa e a porta corretas
  • Copie o código acima e abra com o Arduino IDE
  • Clique no botão Upload no Arduino IDE para carregar o código no Arduino
  • Coloque a placa de armadura perto do eletroímã.
  • Pressione o botão uma vez.
  • Veja a atração entre a placa de armadura e o eletroímã durante 10 segundos.

Explicação do Código

Leia a explicação linha por linha nas linhas de comentário do código!

※ 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 Controla Fechadura Eletromagnética 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-controls-electromagnetic-lock */ #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; 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 digitalWrite(RELAY_PIN, HIGH); // lock the door } void loop() { button.loop(); // MUST call the loop() function first if(button.isPressed()) { Serial.println("The button is pressed"); digitalWrite(RELAY_PIN, LOW); // unlock the door in 10 seconds delay(10000); // 10 seconds digitalWrite(RELAY_PIN, HIGH); // lock the door again } }

Passos Rápidos

  • Instale a biblioteca ezButton. Veja Como Fazer
  • Copie o código acima e abra com o Arduino IDE
  • Clique no botão Upload no Arduino IDE para carregar o código no Arduino
  • Coloque a placa de armadura perto do eletroímã.
  • Pressione o botão uma vez.
  • Veja a atração entre a placa de armadura e o eletroímã durante 10 segundos.

※ Nota:

No código acima, usamos a função delay. Por isso, não precisamos fazer debounce do botão. No entanto, ainda fornecemos o código com debounce para o caso de você querer realizar mais tarefas sem usar a função delay. Veja Como usar millis() em vez de delay()

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!