Go Down

Topic: Programmazione cubo led (Read 7160 times) previous topic - next topic

maggio93

Mar 21, 2012, 08:41 pm Last Edit: Mar 22, 2012, 01:55 pm by maggio93 Reason: 1
Ciao a tutti, rieccomi con un nuovo quesito per voi!!!

Ho comprato arduino un po' di tempo fa con l'intento di realizzare il famoso cubo di led... dopo tanto tempo l'ho fatto... Bellissimo... ma vorrei tanto capirci qualcosa nella programmazione... :( ...ovviamente ho copiato tutto il progetto (codice compreso) da un sito... Da quello che ho potuto capire leggendo le righe del programma è tutta una scelta casuale che mi accende i led... Solo che vorrei provare a farmi una sequenza di accensione tutta mia... Scrivere righe di codice non fa per me... non ci capisco nulla di C...

Non so se conoscete Minibloq... E' un software che consente di programmare a blocchi... io mi trovo molto bene... ma per il cubo non so proprio come fare...
se io del livello 1 voglio accendere solo il led centrale... come faccio??? A quali pin devo assegnare il valore HIGH?? Dopo tutta la "fatica" fatta per costruire il cubo vorrei poterlo personalizzare :)

Come sempre, so che riuscirete a darmi una risposta soddisfacente, quindi anche stavolta ci spero!! Grazie a tutti voi che sopportate le domande di tutti i principianti!! ;)
Pagina FB: https://www.facebook.com/pages/LaLed/442032022502554?ref=hl

Sito: http://www.laled.altervista.org

QuercusPetraea

Se vuoi accendere quel LED devi mettere HIGH solo  i pin 10 e 5.
Se invece vuoi accendere il 1° LED in alto a destra devi mettere HIGH solo i pin 1 e 12.
In pratica ogni livello comanda 9 LED per "piano" tramite i pin da 10 a 12, ed i 9 LED del piano sono singolarmente comandati dai pin da 1 (occhio che c'è il TX della seriale) a 9 così puoi accendere quanti LED vuoi per ogni piano.

Ciao
QP

Ianero

Si vede chiaramente dal progetto, come ti ha detto anche QuercusPetraea, hai il seguente schema:
Livello 1 (pin 10): da pin 9 a pin 1 regoli ogni singolo led
Livello 2 (pin 11): da pin 9 a pin 1 regoli ogni singolo led
Livello 3 (pin 12): da pin 9 a pin 1 regoli ogni singolo led

Ciao,
Biagio.


RxxK

@maggio93 sono interessato anche io a questo progetto, non è sapresti indicarmi i link da dove hai preso tutto il materiale per realizzarlo ?? grazie :D

dancol90

#4
Mar 21, 2012, 11:54 pm Last Edit: Mar 22, 2012, 12:02 am by dancol90 Reason: 1
Scusate se mi intrometto...
Così com'è indicato nello schema postato da @maggio93 i transistor in questo caso vengono usati come semplici interruttori giusto?
Cioè servono solo per aprire\chiudere il collegamento col gnd? Quindi la corrente per alimentare i led viene direttamente dai pin dell'arduino?
Ma così non si rischia di rovinare la scheda se vengono accesi tutti insieme?

Scusate la miriade di domande ma sono curioso di capire, non ho mai usato i transistor fin'ora  :P

QuercusPetraea


...
Così com'è indicato nello schema postato da @maggio93 i transistor in questo caso vengono usati come semplici interruttori giusto?
Cioè servono solo per aprire\chiudere il collegamento col gnd? Quindi la corrente per alimentare i led viene direttamente dai pin dell'arduino?

Ma così non si rischia di rovinare la scheda se vengono accesi tutti insieme?
...


Si. Viste le correnti in gioco il rischio è reale. Una soluzione è pilotare i catodi con un ULN2803 o 2804, ma ne servono 2 perchè ogni chip ha 8 I/O.

Ciao
QP

Federico

AH ricordo, quello che TUTTI ti avevano sconsigliato di seguire come progetto iniziale! Hai voluto la bici? ORA...

Dopo tutto questo tempo sul forum pero' potevi imparare a scrivere il titolo del topic, no?
Dai!

F
Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

GS88

Urca ma per curiosità ho dato un occhio a minibloq e mi pare più complesso che imparare a scrivere il codice... Sei sicuro della strada che stai prendendo?

ps. se butti, dimmi dove  :D

smasho


Scusate se mi intrometto...
Così com'è indicato nello schema postato da @maggio93 i transistor in questo caso vengono usati come semplici interruttori giusto?
Cioè servono solo per aprire\chiudere il collegamento col gnd? Quindi la corrente per alimentare i led viene direttamente dai pin dell'arduino?
Ma così non si rischia di rovinare la scheda se vengono accesi tutti insieme?

Scusate la miriade di domande ma sono curioso di capire, non ho mai usato i transistor fin'ora  :P


il tuo ragionamento è corretto, infatti di solito per pilotare il cubo si utilizza il multiplexing per piani.

Michele Menniti

#9
Mar 22, 2012, 11:50 am Last Edit: Mar 22, 2012, 02:20 pm by Michele Menniti Reason: 1


...
Così com'è indicato nello schema postato da @maggio93 i transistor in questo caso vengono usati come semplici interruttori giusto?
Cioè servono solo per aprire\chiudere il collegamento col gnd? Quindi la corrente per alimentare i led viene direttamente dai pin dell'arduino?

Ma così non si rischia di rovinare la scheda se vengono accesi tutti insieme?
...


Si. Viste le correnti in gioco il rischio è reale. Una soluzione è pilotare i catodi con un ULN2803 o 2804, ma ne servono 2 perchè ogni chip ha 8 I/O.

Ciao
QP

Mi permetto di aggiungere un semplice calcolo: una R da 270ohm (questo è il valore che mostra fritzing) limita la corrente a circa 18-19mA, corrente che sarà utilizzata per alimentare un solo LED; se il firmware prevede un piano per volta, come mi auguro, il micro erogherà circa 160-170mA, valore molto prossimo al suo limite; se malauguratamente si dovesssero accendere due o, peggio, tre livelli, il micro salta di sicuro; chi ha progettato questa cosa, sapendo che il firmware è libero e manipolabile da gente inesperta (senza offesa, ma lo afferma lui stesso) come maggio93 o come altri che in questo Topic manifestano dei dubbi di conoscenza, sappia che è un potenziale assassino di micro, una sorta di MCU Serial Killer ]:D
La soluzione più economica probabilmente è quella di montare altri 9 transistor NPN (qualsiasi tipo, tanto al massimo devono sopportare 60mA), oppure un paio di ULN2004 (7 darlington), eliminando così anche i tre transistor interruttori. Naturalmente vanno benissimo i 2803/04 anche se, viste le bassissime correnti in gioco forse sono un po' sprecati.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

