Arduino Nano - Botón - Servomotor

En este tutorial, aprenderás a controlar un servomotor con un Arduino Nano y un botón. Cuando se presione el botón, el servomotor girará 90 grados. Si se vuelve a presionar el botón, el servomotor volverá a 0 grados. Esta acción se repetirá continuamente.

Este tutorial tiene dos secciones:

Acerca del motor servo y del botón

Si no estás familiarizado con servomotores y botones (incluyendo la disposición de pines, cómo funcionan y cómo programarlos), los siguientes tutoriales pueden ayudar:

Diagrama de Cableado

Diagrama de cableado de Arduino Nano para botón y servomotor

This image is created using Fritzing. Click to enlarge image

Cabe señalar que el esquema de cableado que se muestra arriba solo es adecuado para un motor servo de par bajo. En caso de que el motor vibre en lugar de girar, se debe utilizar una fuente de alimentación externa para hacer funcionar el motor servo. El siguiente diagrama de cableado demuestra cómo conectar el motor servo a una fuente de alimentación externa.

Diagrama de cableado de Arduino Nano, servomotor y botón.

This image is created using Fritzing. Click to enlarge image

Ver La mejor forma de alimentar Arduino Nano y otros componentes.

Por favor, no olvides conectar la masa de la fuente de alimentación externa a la masa del Arduino.

Código de Arduino Nano: el botón controla el servomotor sin rebote

/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano/arduino-nano-button-servo-motor */ #include <Servo.h> const int BUTTON_PIN = 2; // The Arduino Nano pin connected to button's pin const int SERVO_PIN = 9; // The Arduino Nano 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 prev_button_state; // The previous state of button int button_state; // The current state of button void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. 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); 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"); // change angle of servo motor if(angle == 0) angle = 90; else if(angle == 90) angle = 0; // rotate the servo motor to the angle position servo.write(angle); } }

Pasos R\u00e1pidos

  • Conecta un cable USB a tu Arduino Nano y a tu PC.
  • Inicia el IDE de Arduino, selecciona la placa y el puerto correctos.
  • Pega el código en el IDE y ábrelo.
  • Haz clic en el botón Cargar en el IDE para enviar el código al Arduino Nano.
  • Presiona el botón varias veces.
  • Observa el movimiento del servomotor.

※ Nota:

En la práctica, el código mencionado anteriormente no siempre funciona correctamente. Para asegurar que funcione correctamente, necesitamos antirrebote del botón. El antirrebote del botón puede ser difícil para quienes son nuevos en el tema. Afortunadamente, con la ayuda de la biblioteca ezButton, esta tarea puede hacerse mucho más simple.

Código de Arduino Nano - Botón que controla el servomotor con rebote

¿Por qué es necesario el antirrebote? Consulta el Arduino Nano - Tutorial de antirrebote del botón para obtener más información.

/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano/arduino-nano-button-servo-motor */ #include <Servo.h> #include <ezButton.h> const int BUTTON_PIN = 2; // The Arduino Nano pin connected to button's pin const int SERVO_PIN = 9; // The Arduino Nano pin connected to servo motor's pin ezButton button(BUTTON_PIN); // create ezButton object for 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 the Serial to communicate with the Serial Monitor. 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; // rotate the servo motor to the angle position servo.write(angle); } }

Pasos R\u00e1pidos

  • Instala la biblioteca ezButton. Consulta Cómo hacerlo para obtener instrucciones.
  • Abre el código en el IDE de Arduino.
  • Haz clic en el botón Subir en el IDE de Arduino para subir el código al Arduino Nano.
  • Presiona el botón varias veces.
  • Observa los cambios en el servomotor.

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!