#include <Servo.h>
// Crear objetos Servo para los cuatro servomotores
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
// Definir los pines de los servomotores
const int servoPin1 = 8;
const int servoPin2 = 9;
const int servoPin3 = 10;
const int servoPin4 = 11;
// Definir los pines de los botones
const int buttonPin1 = 2;
const int buttonPin2 = 3;
const int buttonPin3 = 4;
const int buttonPin4 = 5;
const int buttonLedPin = 6; // Nuevo botón para controlar los LEDs
// Definir el pin del potenciómetro
const int potPin = A0;
// Definir los pines de los LEDs RGB
const int ledRedPin = 22;
const int ledGreenPin = 23;
const int ledBluePin = 24;
// Variables para almacenar el estado de los botones
int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;
int buttonState4 = 0;
int buttonLedState = 0; // Estado del botón de los LEDs
// Variables para almacenar la posición de los servomotores
int servo1Pos = 0;
int servo2Pos = 0;
int servo3Pos = 0;
int servo4Pos = 0;
// Variables para almacenar el estado anterior de los botones
int lastButtonState1 = HIGH;
int lastButtonState2 = HIGH;
int lastButtonState3 = HIGH;
int lastButtonState4 = HIGH;
int lastButtonLedState = HIGH; // Estado anterior del botón de los LEDs
// Variable para almacenar el estado de los LEDs
bool ledsOn = false;
void setup() {
// Asignar los pines de los servomotores
servo1.attach(servoPin1);
servo2.attach(servoPin2);
servo3.attach(servoPin3);
servo4.attach(servoPin4);
// Configurar los pines de los botones como entradas con resistencia pull-up interna
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
pinMode(buttonPin3, INPUT_PULLUP);
pinMode(buttonPin4, INPUT_PULLUP);
pinMode(buttonLedPin, INPUT_PULLUP); // Configurar el nuevo botón
// Configurar los pines de los LEDs RGB como salidas
pinMode(ledRedPin, OUTPUT);
pinMode(ledGreenPin, OUTPUT);
pinMode(ledBluePin, OUTPUT);
}
void loop() {
// Leer el valor del potenciómetro
int potValue = analogRead(potPin);
int potAngle = map(potValue, 0, 1023, 0, 90);
// Leer el estado de los botones
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
buttonState3 = digitalRead(buttonPin3);
buttonState4 = digitalRead(buttonPin4);
buttonLedState = digitalRead(buttonLedPin);
// Controlar el primer servomotor con el primer botón
if (buttonState1 == LOW) {
servo1.write(90); // Cambiar a 90 grados al presionar el botón
} else {
servo1.write(potAngle); // Volver a la posición del potenciómetro al soltar el botón
}
// Controlar el segundo servomotor con el segundo botón
if (buttonState2 == LOW) {
servo2.write(90); // Cambiar a 90 grados al presionar el botón
} else {
servo2.write(potAngle); // Volver a la posición del potenciómetro al soltar el botón
}
// Controlar el tercer servomotor con el tercer botón
if (buttonState3 == LOW) {
servo3.write(90); // Cambiar a 90 grados al presionar el botón
} else {
servo3.write(potAngle); // Volver a la posición del potenciómetro al soltar el botón
}
// Controlar el cuarto servomotor con el cuarto botón
if (buttonState4 == LOW) {
servo4.write(90); // Cambiar a 90 grados al presionar el botón
} else {
servo4.write(potAngle); // Volver a la posición del potenciómetro al soltar el botón
}
// Controlar el encendido y apagado de los LEDs con el botón
if (buttonLedState == LOW && lastButtonLedState == HIGH) {
ledsOn = !ledsOn; // Cambiar el estado de los LEDs
}
if (ledsOn) {
// Encender los LEDs a color azul
digitalWrite(ledRedPin, LOW);
digitalWrite(ledGreenPin, LOW);
digitalWrite(ledBluePin, HIGH);
} else {
// Apagar los LEDs
digitalWrite(ledRedPin, LOW);
digitalWrite(ledGreenPin, LOW);
digitalWrite(ledBluePin, LOW);
}
// Actualizar el estado anterior de los botones
lastButtonState1 = buttonState1;
lastButtonState2 = buttonState2;
lastButtonState3 = buttonState3;
lastButtonState4 = buttonState4;
lastButtonLedState = buttonLedState;
// Pequeño retardo para estabilizar la lectura de los botones
delay(15);
}