dubbio cubo led 4x4x4

ciao a tutti, mi scuso per l'ennesimo post sui cubi led ma avrei un dubbio dovuto alla mia totale incompetenza elettronica.

allora vorrei realizzare un cubo 4x4x4 dividendo i 64 led in 4 piani e in 16 colonne, i led in un piano hanno i catodi in comune, i led in una colonna hanno gli anodi in comune. visto che riesco a gestire tutte e 20 le linee di I/O richieste con arduino volevo evitare shift register ecc.

ho cercato nella moltitudine di tutorial presenti su google ma non riesco a capire una cosa. supponiamo di voler accendere tutti i led di un piano, metto il pin relativo al catodo del piano a LOW e i 16 pin relativi alle colonne a HIGH si crea quindi differenza d potenziale e si accendono i led. limitando la corrente per ogni led a 10 mA vorrei capire quanta corrente scorre nel pin che collega il catodo dei led! può essere (n° dei led)*(corrente per singolo led) quindi 160mA? in questo caso dovrei mettere un transistor NPN? perchè in alcuni tutorial si usano transistor in altri no!

scusate la domanda super banale! :blush:
grazie

Pilota i LEd di un piano con un ULN2003 o ULN2803; quelli reggono 500mA. Poi devi mettere tra ogni uscita Arduino e la collnna una resistenza per limitare la corrente dei LED.

Non so risponderti perché in alcuni tutorial usano dei transistori e in altri no. Puoi comunque fare un multiplex a livello colonne accendendo sempre solo 4 Led alla volta. 40mA regge un pin Arduino. Cosí servono 16 cicli per accendere ogni led una volta. A confronto di un multiplex dei piani interi i led sono molto meno luminosi.

Ciao Uwe

capito! grazie della risposta!

avrei un altro piccolo dubbio. allora LEDPin[] contiene i pin a cui sono collegati gli anodi dei led (16 colonne), layer[] invece contiene i catodi dei led.

con questo frammento di codice trovato su internet non rischio l'inversione di polarità e di conseguenza di rompere i led?

 for(int pin = 0; pin < 16 ; pin++ ){
    pinMode(LEDPin[pin],OUTPUT);
    digitalWrite(LEDPin[pin],LOW);
  }
  // Set up LED Layers as output
  for(int layer = 0; layer < 4; layer++){
    pinMode(LayerPin[layer], OUTPUT);
    digitalWrite(LayerPin[layer], HIGH);
  }

smasho:
avrei un altro piccolo dubbio. allora LEDPin[] contiene i pin a cui sono collegati gli anodi dei led (16 colonne), layer[] invece contiene i catodi dei led.

con questo frammento di codice trovato su internet non rischio l'inversione di polarità e di conseguenza di rompere i led?

 for(int pin = 0; pin < 16 ; pin++ ){

pinMode(LEDPin[pin],OUTPUT);
    digitalWrite(LEDPin[pin],LOW);
  }
  // Set up LED Layers as output
  for(int layer = 0; layer < 4; layer++){
    pinMode(LayerPin[layer], OUTPUT);
    digitalWrite(LayerPin[layer], HIGH);
  }

i led sono diodi ad emissione di luce quindi invertendo la polarità non accade nulla

si so che sono dei diodi e quindi vanno in conduzione solo in un verso, xò sapevo anche che c'è una tensione di rottura dei diodi se polarizzati inversamente e volevo sapere se 5 volt potevano rompere i led

Salve, voglio costruire anche io un cubo di led 4x4x4 e ho ordinato un ULN2003AN. Sò cos'è un transistor darlington ma non ho mai usato un array di transisor, come lo devo collegare????

Grazie XD