maggio93

Vi capisco, il titolo fa schifo ma vi assicuro che non volevo creare effetti di alcun tipo... Il mio titolo voleva essere "ironico"... insomma, vi chiedo scusa e prometto di impegnarmi per le prossime volte..  per adesso, va bene questo nuovo??
Pagina FB: https://www.facebook.com/pages/LaLed/442032022502554?ref=hl

Sito: http://www.laled.altervista.org

Michele Menniti


Vi capisco, il titolo fa schifo ma vi assicuro che non volevo creare effetti di alcun tipo... Il mio titolo voleva essere "ironico"... insomma, vi chiedo scusa e prometto di impegnarmi per le prossime volte..  per adesso, va bene questo nuovo??

sei un grande ;) ora però leggiti le risposte che ti abbiamo dato, quello strumento è potenzialmente pericoloso per il micro di Arduino...
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

pablos

Bhe se non lo butta perché non ci capisce niente, lo butta perché si è sciolto, "simpre in ta munnezza finisce" lol
no comment

dancol90

Se si volesse tenere la parte hardware così com'è, non si potrebbe accendere al max un paio di led alla volta per pochi ms, dal primo all'ultimo nel cubo, sfruttando l'effetto POV? La corrente consumata sarebbe limitata (20ma per pin, come diceva @menniti poco sopra) e per brevi periodi...quindi si potrebbe evitare di bruciare tutto...
Ora capisco che è un approccio parecchio più complesso e magari per @maggio93 non è la cosa più semplice, ma come idea potrebbe andare? Quanti ms dovrebbe rimanere acceso ogni led per avere un effetto decente e non vedere sfarfallii?

Michele Menniti


Se si volesse tenere la parte hardware così com'è, non si potrebbe accendere al max un paio di led alla volta per pochi ms, dal primo all'ultimo nel cubo, sfruttando l'effetto POV? La corrente consumata sarebbe limitata (20ma per pin, come diceva @menniti poco sopra) e per brevi periodi...quindi si potrebbe evitare di bruciare tutto...
Ora capisco che è un approccio parecchio più complesso e magari per @maggio93 non è la cosa più semplice, ma come idea potrebbe andare? Quanti ms dovrebbe rimanere acceso ogni led per avere un effetto decente e non vedere sfarfallii?

a mio parere il problema non è quanto stanno accesi ma quanto stanno spenti, infatti il problema è "vederli accesi" quando "sono spenti", e questo dipende dalla persistenza ottica dei nostri occhi, io credo che si possano accendere contemporaneamente i 9 led, la corrente è alta ma comunque rientra nell'erogabile dell'ATmega, quindi realizzare un multiplexer sui tre transistor di livello è una cosa fattibile, penso che un delay di 10ms tra un livello e l'altro garantisca un buon effetto visivo senza che esploda tutto, ovviamente roba da guardare per qualche minuto, non certo da lasciare tutto il giorno acceso in salotto :smiley-mr-green:
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Go Up