#include <Servo.h>
// Define los pines para los botones y los servomotores
const int botonPines[] = {2, 3, 4, 5, 6, 7, 8}; // Pines para los 7 botones
const int servoPines[] = {9, 10, 11, 12, 13, A0, A1}; // Pines para los 7 servomotores
// Crea objetos Servo para cada servomotor
Servo servos[7];
void setup() {
// Inicializa los botones como entradas
for (int i = 0; i < 7; i++) {
pinMode(botonPines[i], INPUT_PULLUP); // Usamos INPUT_PULLUP para activar resistencias internas
}
// Inicializa cada servo en los pines especificados
for (int i = 0; i < 7; i++) {
servos[i].attach(servoPines[i]);
servos[i].write(90); // Inicialmente todos los servos en posición neutral
}
}
void loop() {
// Itera sobre cada botón
for (int i = 0; i < 7; i++) {
// Si el botón actual está presionado
if (digitalRead(botonPines[i]) == LOW) { // LOW indica que el botón está presionado debido a INPUT_PULLUP
moverServos(i + 1); // Mueve la cantidad de servos correspondiente
// Espera hasta que se suelte el botón
while (digitalRead(botonPines[i]) == LOW);
// Espera un breve tiempo para evitar rebotes del botón
delay(50);
}
}
}
// Función para mover la cantidad de servos especificada
void moverServos(int cantidad) {
// Mueve la cantidad especificada de servos
for (int i = 0; i < cantidad; i++) {
servos[i].write(180); // Mueve el servo a posición activada
}
// Espera un breve tiempo antes de devolver los servos a la posición inicial
delay(1000);
// Devuelve los servos a su posición original
for (int i = 0; i < cantidad; i++) {
servos[i].write(90); // Devuelve el servo a posición neutral
}
}