Arduino Nano - Botão Controla a Trava Eletromagnética

O tutorial ensina como usar o Arduino Nano e um botão para controlar a trava de porta usando uma trava eletromagnética. Quando o botão é pressionado, a porta fica destrancada por um tempo específico (por exemplo, 10 segundos). Depois disso, ela é trancada novamente.

Vamos avançar em dois passos, do fácil ao difícil:

Sobre o Botão e a Trava Eletromagnética

Se você não conhece travas eletromagnéticas e botões (incluindo pinagens, funcionalidade e programação), os tutoriais a seguir podem ajudar:

Diagrama de Ligação

The wiring diagram between Arduino Nano and Button Electromagnetic Lock

This image is created using Fritzing. Click to enlarge image

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

Código Arduino Nano - Botão Controla a Trava Eletromagnética 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-control-electromagnetic-lock */ #define BUTTON_PIN 8 // The Arduino Nano pin connected to button's pin #define RELAY_PIN 2 // The Arduino Nano pin connected to relay's pin 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 digitalWrite(RELAY_PIN, HIGH); // lock the door 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"); 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 um Arduino Nano a um PC usando um cabo USB.
  • Abra a Arduino IDE e selecione a placa e a porta apropriadas.
  • Copie o código acima e abra-o na Arduino IDE.
  • Clique no botão Upload da Arduino IDE para fazer o upload do código para o Arduino Nano.
  • Coloque a placa de armadura perto do eletroímã.
  • Pressione o botão uma vez.
  • Observe a atração entre a placa de armadura e o eletroímã durante 10 segundos.

Explicação do Código

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

※ Nota:

Na prática, o código mencionado acima pode nem sempre funcionar corretamente. Para garantir seu funcionamento adequado, precisamos fazer o debounce do botão. Fazer o debounce do botão não é uma tarefa simples para iniciantes. No entanto, graças à biblioteca ezButton, isso pode ser feito com facilidade.

Código Arduino Nano - Botão Controla a Trava Eletromagnética Com Debounce

Por que o debounce é necessário?. Veja o Tutorial Arduino Nano - 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-control-electromagnetic-lock */ #include <ezButton.h> #define BUTTON_PIN 8 // The Arduino Nano pin connected to button's pin #define RELAY_PIN 2 // The Arduino Nano pin connected to relay's pin ezButton button(BUTTON_PIN); // create ezButton object for pin 7; 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 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. Consulte Como Fazer para ver as instruções.
  • Abra o código na Arduino IDE e clique no botão Upload para fazer o upload dele para o Arduino Nano.
  • Aproxime a placa de armadura do eletroímã e pressione o botão uma vez.
  • Observe a atração entre a placa de armadura e o eletroímã durante 10 segundos.

※ Nota:

No código acima, utilizamos a função delay. Por isso, não precisamos implementar o debounce do botão. Mesmo assim, também oferecemos o código com debounce, caso você queira executar outras tarefas sem usar a função delay. Consulte Como usar millis() em vez de delay() para mais informações.

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!