int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;
int btn = 10;
int anodPins[] = {A1, A2, A3, A4};
int pins[] = {a, b, c, d, e, f, g};
//C, F, 8, 9
int C[] = {1, 0, 0, 1, 1, 1, 0};
int F[] = {1, 0, 0, 0, 1, 1, 1};
int eight[] = {1, 1, 1, 1, 1, 1, 1};
int nine[] = {1, 1, 1, 1, 0, 1, 1};
int* symbols[] = {C, F, eight, nine};
int symbolCount = 4;
void setup() {
Serial.begin(115200);
pinMode(btn, INPUT_PULLUP);
for (int i = 0; i < 4; i++) {
pinMode(anodPins[i], OUTPUT);
}
for (int i = 0; i < sizeof(pins)/sizeof(pins[0]); i++) {
pinMode(pins[i], OUTPUT);
digitalWrite(pins[i], HIGH);
}
}
int lastBtnState = HIGH;
int state = 0;
int last = 0;
int i = 0;
void loop() {
int btnState = digitalRead(btn);
if (btnState != lastBtnState) {
if (btnState == LOW) {
state ++;
Serial.println(state % 2);
}
}
lastBtnState = btnState;
if (state % 2 == 0) {
out(symbols[i], anodPins[i], sizeof(pins)/sizeof(pins[0]));
if (millis() - last >= 1000) {
i++;
last = millis();
}
if (i == 4) {
i = 0;
}
}
else {
off(sizeof(pins)/sizeof(pins[0]));
}
}
void out(int symbol[], int anodPin, int size) {
for (int i = 0; i < size; i++) {
digitalWrite(pins[i], symbol[i] == 1 ? LOW : HIGH);
}
for (int i = 0; i < 4; i++) {
digitalWrite(anodPins[i], anodPins[i] == anodPin ? HIGH : LOW);
}
}
void off(int size) {
for (int j = 0; j < 4; j++) {
for (int i = 0; i < size; i++) {
digitalWrite(pins[i], HIGH);
}
digitalWrite(anodPins[j], HIGH);
}
}