Спойлер
#define DATA_PIN 13 // пин данных (англ. data)#define LATCH_PIN 12 // пин строба (англ. latch)
#define CLOCK_PIN 11 // пин такта (англ. clock)
#define BUTTON_PIN 10
int clicks = 0;
boolean buttonWasUp = true;
byte H_byte[18] = {
0b01001100, 0b01000101, 0b00000001, 0b11001100, 0b01010101, 0b10000111, 0b01000101, 0b00101100, 0b00010000, 0b11110000, 0b00000000, 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000
};
byte L_byte[18] = {
0b01111101, 0b00100100, 0b01111010, 0b01110110, 0b00100111, 0b01010111, 0b01011111, 0b01100100, 0b01111111, 0b01110111, 0b00000000, 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000
};
byte D_byte[18] = {
0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00010000, 0b00100000, 0b01000000, 0b10000000, 0b00000000, 0b11111111, 0b00000000, 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000
};
void setup()
{
pinMode(DATA_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(LATCH_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop()
{
if (buttonWasUp && !digitalRead(BUTTON_PIN)) {
delay(10);
if (!digitalRead(BUTTON_PIN))
clicks = (clicks + 1) % 18;
}
buttonWasUp = digitalRead(BUTTON_PIN);
digitalWrite(LATCH_PIN, LOW);
shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, H_byte[clicks]);
shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, L_byte[clicks]);
shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, D_byte[clicks]);
digitalWrite(LATCH_PIN, HIGH);
}


