const byte ledPin0 = 6;
const byte ledPin1 = 7;
const byte ledPin2 = 8;
const byte ledPin3 = 9;
const byte ledPin4 = 10;
const byte ledPin5 = 11;
const byte ledPin6 = 12;
const byte ledPin7 = 13;
const byte ledUpDown = 3;
const byte InterruptPin = 2;
volatile byte UpDown = HIGH;
const int numSequences = 4;
byte currentSequence = 0;
const byte sequences[][8] = {
{B11111111, B01111111, B00111111, B00011111, B00001111, B00000111, B00000011, B00000001},
{B00000001, B00000110, B00011000, B01100000, B00000000, B00000000, B00000000, B00000000},
{B11100000, B00011000, B00000110, B00000011, B00000000, B00000000, B00000000, B00000000},
{B11100000, B00011000, B00000110, B00000011, B00000011, B00000110, B00011000, B11100000}
};
void setup() {
pinMode(ledPin0, OUTPUT);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledUpDown, OUTPUT);
pinMode(InterruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(InterruptPin), blink, FALLING);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (UpDown == LOW) {
currentSequence++;
if (currentSequence >= numSequences) {
currentSequence = 0;
}
}
}
displaySequence(currentSequence);
digitalWrite(ledUpDown, UpDown);
}
void displaySequence(byte sequenceNumber) {
for (int i = 0; i < 8; i++) {
byte leds = sequences[sequenceNumber][i];
digitalWrite(ledPin0, bitRead(leds, 0));
digitalWrite(ledPin1, bitRead(leds, 1));
digitalWrite(ledPin2, bitRead(leds, 2));
digitalWrite(ledPin3, bitRead(leds, 3));
digitalWrite(ledPin4, bitRead(leds, 4));
digitalWrite(ledPin5, bitRead(leds, 5));
digitalWrite(ledPin6, bitRead(leds, 6));
digitalWrite(ledPin7, bitRead(leds, 7));
delay(500); // Ajusta el tiempo de cada paso de la secuencia (medio segundo en este caso)
}
}
void blink() {
UpDown = !UpDown;
}