Arduino UNO R4 - Botão - LED

Este tutorial ensina como usar o Arduino UNO R4 e um botão para controlar um LED. Vamos aprender duas maneiras diferentes de fazer isso:

Aplicação 1 - O LED acompanha o estado do botão:

Aplicação 2 - O LED muda de estado cada vez que o botão é pressionado:

Para a 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 LED com e sem debounce no código Arduino.

Arduino UNO R4 controla LED

Sobre o LED e o Botão

Se você não conhece o LED 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 Botão e LED com Arduino UNO R4

This image is created using Fritzing. Click to enlarge image

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

Aplicação 1 - O LED acompanha o estado do botão

Código Arduino UNO R4

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-button-led */ #define BUTTON_PIN 7 // The Arduino UNO R4 pin connected to the button #define LED_PIN 3 // The Arduino UNO R4 pin connected to the LED void setup() { Serial.begin(9600); // initialize serial pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode pinMode(LED_PIN, OUTPUT); // set arduino pin to output mode } void loop() { int buttonState = digitalRead(BUTTON_PIN); // read new state if (buttonState == LOW) { Serial.println("The button is being pressed"); digitalWrite(LED_PIN, HIGH); // turn on } else if (buttonState == HIGH) { Serial.println("The button is unpressed"); digitalWrite(LED_PIN, LOW); // turn off } }

Passos Rápidos

Siga estas instruções passo a passo:

  • Se esta é a sua primeira vez usando o Arduino Uno R4 WiFi/Minima, consulte o tutorial sobre como configurar o ambiente para o Arduino Uno R4 WiFi/Minima na Arduino IDE.
  • Faça a ligação dos componentes de acordo com o diagrama fornecido.
  • Conecte a placa Arduino Uno R4 ao seu computador usando um cabo USB.
  • Abra a Arduino IDE no seu computador.
  • Selecione a placa Arduino Uno R4 apropriada (por exemplo, Arduino Uno R4 WiFi) e a porta COM.
  • Copie o código e abra-o na Arduino IDE.
  • Clique no botão Upload na Arduino IDE para compilar e enviar o código ao Arduino UNO R4.
Enviar código para o Arduino pela Arduino IDE
  • Pressione o botão e mantenha-o pressionado por alguns segundos.
  • Observe a mudança no estado do LED.

Você vai ver que o estado do LED fica sincronizado com o estado do botão.

Explicação do Código

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

Aplicação 2 - O LED muda de estado cada vez que o botão é pressionado

Código Arduino UNO R4 - Botão Alterna o LED Sem Debounce

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-button-led */ #define BUTTON_PIN 7 // The Arduino UNO R4 pin connected to the button #define LED_PIN 3 // The Arduino UNO R4 pin connected to the LED int led_state = LOW; // the current state of LED int button_state; // the current state of button int prev_button_state; // the previous state of button void setup() { Serial.begin(9600); // initialize serial pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode pinMode(LED_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 LED led_state = !led_state; // control LED arccoding to the toggled state digitalWrite(LED_PIN, led_state); } }

Explicação do Código

Você encontra a explicação nas linhas de comentário do código Arduino UNO R4 acima.

No código, a expressão led_state = !led_state equivale ao código a seguir:

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

Passos Rápidos

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

Você pode notar que o LED muda toda vez que o botão é pressionado. Porém, isso nem sempre funciona perfeitamente. Às vezes, o LED muda muitas vezes rapidamente quando você pressiona o botão uma única vez, ou não muda nada (ele muda duas vezes muito rápido, o que é difícil de ver).

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

Código Arduino UNO R4 - Botão Alterna o LED Com Debounce

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

Por que o debounce é necessário? Veja o Arduino UNO R4 - Tutorial de Debounce de Botão para saber mais.

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-button-led */ #include <ezButton.h> #define BUTTON_PIN 7 // The Arduino UNO R4 pin connected to the button #define LED_PIN 3 // The Arduino UNO R4 pin connected to the LED ezButton button(BUTTON_PIN); // create ezButton object that attach to pin 7; int led_state = LOW; // the current state of LED void setup() { Serial.begin(9600); // initialize serial pinMode(LED_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 LED led_state = !led_state; // control LED arccoding to the toggleed sate digitalWrite(LED_PIN, led_state); } }

Passos Rápidos

  • Instale a biblioteca ezButton. Consulte a biblioteca ezButton para ver as instruções.
  • Copie o código e abra-o na Arduino IDE.
  • Clique no botão Upload na Arduino IDE para enviar o código ao Arduino UNO R4.
  • Pressione e solte o botão várias vezes.
  • Observe a mudança no estado do LED.

Você vai ver que o estado do LED é alternado exatamente uma vez a cada vez que o botão é pressionado.

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!