// led pin
#define G 5
#define F 4
#define A 2
#define B 3
#define E 8
#define D 7
#define C 6
int wait=1000; //delay
const int size=7;
int leds[size]={A,B,C,D,E,F,G};
bool error=0;
void setup() {
Serial.begin(115200);
for(int i=0;i<size;i++){
pinMode(leds[i], OUTPUT);
}
}
void loop() {
for(int number=0;number<=9;number++){
ledNumbOn(number);
if(error){
Serial.print("Error! Wrong digit: ");
Serial.println(number);
error=0;
}
delay(wait);
ledOff();
}
}
void ledNumbOn(int n){
switch(n){
case 0:
for(int i=0;i<size;i++)
if(leds[i]!=G)
digitalWrite(leds[i], HIGH);
break;
case 1:
for(int i=0;i<size;i++)
if(leds[i]!=A && leds[i]!=F && leds[i]!=G && leds[i]!=E && leds[i]!=D)
digitalWrite(leds[i], HIGH);
break;
case 2:
for(int i=0;i<size;i++)
if(leds[i]!=F && leds[i]!=C)
digitalWrite(leds[i], HIGH);
break;
case 3:
for(int i=0;i<size;i++)
if(leds[i]!=F && leds[i]!=E)
digitalWrite(leds[i], HIGH);
break;
case 4:
for(int i=0;i<size;i++)
if(leds[i]!=A && leds[i]!=E && leds[i]!=D)
digitalWrite(leds[i], HIGH);
break;
case 5:
for(int i=0;i<size;i++)
if(leds[i]!=B && leds[i]!=E)
digitalWrite(leds[i], HIGH);
break;
case 6:
for(int i=0;i<size;i++)
if(leds[i]!=B)
digitalWrite(leds[i], HIGH);
break;
case 7:
for(int i=0;i<size;i++)
if(leds[i]!=F && leds[i]!=G && leds[i]!=E && leds[i]!=D)
digitalWrite(leds[i], HIGH);
break;
case 8:
for(int i=0;i<size;i++)
digitalWrite(leds[i], HIGH);
break;
case 9:
for(int i=0;i<size;i++)
if(leds[i]!=E)
digitalWrite(leds[i], HIGH);
break;
default:
for(int i=0;i<size;i++)
if(leds[i]!=B && leds[i]!=C) // "E" error
digitalWrite(leds[i], HIGH);
error=1;
break;
}
}
void ledOff(){
for(int i=0;i<size;i++)
if(digitalRead(leds[i]))
digitalWrite(leds[i], LOW);
}