#define TOP SEG_A
#define TOP_RIGHT SEG_B
#define BTM_RIGHT SEG_C
#define BTM SEG_D
#define BTM_LEFT SEG_E
#define TOP_LEFT SEG_F
#define MIDDLE SEG_G
#define DEC_PT 6
#define SEG_A 7
#define SEG_B 8
#define SEG_C 9
#define SEG_D 10
#define SEG_E 11
#define SEG_F 12
#define SEG_G 13
void setup() {
bool doPt;
delay(2000);
for (int i=DEC_PT;i<=SEG_G;i++) {
pinMode(i, OUTPUT);
digitalWrite(i, LOW);
}
doPt = false;
for (int i=0;i<10;i++) {
digit(i,doPt);
delay(500);
doPt = !doPt;
}
}
void allOff(void) {
for (int i=DEC_PT;i<=SEG_G;i++) {
digitalWrite(i, LOW);
}
}
void digit(int val,bool pt) {
bool badVal;
badVal = false;
allOff();
switch(val) {
case 0 :
digitalWrite(TOP,HIGH);
digitalWrite(TOP_RIGHT,HIGH);
digitalWrite(BTM_RIGHT,HIGH);
digitalWrite(BTM,HIGH);
digitalWrite(BTM_LEFT,HIGH);
digitalWrite(TOP_LEFT,HIGH);
break;
case 1 :
digitalWrite(TOP_RIGHT,HIGH);
digitalWrite(BTM_RIGHT,HIGH);
break;
case 2 :
digitalWrite(TOP,HIGH);
digitalWrite(TOP_RIGHT,HIGH);
digitalWrite(MIDDLE,HIGH);
digitalWrite(BTM_LEFT,HIGH);
digitalWrite(BTM,HIGH);
break;
case 3 :
digitalWrite(TOP,HIGH);
digitalWrite(TOP_RIGHT,HIGH);
digitalWrite(MIDDLE,HIGH);
digitalWrite(BTM_RIGHT,HIGH);
digitalWrite(BTM,HIGH);
break;
case 4 :
digitalWrite(TOP_RIGHT,HIGH);
digitalWrite(MIDDLE,HIGH);
digitalWrite(BTM_RIGHT,HIGH);
digitalWrite(TOP_LEFT,HIGH);
break;
case 5 :
digitalWrite(TOP,HIGH);
digitalWrite(TOP_LEFT,HIGH);
digitalWrite(MIDDLE,HIGH);
digitalWrite(BTM_RIGHT,HIGH);
digitalWrite(BTM,HIGH);
break;
case 6 :
digitalWrite(TOP,HIGH);
digitalWrite(TOP_LEFT,HIGH);
digitalWrite(MIDDLE,HIGH);
digitalWrite(BTM_RIGHT,HIGH);
digitalWrite(BTM,HIGH);
digitalWrite(BTM_LEFT,HIGH);
break;
case 7 :
digitalWrite(TOP,HIGH);
digitalWrite(TOP_RIGHT,HIGH);
digitalWrite(BTM_RIGHT,HIGH);
break;
case 8 :
digitalWrite(TOP,HIGH);
digitalWrite(TOP_RIGHT,HIGH);
digitalWrite(BTM_RIGHT,HIGH);
digitalWrite(BTM,HIGH);
digitalWrite(BTM_LEFT,HIGH);
digitalWrite(TOP_LEFT,HIGH);
digitalWrite(MIDDLE,HIGH);
break;
case 9 :
digitalWrite(TOP,HIGH);
digitalWrite(TOP_RIGHT,HIGH);
digitalWrite(BTM_RIGHT,HIGH);
digitalWrite(MIDDLE,HIGH);
digitalWrite(TOP_LEFT,HIGH);
break;
default : badVal = true; break;
}
if (pt && !badVal) digitalWrite(DEC_PT,HIGH);
}
void loop() {
// put your main code here, to run repeatedly:
}