#include <Servo.h> // Se incluye la librería Servo para poder controlar el servomoto
// Declaración de variables para los pines de los botones
int pinBotonAdelante = 5; // Botón para avanzar el servo 20°
int pinBotonAtras = 6; // Botón para retroceder el servo 20°
// Declaración del pin del servo
int pinServo = 9; // Pin PWM donde está conectado el servo
// Variable para almacenar el ángulo actual del servo
int anguloActual = 90; // Se inicia en 90° como posición neutra
// Variables para almacenar el estado de los botones
int estadoBotonAdelante = 0;
int estadoBotonAtras = 0;
// Se crea un objeto de tipo Servo llamado "servoMotor"
Servo servoMotor;
void setup() {
// Configuración de los pines de los botones como entradas
pinMode(pinBotonAdelante, INPUT);
pinMode(pinBotonAtras, INPUT);
// Se adjunta el servo al pin designado
servoMotor.attach(pinServo);
// Se mueve el servo a la posición inicial
servoMotor.write(anguloActual);
// Inicialización del monitor serie (opcional para depuración)
Serial.begin(9600);
}
void loop() {
// Leer el estado actual de los botones
estadoBotonAdelante = digitalRead(pinBotonAdelante);
estadoBotonAtras = digitalRead(pinBotonAtras);
// Si el botón de avanzar está presionado
if (estadoBotonAdelante == HIGH) {
// Verificamos que el ángulo no exceda 180 grados
if (anguloActual <= 160) { // 160 + 20 = 180 como máximo
anguloActual = anguloActual + 20;
servoMotor.write(anguloActual); // Se actualiza el ángulo del servo
Serial.print("Avanzando a: ");
Serial.println(anguloActual);
delay(300); // Pausa para evitar múltiples lecturas por rebote
}
}
// Si el botón de retroceso está presionado
if (estadoBotonAtras == HIGH) {
// Verificamos que el ángulo no baje de 0 grados
if (anguloActual >= 20) { // 20 - 20 = 0 como mínimo
anguloActual = anguloActual - 20;
servoMotor.write(anguloActual); // Se actualiza el ángulo del servo
Serial.print("Retrocediendo a: ");
Serial.println(anguloActual);
delay(300); // Pausa para evitar múltiples lecturas por rebote
}
}
// Pequeño retardo para evitar sobrecargar el loop
delay(10);
}