Este tutorial es parte de: Servomotores
Todos los videos relacionados con servomotores se listan aquí. Los enlaces a otros videos se encuentran debajo de este artículo.
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
| Manufacturer | Generic |
|---|---|
| Part number | SG90 |
| Logic/IO voltage | 5 V |
| Supply voltage | 4.8–6 V |
| Output current (per channel) | ~1 A |
| Peak current (per channel) | ~2 A |
| PWM frequency guidance | 50 Hz |
| Input logic thresholds | 0.2 V (LOW), 2.0 V (HIGH) |
| Voltage drop / RDS(on) / saturation | ~0.5 V |
| Thermal limits | 85 °C max |
| Package | Standard |
| Notes / variants | Metal 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

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
Este tutorial es parte de: Servomotores
- Controlar un servomotor con pulsadores usando Arduino
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- Controlar un servomotor con un potenciómetro usando Arduino
- Controlar un servomotor con potenciómetro y LCD1602 usando Arduino
- Controlando motores servo utilizando un control remoto por infrarrojos con Arduino
- Control de motor servo Arduino usando un potenciómetro
- Controlando la posición del servo con gestos de la mano para Arduino
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- How to Use Continuous 360° Servo with Arduino
- Código y vídeo de Arduino para el controlador de servos PCA9685 de 16 canales y 12 bits V1
- Build an Arduino Servo Toggle Switch with a Push Button
Cosas que podrías necesitar
-
AmazonasMotor servo en Amazonamzn.to
Recursos y referencias
-
Externoservos SG90amzn.to
Archivos📁
Otros archivos
-
Folleto de datos del motor Seroo SG90
robojax-servo-SG90_datasheet.pdf0.12 MB