/*☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄
☄ ☄
☄ ☘ DATOS GENERALES: ☄
☄ NOMBRE: Uso básico del servo motor. ☄
☄ FECHA: 6 de noviembre de 2024. ☄
☄ VERSIÓN: 1.0. ☄
☄ ☄
☄ AUTOR: M. en C. Esli Castellanos Berján. ☄
☄ E-MAIL: [email protected]. ☄
☄ COMPAÑÍA: Universidad de Colima - Facultad de Telemática. ☄
☄ ☄
☄ uC: ATMEGA - 328p. ☄
☄ Nombre: Arduino UNO. ☄
☄ ☄
☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄
☄ ☄
☄ ☘ DESCRIPCIÓN DEL PROGRAMA: ☄
☄ Arquitectura de software que ejemplifica el uso del servo motor. ☄
☄ Voltaje de operación del servo motor: 5V. ☄
☄ ☄
☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄
☄ ☄
☄ ☘ NOTAS: ☄
☄ Se requiere un amperaje de 200 mA, la línea 5V del Arduino UNO, ☄
☄ sólo proporciona 500 mA. ☄
☄ ☄
☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄*/
// Definimos el pin digital al que estará conectado el servo.
// En este caso, el pin 3 de Arduino.
#define SERVO_1 3
// Incluimos la librería Servo.h que facilita el control de servomotores.
// Nos permite usar funciones como attach() y write() para mover el servo.
#include <Servo.h>
// Creamos un objeto de tipo Servo llamado "servo1".
Servo servo1;
// -------------------- CONFIGURACIÓN INICIAL --------------------
void setup ( void ) {
// Inicializamos la comunicación serial a 115200 baudios.
// Esto nos permitirá enviar mensajes al monitor serial para depuración.
Serial.begin(115200);
// Asociamos el objeto "servo1" al pin definido (SERVO_1 = 3).
servo1.attach(SERVO_1);
// Movemos el servo a la posición inicial de 0 grados.
servo1.write(0);
// Mensaje inicial en consola para indicar que el programa arrancó.
Serial.println("=====================================");
Serial.println(" PRUEBA DE SERVO SG90 - ARDUINO ");
Serial.println("=====================================");
Serial.println("El servo comenzará a moverse...");
}
// -------------------- BUCLE PRINCIPAL --------------------
void loop ( void ) {
// Secuencia de posiciones del servo en grados.
moverServo(0, "1.- Posición inicial: 0°");
moverServo(45, "2.- Posición intermedia: 45°");
moverServo(90, "3.- Posición central: 90°");
moverServo(135, "4.- Posición intermedia: 135°");
moverServo(180, "5.- Posición final: 180°");
// Pausa de 2 segundos antes de repetir la secuencia.
Serial.println("\n--- Fin de ciclo, reiniciando en 2s ---\n");
delay(2000);
}
// -------------------- FUNCIÓN AUXILIAR --------------------
void moverServo( uint8_t angulo, const char* mensaje ) {
// Espera breve antes de mover el servo.
delay(500);
// Mueve el servo al ángulo indicado.
servo1.write(angulo);
// Imprime en consola el mensaje asociado a la posición.
Serial.println(mensaje);
// Espera para que el servo llegue a la posición.
delay(500);
}
0
45
90
135
180
Se requiere un amperaje de 200 mA, la línea 5V del Arduino UNO, sólo proporciona 500 mA.