Go Down

Topic: Controllare 20 LED in funzione del tempo (Read 1 time) previous topic - next topic

srecalcati

Buongiorno a tutti.  Sono Stefano e sono qui per chiedervi consiglio riguardo a un progetto che vorrei portare a termine. Premetto che sono un neofita in materia Arduino, pur conoscendo rudimenti di C e visual basic.

Essendo la mia domanda sia sull'hardware che sul software, ho pensato di postarla qui per evitare due topic distinti nelle sezioni corrispondenti. Ditemi voi se sia più intelligente fare due post.

Riguardo l'hardware
. La prima questione importante che vorrei capire è se sia possibile controllare 20 led in modo indipendente e semplice. So che normalmente Arduino ha 14 pin per gli output e che ci sono modi per controllare più di un led contemporaneamente con un solo pin con la tecnica del Charlieplexing o simili. Sinceramente, però, al di fuori di collegamenti tra pin e led, saldature di resistenze e poco altro, non sono ferrato in elettronica e "costruire" circuiti aggiuntivi con componenti integrati non è per me un'opzione. C'è un modo per ampliare il numero di output, magari con una scheda aggiuntiva facilmente implementabile? Se sì, potreste gentilmente consigliarmi quale Arduino e quale scheda acquistare?  Tale sistema dovrebbe funzionare di continuo, 24/24 per lunghi periodi. Ci sono controindicazioni?

Riguardo il software. Il progetto prevede di controllare 20 led affinché ogni 5 minuti cambino configurazione, per un totale di 144 configurazioni distinte sulle 24 ore.
Per semplicità supponiamo che io abbia 3 led e che ogni 5 minuti voglia che questi  si accendano secondo 3 configurazioni diverse, ad esempio: {{0,1,0}, {1,0,0}, {0,1,1}}. "Basterebbe" ciclare nelle righe di questa matrice ogni 5 minuti ed assegnare i valori 0/1 ai pin corrispondenti per ottenere il risultato desiderato.  È possibile fare una cosa di questo tipo in maniera semplice? Se sì, una Buonanima potrebbe aiutarmi nell'implementazione di un codice di questo tipo? Credo che poi dovrei  essere in grado di ampliare il programma per 20 led e 144 configurazioni (ho già scritto in linguaggio C la matrice necessaria, che se volete allego).

Andando contro ai principi di un buon ingegnere elettronico/informatico (mi scuso se per questo qualcuno si offendesse) vorrei  aggiungere che non cerco, sia dal punto di vista software che hardware, soluzioni sofisticate: ne preferisco macchinose ma semplici, piuttosto che eleganti ma complesse.
Ringraziandovi di cuore per qualunque forma di aiuto, mi rimetto a voi.

Grazie, Stefano.

gpb01


Buonasera,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :)

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. ;)
Search is Your friend ... or I am Your enemy !

gpb01

Scusa, ho visto la tua presentazione ... se provi a leggere tutto il REGOLAMENTO, al punto 16.7 c'è spiegato a cosa serve ... magari se, sia secondo quello che ti ho scritto nel post qua sopra, sia secondo il regolameto la completi ... ci aiuti. :)  Grazie.

Guglielmo
Search is Your friend ... or I am Your enemy !

gpb01

In ogni caso, la scelta giusta potrebbe essere Arduino MEGA che ha 54 pin di I/O e che quindi ti permette, senza problemi, la gestione di 20 linee per i tuoi LED, ma ... scordati di non dover utilizzare hardware esterno ...

... ogni pin di Arduino può dare al massimo, a Vcc, 40 mA (... ma quello è veramente un limite, nel normale funzionamento occorre stare al 60-70% di detto valore) ed inoltre la somma di tutti i pin e dell'assorbimento del chip, non deve superare al massimo i 200 mA (... e anche qui massimo va considerato come valore limite, ma nel normale funzionamento occorre stare al 60-70% di detto valore).  Assorbimenti oltre detti limiti possono danneggiare irrimediabilmente il chip.

Quindi, per rientrare nei limiti dell'assorbimento, dovrai usare dei "driver esterni" che pilotano i LED ... ad esempio, ti consiglio i semplicissimi UNL2003A che colleghi direttamente alle uscite di Arduino e che, con le dovute resistenze colleghi ai LED.  Ogni ULN2003A può pilotare 7 LED quindi a te ne occorrerano 3 (e ti avanza un pin :D).

Guglielmo

Search is Your friend ... or I am Your enemy !

srecalcati

Grazie Guglielmo, ho provveduto a completare la mia presentazione, spero che ora vada bene.

