#define PIN_SERIELEDATA 12
#define PIN_CLOCK 10
#define PIN_DOORGEEF 11
#define PIN_BUTTON 2
byte cijfers [] = {B11111100,
B01100000,
B11011010,
B11110010,
B01100110,
B10110110,
B10111110,
B11100000,
B11111110,
B11110110
};
//byte cijfers [] = {254};
int arraySize = sizeof cijfers / sizeof cijfers [0];
volatile boolean displayState = false;
void checkButton();
void setup() {
pinMode(PIN_SERIELEDATA, OUTPUT);
pinMode(PIN_CLOCK, OUTPUT);
pinMode(PIN_DOORGEEF, OUTPUT);
pinMode(PIN_BUTTON, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(PIN_BUTTON), checkButton, FALLING);
}
void loop() {
if (displayState) {
for (int i = 0; i < arraySize && displayState; i++) {
digitalWrite(PIN_DOORGEEF, LOW);
shiftOut(PIN_SERIELEDATA, PIN_CLOCK, LSBFIRST, cijfers[i]);
digitalWrite(PIN_DOORGEEF, HIGH);
delay(500);
}
} else {
digitalWrite(PIN_DOORGEEF, LOW);
shiftOut(PIN_SERIELEDATA, PIN_CLOCK, LSBFIRST, B00000001);
digitalWrite(PIN_DOORGEEF, HIGH);
}
}
void checkButton() {
displayState = !displayState;
}