Счётчик на семисегментном индикаторе

Представленный ниже код может выводить цифры от 0 до 9 на четырёхразрядный семисегментный дисплей. Поочерёдно включаются первая-третья цифра, потом вторая-четвёртая.
На пины А1-А4 подключены катоды дисплея (по одному на цифру), на пины 2-8 подключены аноды сегментов A-G. Катоды рекомендуется подключать через резисторы на 220-1000 Ом.
int i = 0;
void setup(){
// Выставляем порты А1-А4 и 2-8 на ВЫХОД
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}
void loop(){
if(i == 0){
digitalWrite(A1, LOW);
digitalWrite(A2, HIGH);
digitalWrite(A3, LOW);
digitalWrite(A4, HIGH);
zero(1);
delay(500);
zero(0);
i = i + 1;
}
else if(i == 1){
digitalWrite(A1, HIGH);
digitalWrite(A2, LOW);
digitalWrite(A3, HIGH);
digitalWrite(A4, LOW);
one(1);
delay(500);
one(0);
i = i + 1;
}
else if(i == 2){
digitalWrite(A1, LOW);
digitalWrite(A2, HIGH);
digitalWrite(A3, LOW);
digitalWrite(A4, HIGH);
two(1);
delay(500);
two(0);
i = i + 1;
}
else if(i == 3){
digitalWrite(A1, HIGH);
digitalWrite(A2, LOW);
digitalWrite(A3, HIGH);
digitalWrite(A4, LOW);
three(1);
delay(500);
three(0);
i = i + 1;
}
else if(i == 4){
digitalWrite(A1, LOW);
digitalWrite(A2, HIGH);
digitalWrite(A3, LOW);
digitalWrite(A4, HIGH);
four(1);
delay(500);
four(0);
i = i + 1;
}
else if(i == 5){
digitalWrite(A1, HIGH);
digitalWrite(A2, LOW);
digitalWrite(A3, HIGH);
digitalWrite(A4, LOW);
five(1);
delay(500);
five(0);
i = i + 1;
}
else if(i == 6){
digitalWrite(A1, LOW);
digitalWrite(A2, HIGH);
digitalWrite(A3, LOW);
digitalWrite(A4, HIGH);
six(1);
delay(500);
six(0);
i = i + 1;
}
else if(i == 7){
digitalWrite(A1, HIGH);
digitalWrite(A2, LOW);
digitalWrite(A3, HIGH);
digitalWrite(A4, LOW);
seven(1);
delay(500);
seven(0);
i = i + 1;
}
else if(i == 8){
digitalWrite(A1, LOW);
digitalWrite(A2, HIGH);
digitalWrite(A3, LOW);
digitalWrite(A4, HIGH);
eight(1);
delay(500);
eight(0);
i = i + 1;
}
else if(i == 9){
digitalWrite(A1, HIGH);
digitalWrite(A2, LOW);
digitalWrite(A3, HIGH);
digitalWrite(A4, LOW);
nine(1);
delay(500);
nine(0);
i = i + 1;
}
else if(i > 9){
i = 0;
}
// Отключаем всё разряды.
digitalWrite(A1, HIGH);
digitalWrite(A2, HIGH);
digitalWrite(A3, HIGH);
digitalWrite(A4, HIGH);
}
void one(int status){ // Создаём функцию для цифры 1
digitalWrite(3, status);
digitalWrite(4, status);
}
void two(int status){ // Создаём функцию для цифры 2
digitalWrite(2, status);
digitalWrite(3, status);
digitalWrite(5, status);
digitalWrite(6, status);
digitalWrite(8, status);
}
void three(int status){ // Создаём функцию для цифры 3
digitalWrite(2, status);
digitalWrite(3, status);
digitalWrite(4, status);
digitalWrite(5, status);
digitalWrite(8, status);
}
void four(int status){ // Создаём функцию для цифры 4
digitalWrite(3, status);
digitalWrite(4, status);
digitalWrite(7, status);
digitalWrite(8, status);
}
void five(int status){ // Создаём функцию для цифры 5
digitalWrite(2, status);
digitalWrite(7, status);
digitalWrite(4, status);
digitalWrite(5, status);
digitalWrite(8, status);
}
void six(int status){ // Создаём функцию для цифры 6
digitalWrite(2, status);
digitalWrite(4, status);
digitalWrite(5, status);
digitalWrite(6, status);
digitalWrite(7, status);
digitalWrite(8, status);
}
void seven(int status){ // Создаём функцию для цифры 7
digitalWrite(2, status);
digitalWrite(3, status);
digitalWrite(4, status);
}
void eight(int status){ // Создаём функцию для цифры 8
digitalWrite(2, status);
digitalWrite(3, status);
digitalWrite(4, status);
digitalWrite(5, status);
digitalWrite(6, status);
digitalWrite(7, status);
digitalWrite(8, status);
}
void nine(int status){ // Создаём функцию для цифры 9
digitalWrite(2, status);
digitalWrite(3, status);
digitalWrite(4, status);
digitalWrite(5, status);
digitalWrite(7, status);
digitalWrite(8, status);
}
void zero(int status){ // Создаём функцию для цифры 0
digitalWrite(2, status);
digitalWrite(3, status);
digitalWrite(4, status);
digitalWrite(5, status);
digitalWrite(6, status);
digitalWrite(7, status);
}