I uploaded the scheme with the transistors... I'm using a 3 digit display but I couldn't find it in this program so I used a 4 digit display... the last 2 pins of the display from up and down are not used.
P.S. I forgot to connect the emitter of the transistors to the ground.... sorry
The code is this:
#define A 2
#define B 3
#define C 4
#define D 5
#define E 6
#define f 7
#define G 8
#define DP 9
#define CC1 10
#define CC2 11
#define CC3 12
#define numbersegments { \
{1,1,1,1,1,1,0,0},\
{0,1,1,0,0,0,0,0},\
{1,1,0,1,1,0,1,0},\
{1,1,1,1,0,0,1,0},\
{0,1,1,0,0,1,1,0},\
{1,0,1,1,0,1,1,0},\
{0,0,1,1,1,1,1,0},\
{1,1,1,0,0,0,0,0},\
{1,1,1,1,1,1,1,0},\
{1,1,1,0,0,1,1,0}\
}
byte numbers[10][8] = numbersegments;
const int segments[8] = { A, B, C, D, E, f, G, DP };
void setup() {
Serial.begin(9600);
pinMode(A, OUTPUT);
digitalWrite(A,LOW);
pinMode(B, OUTPUT);
digitalWrite(B,LOW);
pinMode(C, OUTPUT);
digitalWrite(C,LOW);
pinMode(D, OUTPUT);
digitalWrite(D,LOW);
pinMode(E, OUTPUT);
digitalWrite(E,LOW);
pinMode(f, OUTPUT);
digitalWrite(f,LOW);
pinMode(G, OUTPUT);
digitalWrite(G,LOW);
pinMode(DP, OUTPUT);
digitalWrite(DP,LOW);
pinMode(CC1, OUTPUT);
digitalWrite(CC1,HIGH);
pinMode(CC2, OUTPUT);
digitalWrite(CC2,HIGH);
pinMode(CC3, OUTPUT);
digitalWrite(CC3,HIGH);
}
void loop() {
for (int digit1=0; digit1 < 10; digit1++) {
for (int digit2=0; digit2 < 10; digit2++) {
for (int digit3=0; digit3 < 10; digit3++){
for(int t=0; t<20;t++){
setsegments(digit1,CC1,1);
setsegments(digit2,CC2,1);
setsegments(digit3,CC3,1);
}
}
}
}
}
with function of setsegments:
void setsegments(int number, int digit,int time){
for (int seg = 0; seg < 8; seg++){
if (numbers[number][seg]==1) {digitalWrite(segments[seg],HIGH);}
else {digitalWrite(segments[seg],LOW);}
}
digitalWrite(digit,LOW);
delayMicroseconds (1);
digitalWrite(digit,HIGH);
}