Control a Servo Motor with a Push Button: Move Servo and Return SPB-1

Control a Servo Motor with a Push Button: Move Servo and Return SPB-1

In this tutorial, we will learn how to control a servo motor using a push button. When the button is pressed, the servo will move from its initial position to 180 degrees and return back. This project highlights the practical application of servos in various automation tasks, making it an essential skill for hobbyists and engineers alike. For a clearer understanding, you can also refer to the video (in video at 00:00).

Hardware Explained

The primary components used in this project are the servo motor and a push button. The servo motor is a specialized motor that can precisely control its position within a limited range, usually 0 to 180 degrees. It has three wires: ground, power (typically 5V), and a signal wire that receives control signals from the Arduino.

The push button serves as a simple input device that allows the user to interact with the system. When pressed, it sends a signal to the Arduino, which triggers the movement of the servo motor. This interaction is straightforward yet powerful, enabling various applications in robotics and automation.

Datasheet Details

ManufacturerGeneric
Part numberSG90
Logic/IO voltage5 V
Supply voltage4.8–6 V
Output current (per channel)~1 A
Peak current (per channel)~2 A
PWM frequency guidance50 Hz
Input logic thresholds0.2 V (LOW), 2.0 V (HIGH)
Voltage drop / RDS(on) / saturation~0.5 V
Thermal limits85 °C max
PackageStandard
Notes / variantsMetal gear versions available

  • Ensure voltage supply is within 4.8–6 V for optimal performance.
  • Connect the ground wire to the Arduino GND.
  • Use PWM-capable pins for signal input.
  • Monitor the servo's temperature; do not exceed 85 °C.
  • Use proper pull-up resistors when connecting buttons without built-in pull-ups.

Wiring Instructions

Arduino wiring for Servo motor with a push button
Arduino wiring for Servo motor with a push button

To wire the servo motor and push button, start by connecting the servo motor's ground wire (usually brown or black) to the GND pin on the Arduino. Next, connect the middle wire (typically red) to the 5V pin on the Arduino for power. The signal wire (often orange or yellow) should be connected to pin 3 on the Arduino.

For the push button, connect one pin to the GND and the other pin to pin 2 on the Arduino. This setup uses the internal pull-up resistor, so there’s no need for an external resistor. Ensure that the button is functioning properly by checking the connections before powering up the system.

Code Examples & Walkthrough

The program begins by including the Servo library, which simplifies the control of the servo motor. An instance of the Servo class is created named myservo, which will control the motor. The pin for the servo is defined as 3, and the push button pin is defined as 2.

#include 

Servo myservo;  // create servo object to control a servo
#define servoPin 3 //~
#define pushButtonPin 2 

int angle = 90;    // initial angle for servo (between 1 and 179)

In the setup function, we initialize the serial communication with Serial.begin(9600) and attach the servo to the defined pin. The initial position of the servo is set with myservo.write(angle), which places it at 90 degrees.

void setup() {
  Serial.begin(9600);          // setup serial
  myservo.attach(servoPin);  // attaches the servo on pin 3 to the servo object
  pinMode(pushButtonPin, INPUT_PULLUP);
  myservo.write(angle); // initial position
}

In the loop function, the program continuously checks the state of the push button. If the button is pressed, it updates the angle by adding angleStep. If the angle exceeds the defined limits, it reverses the direction of movement.

void loop() {
  if(digitalRead(pushButtonPin) == LOW){
    buttonPushed = 1;
  }
  if (buttonPushed) {
    angle += angleStep;
    if (angle >= maxAngle) {
      angleStep = -angleStep;
    }
    myservo.write(angle); // move the servo to desired angle
    delay(100); // waits for the servo to get there
  }
}

By using this code, the servo motor will respond to the push button, moving between the defined angles. If you want to see the complete code, it will load below the article.

Demonstration / What to Expect

When you press the button, the servo motor should move smoothly from its initial position to 180 degrees and then back to 0 degrees, depending on how you set the type variable. If the button is held down, the servo will continuously move in the specified direction until released. You may need to adjust the angleStep for different speeds (in video at 02:30).

Video Timestamps

  • 00:00 Start
  • 00:48 Introduction
  • 02:19 Servo motor explained
  • 04:00 Wiring explained
  • 05:11 Code Explained
  • 12:18 Demonstration

图像

SG90_servo_motor-0
SG90_servo_motor-0
Arduino wiring for Servo motor with a push button
Arduino wiring for Servo motor with a push button
270-Code 1 controlling servo motor
语言: C++
已复制!

|||您可能需要的东西

资源与参考

文件📁

其他文件