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!
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.
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????