const int displayPins[] = {3, 4, 5, 6, 7, 8}; // Pines conectados a los segmentos del display
const int numDigits = 7; // Número de dígitos en tu display
volatile bool clockwise = true;
void setup() {
for (int i = 0; i < numDigits; i++) {
pinMode(displayPins[i], OUTPUT);
digitalWrite(displayPins[i], LOW); // Apagar todos los segmentos
}
pinMode(2, INPUT_PULLUP); // Pin 2 como entrada con resistencia pull-up
attachInterrupt(digitalPinToInterrupt(2), changeDirection, FALLING);
}
void loop() {
if (clockwise) {
// Sentido horario
for (int i = 0; i < numDigits; i++) {
digitalWrite(displayPins[i], HIGH);
delay(100); // Ajusta la velocidad de giro aquí
digitalWrite(displayPins[i], LOW);
}
} else {
// Sentido anti-horario
for (int i = numDigits - 1; i >= 0; i--) {
digitalWrite(displayPins[i], HIGH);
delay(100); // Ajusta la velocidad de giro aquí
digitalWrite(displayPins[i], LOW);
}
}
}
void changeDirection() {
// Función de interrupción para cambiar la dirección del giro
clockwise = !clockwise;
delay(100); // Anti-rebote simple
}
//