Lo primero que te diré será que leas las normas del foro. Esta vez lo edité yo para poder entender tu consulta y leerlo apropiadamente.
La próxima no será asi!! Asi que presta atención, mira y lee otros hilos y aprende como se postean códigos, enlaces, fotos/imágenes, etc.
Para controlar el punto decimal solo escribe en el MSB o sea el bit mas significativo
Supongamos que quieres hacerlo en us que ya calculaste
us = (over / 1000)%10;
asi que solo agregas esto
us |= 0b10000000;
y mi respuesta surge de analizar LedControl.h ya que cuando miras
void LedControl::setDigit(int addr, int digit, byte value, boolean dp) {
int offset;
byte v;
if(addr<0 || addr>=maxDevices)
return;
if(digit<0 || digit>7 || value>15)
return;
offset=addr*8;
v=pgm_read_byte_near(charTable + value);
if(dp)
v|=B10000000; // <== CONTROL PUNTO DECIMAL
status[offset+digit]=v;
spiTransfer(addr, digit+1,v);
}
Respecto de que montaje electrónico usar, mira cual te resulta mas cómodo y adelante.
La opcion dos parece mas cómoda y menos compleja que disponeter de tantos transistores para la tarea. De alguno modo es mas limpia la 2da.
La 1 de acuerdo a que transitores uses, te permite superar corrientes y tensiones. Tiene sus ventajas pero para 12V 600mA usaría la 2.