int latchPin = 8;
int clockPin = 12;
int dataPin = 11;
int dig1 = 6; // десятки
int dig2 = 7; // единицы
int buttonUp = 2;
int buttonDown = 3;
int buzzer = 4;
int counter = 0;
byte numbers[] = {
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111 // 9
};
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(dig1, OUTPUT);
pinMode(dig2, OUTPUT);
pinMode(buttonUp, INPUT_PULLUP);
pinMode(buttonDown, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);
}
void loop() {
// === проверка кнопок с антидребезгом ===
if (digitalRead(buttonUp) == LOW) {
counter++;
if (counter > 99) {
counter = 99;
tone(buzzer, 1000, 200);
}
delay(200);
}
if (digitalRead(buttonDown) == LOW) {
counter--;
if (counter < 0) {
counter = 0;
tone(buzzer, 500, 200);
}
delay(200);
}
// === отображение ===
int digit1 = counter / 10; // десятки
int digit2 = counter % 10; // единицы
// переключаем цифры быстро по очереди
for (int i = 0; i < 50; i++) {
// десятки
digitalWrite(dig2, LOW);
digitalWrite(dig1, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, numbers[digit1]);
digitalWrite(latchPin, HIGH);
delay(5);
// единицы
digitalWrite(dig1, LOW);
digitalWrite(dig2, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, numbers[digit2]);
digitalWrite(latchPin, HIGH);
delay(5);
}
}