#include <ESP32Servo.h>
Servo servos[12]; // Tableau pour 12 servos
int servoPins[12] = {18, 19, 21, 22, 23, 33, 25, 26, 27, 14, 13, 17}; // Broches pour chaque servo
// Broches des boutons poussoirs
int buttonPins[7] = {15, 2, 0, 4, 12, 35, 34}; // Correspondance avec bp1 à bp7
// État précédent des boutons
bool lastButtonState[7] = {0, 0, 0, 0, 0, 0, 0};
// Positions des servos (0° ou 90°)
int servoPositions[7] = {0, 0, 0, 0, 0, 0, 0}; // Initialement fermés (0°)
void setup() {
Serial.begin(115200);
// Initialisation des servos
for (int i = 0; i < 12; i++) {
servos[i].attach(servoPins[i]);
servos[i].write(0); // Position initiale (fermée)
}
// Configuration des boutons poussoirs
for (int i = 0; i < 7; i++) {
pinMode(buttonPins[i], INPUT); // Boutons en INPUT_PULLUP (actif LOW)
}
Serial.println("Système initialisé avec 12 servos et 7 boutons.");
}
void loop() {
for (int i = 0; i < 7; i++) {
// Lecture de l'état actuel du bouton
bool currentState = !digitalRead(buttonPins[i]); // Bouton activé = LOW
// Détection d'un appui (changement d'état)
if (currentState && !lastButtonState[i]) {
// Alterner la position du servo entre 0° et 90°
servoPositions[i] = (servoPositions[i] == 0) ? 90 : 0;
servos[i].write(servoPositions[i]);
Serial.print("Servo ");
Serial.print(i);
Serial.print(" déplacé à ");
Serial.println(servoPositions[i]);
}
// Mettre à jour l'état précédent
lastButtonState[i] = currentState;
}
delay(10); // Petit délai pour éviter les rebonds
}