Simple Scoreboard

Hello my name is Horacio, I'm from Argentina. I'm trying to make a four-digit tanteador 2 for each team. I'm no electronics, I searched the web and long reach to walk small 7-segment display common cathode. When I made the biggest display of 10 LEDs each segment (5 series and 5 series) I fail to have good gloss and segments are not completely off. To send negative LEDs I used a ULN2803 and to give positive 2 transistors 337 and 327. one I leave a picture of how I have armed middle segment. Using Arduino Uno. The code is as follows. I hope you can give me some advice.

This is how I have connected a single segment of one of the 4 digits, when this power consumes only 7mA and when off 2mA. If the code I make the pin of that digit is always on consumption increases to 13mA. Make many changes in the resistance but as usual I do not know how to make Multiplexing is faster. I hope someone can help me not that I'm wrong place.

I leave the image:

thank you very much.

Can you Reply and Attach your .jpg picture?

Sure, thx for your fast respond, sory for my english. I post the code (have some spanish helps).

int blocal=1;
int bvisit=1;
int rebote=0;
int saque=0;


int retardo=10;       // tiempo que dura encendido cada 7 seg (10 mili segundos)
int var=0;            // Valor del digito que se va a desplegar por el 7 seg.

int unidad=0;         // cuenta las unidades (derecha)
int decena=0;         // cuenta las decenas (izquierda)
int vunidad=0;         // cuenta las unidades (derecha)
int vdecena=0;         // cuenta las decenas (izquierda)

int conmutador=0;     // multiplexacion de uno a otro 7 segmentos
int cont=0;           // contador de ciclos de espera para cambiar de numero
int vcont=0;           // contador de ciclos de espera para cambiar de numero

void setup() {               
  pinMode(2, OUTPUT);  //seg a
  pinMode(3, OUTPUT);  //seg b
  pinMode(4, OUTPUT);  //seg c
  pinMode(5, OUTPUT);  //seg d
  pinMode(6, OUTPUT);  //seg e
  pinMode(7, OUTPUT);  //seg f
  pinMode(8, OUTPUT);  //seg g
  pinMode(9, OUTPUT);  //seg saque
  
  
  pinMode(10, OUTPUT);  // activa digito 1 derecha (unidad)
  pinMode(11, OUTPUT);  // activa digito 2 izquierda (decena)
  pinMode(12, OUTPUT);  // activa digito 1 derecha (unidad)
  pinMode(13, OUTPUT);  // activa digito 2 izquierda (decena)
  
  pinMode(15, INPUT);   // boton de inicio
  pinMode(16, INPUT);   // boton de parada
    
}

