Загрузка данных



const int dataPin = 13;   // DS 74HC595
const int latchPin = 12;  // STCP 74HC595
const int clockPin = 11;  // SHCP 74HC595
const int buttonPin = 10; // Кнопка

// Биты: Q0=a, Q1=b, Q2=c, Q3=d,
//       Q4=e, Q5=f, Q6=g, Q7=DP
// Индикатор с общим анодом: LOW включает сегмент.
const byte digits[10] = {
  0b11000000, // 0
  0b11111001, // 1
  0b10100100, // 2
  0b10110000, // 3
  0b10011001, // 4
  0b10010010, // 5
  0b10000010, // 6
  0b11111000, // 7
  0b10000000, // 8
  0b10010000  // 9
};

int number = 0;
int lastButtonState = HIGH;
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 40;

void showDigit(int n) {
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, digits[n]);
  digitalWrite(latchPin, HIGH);
}

void setup() {
  pinMode(dataPin, OUTPUT);
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);

  pinMode(buttonPin, INPUT_PULLUP);

  showDigit(number);
}

void loop() {
  int reading = digitalRead(buttonPin);

  if (reading != lastButtonState) {
    lastDebounceTime = millis();
  }

  if (millis() - lastDebounceTime > debounceDelay) {
    static int buttonState = HIGH;

    if (reading != buttonState) {
      buttonState = reading;

      // Считаем только нажатие кнопки
      if (buttonState == LOW) {
        number = (number + 1) % 10;
        showDigit(number);
      }
    }
  }

  lastButtonState = reading;
}