byte digits[10] = {
B00111111,
B00000110,
B01011011,
B01001111,
B01100110,
B01101101,
B01111101,
B00000111,
B01111111,
B01101111
};
int dataPin = 11;
int latchPin = 12;
int clockPin = 9;
int button1 = 2;
int button2 = 3;
int buzzer = 5;
int counter = 0;
void displayDigit(int number) {
byte digitPattern = digits[number];
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, digitPattern);
digitalWrite(latchPin, HIGH);
}
void beep() {
tone(buzzer, 1000, 100);
}
void checkButtons() {
if (digitalRead(button1) == LOW) {
delay(50);
if (digitalRead(button1) == LOW) {
counter++;
if (counter > 99) {
counter = 99;
beep();
}
while(digitalRead(button1) == LOW);
}
}
if (digitalRead(button2) == LOW) {
delay(50);
if (digitalRead(button2) == LOW) {
counter--;
if (counter < 0) {
counter = 0;
beep();
}
while(digitalRead(button2) == LOW);
}
}
}
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);
displayDigit(0);
}
void loop() {
checkButtons();
displayDigit(counter);
}