void loop() {
  
 //delay(retardo);               // tiempo que dura encendido cada 7seg antes de cambiar al otro
 if (rebote == 0){
   blocal=digitalRead(15);
   bvisit=digitalRead(16);
   delay(5);
   if (blocal == 0 && bvisit==0){   // poner a cer
     rebote++;
     unidad=-1;
     vunidad=-1;
     decena=0;
     vdecena=0;
     saque=0;
   }  
   if (blocal==0){
           rebote++;
           cont++;  
           saque=1;      
   }
   if (bvisit==0){
           rebote++;
           vcont++;
           saque=2;        
   }
   
 }  
 else{
     rebote++;
   delay(5);
     if (rebote == 40){
       rebote=0;
       }
   
 }
 
 if (cont==1){              // cada cuanto tiempo (ciclos)cambia un numero
      cont=0;                 // inicializa el contador de ciclos   
    unidad=unidad+1;          // incrementa la unidad, primer 7seg
    if (unidad >= 10){        // cuando la unidad llegue a 10 incrementa la decena 
        decena=decena+1;      // incrementa la decena,  segundo 7seg
      unidad=0;               // regresa la unidad a cero
      if (decena>=10){        // cuando la decena llegue a 10 se inicializa a cero    
       decena=0; 
      }      
    }
 }
 
 if (vcont==1){              // cada cuanto tiempo (ciclos)cambia un numero
      vcont=0;                 // inicializa el contador de ciclos   
    vunidad=vunidad+1;          // incrementa la unidad, primer 7seg
    if (vunidad >= 10){        // cuando la unidad llegue a 10 incrementa la decena 
        vdecena=vdecena+1;      // incrementa la decena,  segundo 7seg
      vunidad=0;               // regresa la unidad a cero
      if (vdecena>=10){        // cuando la decena llegue a 10 se inicializa a cero    
       vdecena=0; 
      }      
    }
 }
  
    
    if (conmutador == 0) {    // hace la multiplexacion conmutando entre los dos 7seg  izq y der
      digitalWrite(10, 1);    // enciende el derecho
      digitalWrite(11, 0);    // apaga el izquierdo
      digitalWrite(12, 0);    // enciende el derecho
      digitalWrite(13, 0);    // apaga el izquierdo
      
      var=unidad;             // iguala la variable que escribe el numero en el 7seg al valor de la unidad
      conmutador=1;           // cambia el conmutador para que en el siguiente ciclo cumpla la otra condicion
      
    }
    else {
    if (conmutador == 1) {    // hace la multiplexacion conmutando entre los dos 7seg  izq y der
      digitalWrite(10, 0);    // enciende el derecho
      digitalWrite(11, 1);    // apaga el izquierdo
      digitalWrite(12, 0);    // enciende el derecho
      digitalWrite(13, 0);    // apaga el izquierdo
      
      var=decena;             // iguala la variable que escribe el numero en el 7seg al valor de la unidad
      conmutador=2;           // cambia el conmutador para que en el siguiente ciclo cumpla la otra condicion
      
    }
    else {
       if (conmutador == 2) {    // hace la multiplexacion conmutando entre los dos 7seg  izq y der
      digitalWrite(10, 0);    // enciende el derecho
      digitalWrite(11, 0);    // apaga el izquierdo
      digitalWrite(12, 1);    // enciende el derecho
      digitalWrite(13, 0);    // apaga el izquierdo
      if (saque==1){
        digitalWrite(9,1);
      }
         else {
           digitalWrite(9,0);
         }
      var=vunidad;             // iguala la variable que escribe el numero en el 7seg al valor de la unidad
      conmutador=3;           // cambia el conmutador para que en el siguiente ciclo cumpla la otra condicion
      
    }
    else {
       if (conmutador == 3) {    // hace la multiplexacion conmutando entre los dos 7seg  izq y der
      digitalWrite(10, 0);    // enciende el derecho
      digitalWrite(11, 0);    // apaga el izquierdo
      digitalWrite(12, 0);    // enciende el derecho
      digitalWrite(13, 1);    // apaga el izquierdo
      if (saque==2){
        digitalWrite(9,1);
      }
         else {
           digitalWrite(9,0);
         }
      var=vdecena;             // iguala la variable que escribe el numero en el 7seg al valor de la unidad
      conmutador=0;           // cambia el conmutador para que en el siguiente ciclo cumpla la otra condicion
      
    }
     }
      }
       }
        
        
    switch (var) {
    case 1:                 //escribe en el 7seg el numero 1
      digitalWrite(2, 0);
      digitalWrite(3, 1);
      digitalWrite(4, 1);
      digitalWrite(5, 0);
      digitalWrite(6, 0);
      digitalWrite(7, 0);
      digitalWrite(8, 0);
     break;
    case 2:                //escribe en el 7seg el numero 2
      digitalWrite(2, 1);
      digitalWrite(3, 1);
      digitalWrite(4, 0);
      digitalWrite(5, 1);
      digitalWrite(6, 1);
      digitalWrite(7, 0);
      digitalWrite(8, 1);
     break;      
    case 3:               //escribe en el 7seg el numero 3
       digitalWrite(2, 1);
       digitalWrite(3, 1);
       digitalWrite(4, 1);
       digitalWrite(5, 1);
       digitalWrite(6, 0);
       digitalWrite(7, 0);
       digitalWrite(8, 1);
      break;
    case 4:               //escribe en el 7seg el numero 4
      digitalWrite(2, 0);
      digitalWrite(3, 1);
      digitalWrite(4, 1);
      digitalWrite(5, 0);
      digitalWrite(6, 0);
      digitalWrite(7, 1);
      digitalWrite(8, 1);
     break;
    case 5:               //escribe en el 7seg el numero 5
      digitalWrite(2, 1);
      digitalWrite(3, 0);
      digitalWrite(4, 1);
      digitalWrite(5, 1);
      digitalWrite(6, 0);
      digitalWrite(7, 1);
      digitalWrite(8, 1);
     break;
    case 6:               //escribe en el 7seg el numero 6
      digitalWrite(2, 1);
      digitalWrite(3, 0);
      digitalWrite(4, 1);
      digitalWrite(5, 1);
      digitalWrite(6, 1);
      digitalWrite(7, 1);
      digitalWrite(8, 1);
     break;
    case 7:              //escribe en el 7seg el numero 7
      digitalWrite(2, 1);
      digitalWrite(3, 1);
      digitalWrite(4, 1);
      digitalWrite(5, 0);
      digitalWrite(6, 0);
      digitalWrite(7, 0);
      digitalWrite(8, 0);
     break;
    case 8:              //escribe en el 7seg el numero 8
      digitalWrite(2, 1);
      digitalWrite(3, 1);
      digitalWrite(4, 1);
      digitalWrite(5, 1);
      digitalWrite(6, 1);
      digitalWrite(7, 1);
      digitalWrite(8, 1);
      break;
    case 9:               //escribe en el 7seg el numero 9
      digitalWrite(2, 1);
      digitalWrite(3, 1);
      digitalWrite(4, 1);
      digitalWrite(5, 0);
      digitalWrite(6, 0);
      digitalWrite(7, 1);
      digitalWrite(8, 1);
     break;
    case 0:                //escribe en el 7seg el numero 0
       digitalWrite(2, 1);
       digitalWrite(3, 1);
       digitalWrite(4, 1);
       digitalWrite(5, 1);
       digitalWrite(6, 1);
       digitalWrite(7, 1);
       digitalWrite(8, 0);
      break;
           
    default: 
       digitalWrite(2, 0);
       digitalWrite(3, 0);
       digitalWrite(4, 0);
       digitalWrite(5, 0);
       digitalWrite(6, 0);
       digitalWrite(7, 0);
       digitalWrite(8, 0);
      
  }
  
 }

