Arduino +Sparkfuns 4-digit 7-segment 16pin display

Hi All.

After my fisrt post, I got deeper in the net and found some example here : Archives | Project Lab.

I managed to use the display. Here is the code and a picture of the "beast" with pins explanation (actually, it only displays 1 2 3 4 but from my point of view a good example to understand how it works).
(Note : I can't manage to post a picture. If someone explain me how to do it, i'll post the picture...)

The code does not use decimal points and colons but as soon as you will have understand the code, you will agree that it is easy to add.

A question for hari : I don't understand why you got so many resistances ? I only used 1 resistance per digit positive entry (not for A, B, C, D, E, F, G...). Is it a mistake ?

If any questions, feel free.

Jérémy

------------------ CODE TESTED OK ------------------------
// These are indexes into the groundPins array
#define G 6
#define F 5
#define E 4
#define D 3
#define C 2
#define B 1
#define A 0

int groundPins[8] = {0, 1, 2, 3, 4, 5, 6, 7};
int digitPins[4] = {8, 12, 10, 11}; // positive voltage supply for each of the 4 digits
int ON = HIGH;
int OFF = LOW;
int number[10][7]; // holds information about which segments are needed for each of the 10 numbers
int digit[4]; // holds values for each of the 4 display digits

void setup()
{
// Fill the numbers array
initNumber();
// Set ground pin to output/high
for(int i=0; i < 8; i++)
{
pinMode(groundPins*, OUTPUT);*
_ digitalWrite(groundPins*, HIGH);_
_
} // end for(int i=0; i < 8; i++)*_

* // Set digit pin to output/low*
* for(int i=0; i < 4; i++)*
* {*
_ pinMode(digitPins*, OUTPUT);
digitalWrite(digitPins, LOW);
} // end for(int i=0; i < 2; i++)*_

} // end void setup()
void loop()
{
* digit[0] = 1;*
* digit[1] = 2;*
* digit[2] = 3;*
* digit[3] = 4;*
* DisplayNumber();*

} // end void loop()
void DisplayNumber()
{

* for(int g=0; g < 7; g++)*
* {*
* digitalWrite(groundPins[g], LOW);*
* for(int i=0; i < 4; i++)*
* {*
_ if (digit < 0)
* {
continue;
}
digitalWrite(digitPins, number[digit][g]);
}
// delay(getDelay());
delay(1); // Don't understand why I Have to set a delay*

* digitalWrite(groundPins[g], HIGH);
}*_

} // end void DisplayNumber()
int getDelay() {
* if (millis() > 10000) {*
* return 0;*
* } else {*
_ return (int) (((10000 - millis()) / 10000.0) * 125);
* }
}
void initNumber()
// Fill an array (declared as global variable) with high/low values for numbers*

{
* number[0][G] = OFF;
number[0][F] = ON;
number[0][E] = ON;
number[0][D] = ON;
number[0]
```c*_

* = ON;
 number[0][B] = ON;
 number[0][A]     = ON;

number[1][G]  = OFF;
 number[1][F] = OFF;
 number[1][E] = OFF;
 number[1][D]  = OFF;
 number[1][C] = ON;
 number[1][B] = ON;
 number[1][A]     = OFF;

number[2][G]  = ON;
 number[2][F] = OFF;
 number[2][E] = ON;
 number[2][D]  = ON;
 number[2][C] = OFF;
 number[2][B] = ON;
 number[2][A]     = ON;

number[3][G]  = ON;
 number[3][F] = OFF;
 number[3][E] = OFF;
 number[3][D]  = ON;
 number[3][C] = ON;
 number[3][B] = ON;
 number[3][A]     = ON;

number[4][G]  = ON;
 number[4][F] = ON;
 number[4][E] = OFF;
 number[4][D]  = OFF;
 number[4][C] = ON;
 number[4][B] = ON;
 number[4][A]     = OFF;

number[5][G]  = ON;
 number[5][F] = ON;
 number[5][E] = OFF;
 number[5][D]  = ON;
 number[5][C] = ON;
 number[5][B] = OFF;
 number[5][A]     = ON;

number[6][G]  = ON;
 number[6][F] = ON;
 number[6][E] = ON;
 number[6][D]  = ON;
 number[6][C] = ON;
 number[6][B] = OFF;
 number[6][A]     = ON;

number[7][G]  = OFF;
 number[7][F] = OFF;
 number[7][E] = OFF;
 number[7][D]  = OFF;
 number[7][C] = ON;
 number[7][B] = ON;
 number[7][A]     = ON;

number[8][G]  = ON;
 number[8][F] = ON;
 number[8][E] = ON;
 number[8][D]  = ON;
 number[8][C] = ON;
 number[8][B] = ON;
 number[8][A]     = ON;

number[9][G]  = ON;
 number[9][F] = ON;
 number[9][E] = OFF;
 number[9][D]  = ON;
 number[9][C] = ON;
 number[9][B] = ON;
 number[9][A]     = ON;
}
---------------------------------------------------------------

_```*_