#define TASK 5
byte digits[10] = {
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111 // 9
};
const int digit_pins[] = {A2, A3, A4, A5};
void setup()
{
for (int i = 6; i <= 13; i++)
pinMode(i, OUTPUT);
for (int i = 0; i < 4; i++)
{
pinMode(digit_pins[i], OUTPUT);
digitalWrite(digit_pins[i], HIGH);
}
}
void display_digit(unsigned short int pos, unsigned short int digit)
{
for (int i = 6; i <= 13; i++)
digitalWrite(i, bitRead(digits[digit], i-6));
digitalWrite(digit_pins[pos], LOW);
}
void clear_display()
{
for (int i = 6; i <= 13; i++)
digitalWrite(i, LOW);
for (int i = 0; i < 4; i++)
digitalWrite(digit_pins[i], HIGH);
}
void loop()
{
#if TASK == 1
for (int i = 0; i <= 9; i++)
{
clear_display();
display_digit(0, i);
delay(1000);
}
clear_display();
#endif
#if TASK == 2
for (int i = 0; i < 4; i++)
{
clear_display();
display_digit(i, 5);
delay(20);
}
clear_display();
#endif
#if TASK == 3
int delay_time = 500;
while (delay_time > 20)
{
for (int i = 0; i < 4; i++)
{
clear_display();
display_digit(i, 5);
delay(delay_time);
}
delay_time-=10;
}
clear_display();
#endif
#if TASK == 4
int digit = 0;
int counter = 0;
while (true)
{
for (int i = 0; i < 4; i++)
{
clear_display();
display_digit(i, digit);
counter += 20;
delay(20);
}
if (counter >= 1000)
{
digit == 9 ? digit = 0 : digit++;
counter = 0;
}
clear_display();
}
clear_display();
#endif
#if TASK == 5
int number = 0;
int counter = 0;
while (number != 9999)
{
int thousands = number / 1000;
int hundreds = (number / 100) % 10;
int tens = (number / 10) % 10;
int ones = number % 10;
int values[] = {thousands, hundreds, tens, ones};
for (int i = 0; i < 4; i++)
{
clear_display();
display_digit(i, values[i]);
delay(20);
}
counter += 1;
if (counter >= 13)
{
number+=1;
counter = 0;
}
}
#endif
}