Try adding a 10K resistor from base of BC327 to 12V to ensure the PNP is turned off. Right now there is nothing to bring the base high.

Thx the led turned off, but the led no bright to much, only consumed 7mA

I can change the transistor with TIP127?

You will have better luck with a Low Rds, P-channel MOSFET. It will act almost like a zero resistance switch and allow the most current to the LEDs.
Example:
http://www.digikey.com/product-detail/en/infineon-technologies/IPP80P03P4L04AKSA1/IPP80P03P4L04AKSA1-ND/2338161
Rds = 0.0044 ohm
You will also see better results by dropping the ULN2803, which has a lot of voltage drop across it, and use an open drain shift register part like TPIC6C595 or TPIC6B595.
http://www.digikey.com/product-search/en/integrated-circuits-ics/logic-shift-registers/2556326?k=tpic6b595&pv16=6524&mnonly=0&newproducts=0&ColumnSort=0&page=1&stock=1&quantity=0&ptm=0&fid=0&pageSize=25
The combination will allow a higher voltage across the LEDs, thus allowing more current flow & brighter output.

Thanks for your great help, I'll try as it is today night. In my city it is very difficult to get components'll see what I can find.

Do you know the Vf of the LEDs you have used.

I assume you have used high-brightness LEDs.
They could have a Vf of 2.4volt (red) or 3.3volt (other colours).

Five LEDs in series need 5 * 2.4volt = 12volt.
Plus ~1.5volt for the ULN2803 (old darlington array).
Plus 0.5volt for the transistor.
Plus 1-2volt for the current limiting resistor.

You need at least a 14.5 to 15.5volt supply for 5 red LEDs.
Or a 19 to 20volt supply for different colour LEDs.
A 12volt supply won’t cut it.

Try to find an old laptop supply (19volt).
Use the circuit you have (with an extra 10k bleed resistor between emitter and base of the BC327).
Calculate/change the current limiting resistor for the right LED current.
Leo…