Quella dei driver è cosa di cui devo tenere conto. Quindi per quanto riguarda l'hardware potrei essere a posto, giusto? Arduino MEGA più tre driver? Mi puoi dire quanti pin occupa un driver?

Grazie  :)

gpb01

#5
Mar 31, 2019, 07:21 pm Last Edit: Mar 31, 2019, 07:22 pm by gpb01
Se usi gli UNL2003A, come puoi vedere dal datasheet, hai vari "case", ma sicuramente il più semplice da usare a livello amatoriale è il PDIP16 :)

2 pin per l'alimentazione, 7 pin in ingresso da collegare ai pin di Arduino, 7 pin per le uscite da collegare a 7 resistenze ed a 7 LED.

Guglielmo
Search is Your friend ... or I am Your enemy !

srecalcati

Questo è il driver che cerco secondo te?

https://www.conrad.it/p/texas-instruments-cd74hct251e-ic-logico-multiplexer-alimentazione-singola-multiplexer-pdip-16-1015877?gclid=Cj0KCQjwyoHlBRCNARIsAFjKJ6D1EmrW6eIrFiqWpNQr3ng1wwS9LguSMBlk9a3jpW_dIAWT6OcwRDAaAvP8EALw_wcB&source=googleps

Grazie :)

gpb01

#7
Mar 31, 2019, 08:49 pm Last Edit: Mar 31, 2019, 08:49 pm by gpb01
Quello NON c'entra nulla, è un multiplexer che prende 8 ingressi e li fa uscire su un uscita (e la sua negata).

A te serve un driver per pilotare i LED e il chip è quello che ti ho indicato.

Guglielmo
Search is Your friend ... or I am Your enemy !

srecalcati

Sono davvero ignorante, mi sono lasciato ingannare dall'involucro.

Questo mi sembra più corretto, giusto?

https://www.ebay.it/i/173336319317?chn=ps

Grazie :)

gpb01

... ci sono migliaia di chip diversi in PDIP16 ;) 

Si, gli ultimi che hai linkato sono degli UNL2003.

Guglielmo
Search is Your friend ... or I am Your enemy !

Standardoil

Un pensiero mi dice che stai pensando a un orologio che scrive una cosa del tipo:
Otto meno venti
Accendendo dei led dietro le scritte
Comunque, qualunque cosa tu faccia, se vai col tempo ti serve un rtc
Prima legge di Nelson (che sono io): A parità di risultato maggiore è il pensiero, minore il lavoro. Quindi prima di fare pensa!
Non si da retta a studenti: andate a copiare da un'altra parte...
Lo hai visto su Youtube? -> lo chiedi su Youtube

srecalcati

#11
Mar 31, 2019, 11:05 pm Last Edit: Mar 31, 2019, 11:19 pm by srecalcati
Standardoli che dire, sei molto perspicace, bravo. Non volevo usare la parola orologio per non incappare in complicazioni non necessarie. Per l'utilizzo che ne farei, non ho interesse nell'avere un orologio preciso, oltretutto la sensibilità è di 5 minuti, non potrebbe mai restituire l'orario corretto :) Detto ciò, vorrei fare a meno di dispositivi come gli RTC.

La prima riga della matrice che utilizzo è pensata per restituire le 12.35, il giorno che accenderò l'orologio lo farò a quell'ora e se il timer di Arduino è abbastanza preciso (e credo che lo sia), non potrà mai generare un ritardo di 5 minuti neanche nel giro dei prossimi 23/30 anni :D E comunque potrei sempre recuperare l'eventuale ritardo spegnendo e riaccendendo da buon "analfabeta informatico". In realtà mi piacerebbe che sia preciso, è ovvio, ma vorrei ancora di più che sia il più semplice possibile.

Grazie, Stefano.




Patrick_M

beeep ... errore

Quote
non potrà mai generare un ritardo di 5 minuti neanche nel giro dei prossimi 23/30 anni
assunzione errata

puoi perdere/guadagnare anche più di 2-3 secondi ogni ora quindi in 150 ore (poco più di 6 giorni) ti fumi i primi 5 minuti :)
per inserire (lo sketch) il programma, dall'IDE clicca modifica, clicca copia per il forum poi vieni qui e incolla nel tuo post (ctrl+v) ;)

srecalcati

Sorprendente, non mi aspettavo un tale errore (circa 3/10 volte peggiore di una sveglia meccanica). Okay, devo ripensare all'utilizzo di un rtc come giustamente Standardoil aveva detto.  Il problema è che non ho idea di come implementarne uno nè a livello di hardware nè a livello di software. Spero che qualcuno mi possa aiutare.

Grazie!

gpb01

Basta che compri QUESTO ed usi le relative librerie software.

Guglielmo
Search is Your friend ... or I am Your enemy !

Go Up