#include <Servo.h>
// Define los pines para los botones y el servomotor
const int botonPin1 = 2;
const int botonPin2 = 3;
const int servoPin = 9;
// Crea un objeto Servo
Servo miServo;
// Variables para almacenar el estado de los botones
int estadoBotonAnterior1 = LOW;
int estadoBotonAnterior2 = LOW;
int estadoBotonActual1;
int estadoBotonActual2;
// Variable para almacenar la posición actual del servo
int posicionServo = 90; // Posición inicial del servo
bool servoMovido = false; // Variable para rastrear si el servo ha sido movido
void setup() {
// Inicializa los botones como entradas
pinMode(botonPin1, INPUT);
pinMode(botonPin2, INPUT);
// Inicializa el servo en el pin especificado
miServo.attach(servoPin);
// Mueve el servo a la posición inicial
miServo.write(posicionServo);
}
void loop() {
// Lee el estado actual de los botones
estadoBotonActual1 = digitalRead(botonPin1);
estadoBotonActual2 = digitalRead(botonPin2);
// Si hay un cambio en el estado del primer botón
if (estadoBotonActual1 != estadoBotonAnterior1) {
// Si el nuevo estado del primer botón es alto (presionado)
if (estadoBotonActual1 == HIGH) {
// Mueve el servo hacia una dirección si aún no se ha movido
if (!servoMovido) {
moverServo(1); // Mueve el servo en una dirección
servoMovido = true;
} else {
// Si ya se ha movido, vuelve a la posición original
moverServo(-1); // Mueve el servo en la dirección opuesta
servoMovido = false;
}
}
// Actualiza el estado del primer botón anterior al actual
estadoBotonAnterior1 = estadoBotonActual1;
}
// Si hay un cambio en el estado del segundo botón
if (estadoBotonActual2 != estadoBotonAnterior2) {
// Si el nuevo estado del segundo botón es alto (presionado)
if (estadoBotonActual2 == HIGH) {
// Mueve el servo hacia una dirección si aún no se ha movido
if (!servoMovido) {
moverServo(1); // Mueve el servo en una dirección
servoMovido = true;
} else {
// Si ya se ha movido, vuelve a la posición original
moverServo(-1); // Mueve el servo en la dirección opuesta
servoMovido = false;
}
}
// Actualiza el estado del segundo botón anterior al actual
estadoBotonAnterior2 = estadoBotonActual2;
}
}
// Función para mover el servo en una dirección
void moverServo(int direccion) {
// Ajusta la posición del servo según la dirección
posicionServo += direccion * (-90); // Ajusta el ángulo de giro del servo
// Limita la posición del servo entre 0 y 180 grados
posicionServo = constrain(posicionServo, 0, 180);
// Mueve el servo a la nueva posición
miServo.write(posicionServo);
}