Publicado 2026-04-29
Utilice una placa de desarrollo Arduino para controlar el ángulo de rotación del servo con la ayuda de un botón. Esta es una de las funciones básicas más prácticas en la producción electrónica. Este artículo ofrece directamente una solución completa. Utilice un botón normal. Cuando se presiona, el servo gira a 90 grados y cuando se suelta, regresa a 0 grados. Sólo necesitas una placa de desarrollo Arduino, un servo de 9g, un botón, algunos cables Dupont y una placa de pruebas. Según el diagrama de cableado y el código a continuación, se puede completar en 30 minutos.
Lista de hardware requerido:
Placa de desarrollo Arduino (cualquier modelo es aceptable, este artículo toma como ejemplo el modelo más común)
Servo SG90 9g (servo de baja potencia, adecuado para nivel básico)
Botón táctil (6x6x5mm de cuatro pines)
Resistencia de 10 kΩ (para resistencia desplegable)
Placa de pruebas y algo de alambre Dupont.
Pasos de cableado (deben ser precisos):
1. Conecte la línea de señal del servo (generalmente naranja o amarilla) al pin 9 de Arduino
2. Conecte el cable de alimentación del servo (rojo) al pin de 5V.
3. Conecte el cable de tierra del servo (marrón o negro) al pin GND.

4. Un pin del botón está conectado a 5 V y el otro pin está conectado al pin 2.
5. Conecte una resistencia desplegable de diez kΩ en paralelo entre el pin 2 y GND para garantizar que la entrada esté BAJA cuando no se presione.
Un error común es que omitir la resistencia desplegable hará que el estado del botón salte erráticamente. Un extremo de la resistencia está conectado al pin 2 y el otro extremo está conectado a GND.
#incluirservomiservo; //Crear objeto servo int buttonPin = 2; //Pin de conexión del botón int buttonState = 0; //Estado del botón de almacenamiento intservoPosición = 0; // Ángulo del servo actual void setup() { myServo.attach(9); // Conecte la línea de señal del servo al pin 9 pinMode(buttonPin, INPUT); // Establece el pin del botón como entrada myServo.write(0); // Inicializa el ángulo del servo a 0 grados } void loop() { buttonState = digitalRead(buttonPin); // Leer el estado del botón if (buttonState == HIGH) { // Cuando se presiona myServo.write(90); // El servo gira a 90 grados delay(15); // Espera a que el servo alcance la posición } else { // Cuando no se presiona myServo.write(0); // El servo vuelve a 0 grados delay(15); } }
La lógica del código central es utilizar digitalRead() para detectar continuamente el nivel del pin 2.。Una vez que se presiona el botón, es decir, cuando el pin está en estado ALTO, el servo realiza la operación de escritura (90).。Cuando se suelta el botón, el servo vuelve a la operación de escritura (0).. Mediante escritura estructurada, dividimos el programa en cuatro módulos claramente organizados: inicialización, lectura, juicio y ejecución, para que pueda expandirlo a un modo de control de múltiples teclas o múltiples ángulos en las etapas posteriores.
P: El servo no se mueve en absoluto. ¿Cuál podría ser la razón?
Fuente de energía insuficiente. El servo debe alimentarse por separado. El servo de 9g puede usar directamente los 5V de Arduino, y el servo más grande debe ser alimentado por una fuente de alimentación externa.
P: Presione el botón una vez y el servo girará una vez. ¿Volverá a cero cuando se lance?
R: Hay un error lógico en el código. Asegúrese de utilizar la estructura if-else proporcionada anteriormente, en lugar de simplemente determinar las condiciones después de presionar.
P: ¿Qué debo hacer si el mecanismo de dirección tiembla o la dirección es incorrecta?

1. Compruebe si la línea de señal está suelta. 2. Agregue retraso (15) después de escribir (). 3. Esto proporcionará suficiente tiempo de acción para el servo.
P: ¿Cómo cambiarlo para que gire 90 grados presionando una vez y regresar a cero presionando nuevamente?
Es necesario agregar variables para registrar el estado. Cada vez que se detecta que el botón está presionado, se cambia el bit de bandera y se escribe el ángulo correspondiente.
P: ¿Los botones tardan en responder y a veces no se produce ninguna respuesta?
Debido a la fluctuación mecánica de las teclas, puede agregar retraso (10) después de detectar el cambio de nivel para eliminar la fluctuación, o usar la biblioteca Bounce2。
Después de dominar el control básico con un solo botón, podrá implementar fácilmente las siguientes funciones avanzadas:
1. Dos botones controlan el avance y el retroceso respectivamente.
Botón A: presione para ir a 180 grados, suéltelo para volver a 0 grados
Botón B: presione para ir a 45 grados, suéltelo para volver a 0 grados
Modifique el código: agregue un segundo pin de botón y juzgue por separado
2. Un solo botón para recorrer tres ángulos
// El ángulo se acumula cada vez que se presiona, 0→60→120→0 loop int angles[] = {0, 60, 120}; índice int = 0; if (buttonState == HIGH && !flag) { // Índice anti-doble clic = (index+1) % 3; myServo.write(ángulos[índice]); bandera = verdadero; }
3. Mantenga presionado para girar continuamente
Detecta la duración del botón y continúa aumentando el ángulo después de que supere los 500 ms hasta que se suelte.
Los siguientes son ejemplos de código completos con funciones extendidas. Todos los principios se basan en la lógica de escritura estructurada de este artículo, es decir, información clara. Esta entrada consta de estados clave, seguidos del procesamiento, que es el cálculo del ángulo, y finalmente la salida, que se utiliza como comando de servo.
Énfasis en el punto central: la esencia del control del servo mediante botones Arduino es la transformación de "señales digitales en señales PWM". Los botones dan niveles altos y bajos, y el servo gira al ángulo preestablecido según el valor del nivel.Siempre que el cableado sea correcto (no se debe omitir la resistencia desplegable) y la lógica del código utilice if-else o una máquina de estado, se puede lograr un control estable.。
Aquí hay tres sugerencias de acciones que puede tomar de inmediato:
1. Esta noche, construiré una versión básica: según el diagrama de cableado y el código de este artículo, usaré la placa de pruebas para construir un circuito completo y presenciaré personalmente la escena en la que el servo gira cuando se presiona el botón.
2. Explore el experimento cambiando el valor del ángulo: cambie el estado de 90 grados a formas numéricas aleatorias como 45 grados, 135 grados, 180 grados, etc., preste atención cuidadosamente a los cambios en la posición de dirección causados por la observación y luego comprenda que el rango de parámetros de la función write () es de cero a 180 grados.
3. Agregue un segundo botón y confíe en el código actual para copiar el módulo de lectura de botones para lograr un prototipo de producto con características interactivas reales que puedan controlarse mediante diferentes botones en diferentes ángulos.
Ya tienes todos los conocimientos clave para conseguir servos controlados por botones desde cero. Ahora abra el IDE de Arduino, conecte el hardware y verifique cada paso usted mismo.
Hora de actualización: 2026-04-29
Comuníquese con el especialista en productos de Kpower para recomendarle un motor o caja de cambios adecuado para su producto.