const int BTN = 4;
const int LEDS[7] = {13, 12, 11, 10, 9, 8, 7};
const int PATTERN[16] = {B11111100,B01100000,B11011010,B11110010,B01100110,B10110110,B10111110,B11100000,B11111110,B11110110,B11101110,B00111110,B00011010,B01111010,B10011110,B10001110};
unsigned long startMillis;
unsigned long currentMillis;
unsigned long btnMillis;
const unsigned long period = 1000;
const unsigned long bouncePeriod = 20;
int btnState = 0;
int mode = 1;
byte counter = -1;
void setup() {
pinMode(BTN, INPUT_PULLUP);
for (int i = 0; i < 7; i++) {
pinMode(LEDS[i], OUTPUT);
}
startMillis = millis();
Serial.begin(9600);
}
void loop() {
currentMillis = millis();
btnState = digitalRead(BTN);
if (btnState == LOW && btnMillis - startMillis >= bouncePeriod) {
mode = -mode;
btnMillis = currentMillis;
startMillis = currentMillis - period;
}
if (currentMillis - startMillis >= period) {
counter += mode;
counter %= 16;
for (int i = 0; i < 7; i++) {
digitalWrite(LEDS[i], (PATTERN[counter]) & (128>>i));
}
startMillis = currentMillis;
}
}