#include <Arduino.h>
int bs = 0;
int lbs = 0;
int c = 0;
int m = 0;
unsigned long lm = 0;
const byte numbers[10] = {
0b00111111,
0b00000110,
0b01011011,
0b01001111,
0b01100110,
0b01101101,
0b01111101,
0b00000111,
0b01111111,
0b01101111
};
void setup() {
DDRD |= 0b11111100;
DDRB |= 0b00000001;
DDRB &= ~(1 << PB1);
PORTB |= (1 << PB1);
}
void loop() {
bs = PINB & (1 << PB1) ? HIGH : LOW;
if (bs == LOW && lbs == HIGH) {
if (millis() - lm >= 200) {
lm = millis();
m++;
if (m > 2) m = 0;
}
}
lbs = bs;
if (m == 1) {
if (millis() - lm >= 1000) {
lm = millis();
c++;
if (c > 9) c = 0;
}
} else if (m == 2) {
c = 0;
}
PORTD = (PORTD & 0b00000011) | ((numbers[c] & 0b00111111) << 2);
if (numbers[c] & 0b01000000) {
PORTB |= 0b00000001;
} else {
PORTB &= 0b11111110;
}
}