Arduino UNO R4 - Botão - Servo Motor

Neste tutorial, vamos aprender a controlar um servo motor com um botão usando um Arduino Uno R4. Ao pressionar o botão, o servo motor gira para 90 graus, e ao pressioná-lo de novo, ele volta para 0 grau. Esse processo se repete cada vez que o botão é pressionado.

O tutorial é dividido em duas seções:

Este projeto é ótimo para iniciantes entenderem o controle de servo motor, as entradas de botão e as técnicas de debounce com o Arduino Uno R4.

Sobre o Servo Motor e o Botão

Se você não conhece servo motores e botões, incluindo a pinagem, como funcionam ou como programá-los, consulte os tutoriais a seguir para mais informações.

Diagrama de Ligação

Diagrama de Ligação do Botão e Servo Motor 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.

Código Arduino UNO R4 - Botão Controla o Servo Motor 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-servo-motor */ #include <Servo.h> #define BUTTON_PIN 7 // The Arduino Uno R4 pin connected to button's pin #define SERVO_PIN 9 // The Arduino Uno R4 pin connected to servo motor's pin Servo servo; // create servo object to control a servo int angle = 0; // the current angle of servo motor 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 servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object servo.write(angle); 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"); // change angle of servo motor if(angle == 0) angle = 90; else if(angle == 90) angle = 0; // control servo motor arccoding to the angle servo.write(angle); } }

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 e cole o código acima na Arduino IDE.
  • Clique no botão Upload na Arduino IDE para enviar o código ao Arduino UNO R4.
  • Pressione o botão várias vezes.
  • Observe o movimento do servo motor.

※ Nota:

Às vezes o código acima não funciona direito. Para garantir que ele sempre funcione corretamente, precisamos usar o debounce do botão. O debounce de botão pode ser difícil para iniciantes. No entanto, com a ajuda da biblioteca ezButton, fica muito mais fácil.

Código Arduino UNO R4 - Botão Controla o Servo Motor Com Debounce

Por que o debounce é importante? ⇒ veja o Arduino UNO R4 - Tutorial de Debounce de Botão

/* * 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-servo-motor */ #include <Servo.h> #include <ezButton.h> #define BUTTON_PIN 7 // The Arduino Uno R4 pin connected to button's pin #define SERVO_PIN 9 // The Arduino Uno R4 pin connected to servo motor's pin ezButton button(BUTTON_PIN); // create ezButton object that attach to pin 7; Servo servo; // create servo object to control a servo int angle = 0; // the current angle of servo motor void setup() { Serial.begin(9600); // initialize serial button.setDebounceTime(50); // set debounce time to 50 milliseconds servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object servo.write(angle); } void loop() { button.loop(); // MUST call the loop() function first if(button.isPressed()) { Serial.println("The button is pressed"); // change angle of servo motor if(angle == 0) angle = 90; else if(angle == 90) angle = 0; // control servo motor arccoding to the angle servo.write(angle); } }

Passos Rápidos

  • Instale a biblioteca ezButton. Veja o Como Fazer
  • 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 o botão várias vezes
  • Observe como o servo motor se move

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!