#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;
}
}