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


#define BUTTON A0

int pins[8] { 2, 3, 4, 5, 6, 7, 8, 9 };

byte numbers[10] {
  0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F
};

int number = 0;
int number1 = 0;
int number2 = 0;

int pinDigits[4] = { 10, 11, 12, 13 };

int digit = 0;

unsigned long millis1=0;

bool mode = false;

bool curButton = LOW;
bool prevButton = LOW;

bool ledOn = false;

void setup() {
  pinMode(BUTTON, INPUT);
  for(int i = 0; i < 8; i++)
    pinMode(pins[i], OUTPUT);
  for(int i = 0; i < 4; i++) {
    pinMode(pinDigits[i], OUTPUT);
    digitalWrite(pinDigits[i], HIGH);
  }
}

void loop() {
  curButton = debounce(prevButton);
  if(prevButton == LOW && curButton == HIGH) {
    mode = !mode;
    if(mode)
      number = 0;
  }

  if(millis() - millis1 >= 100 && mode) {
    millis1 += 100;
    number++;
    if(number == 10000)
      number = 0;
  }

  number1 = number;

  for(int i = 0; i < 4; i++) {
    number2 = number % 10;
    number1 = number / 10;
    showNumber(number2, i);
    for(int j = 0; j < 4; j++)
      digitalWrite(pinDigits[j], HIGH);
    digitalWrite(pinDigits[i], LOW);
  }

  delay(1);
}

void showNumber(int num, int dig) {
  for(int i = 0; i < 8; i++) {
    if(bitRead(numbers[num], i) == HIGH)
      digitalWrite(pins[i], HIGH);
    else
      digitalWrite(pins[i], LOW);
  }

  if(dig == 1)
    digitalWrite(pins[7], LOW);
}

bool debounce(bool last) {
  bool current = digitalRead(BUTTON);

  if(last != current) {
    delay(5);
    current = digitalRead(BUTTON);
    return current;
  }
}