Ciao,
ho letto cosa hai scritto, solo che il codice non prevede questa accensione sequenziale aggiornata BIT by BIT, ma il codice viene direttamente caricato sui DEMUX. Per transizione intendi quello stato indefinito che viene inviato al DEMUX tra i vari digitalWrite?
Effettivamente, l'accensione dei LED indesiderati riscontrata, volendo accendere i LED 2-2 e 4-4 è quella dei LED:
[riga-colonna]
6-2
4-2
4-6
Potresti approfondire uno delle due soluzioni? Ad esempio cosa intendi per settare G1 o G2, devo cambiare lo stato una volta per ogni cambio? E nella seconda soluzione, come si usa il PORT D?
Quale pensi sia la migliore?
Per transizione intendi quello stato indefinito che viene inviato al DEMUX tra i vari digitalWrite?
Tu per variare i valori inviati ai due Demux usi 8 digitalWrite. Per arrivare dal stato di partenza al stato di arrivo ci sono 7 stati intermedi che accendono per brevi tempi altri led.
Effettivamente, l'accensione dei LED indesiderati riscontrata, volendo accendere i LED 2-2 e 4-4 è quella dei LED:
[riga-colonna]
6-2
4-2
4-6
come dicevi tu. Ma anche:
2-6
4-6
Non conoscendo bene il circuito e non avendolo analizzato fino in fondo é possiblie che si accendono anche altri LED. Il mio era un esempio per spiegare la situazione di transito che comporta l'accensione involuta di altri LED.
L' uso del port manipulation é descritto nel link dato.
G1 e G2 sono piedini del DEMUX 154 vedi datasheet allegato alla precedente risposta.
È preferibile la prima soluzione perché é piú veloce e puoi anche toglere una sacco di funzioni inutili.
gears_math:
Ok, ho capito.
Quindi devo fare in modo che i 4 BIT vengano caricati assieme, senza transizioni di BIT, ma con un' unica transizione di una WORD da 4 BIT.
Come se gli dovessero arrivare in contemporanea.
Quindi per fare questo unico blocco di istruzioni, in arrivo tutte insieme, tenendo nel frattempo G1 e/o G2 a livello HIGH, come posso fare?
Nel senso, per evitare questa transizione di stati, e ottenere un unico invio.
Potresti darmi un esempio da codice su come intenderesti fare?
Grazie ancora dell'aiuto!
Devi collegare i pin G1 e/o G2 dei Demux ad uno/due pin dell'Arduino e poi devi mettere uno di entrambi a livello High prima di impostare le porte dell'Arduino, poi dopo quest'operazione, riporti quel piedino a Low per attivare le uscite sul Demux.
Il progetto funziona e alla perfezione!
Alla fine ho seguito il secondo consiglio di uwefed, ovvero l'utilizzo del PORTD, anche per snellire il programma, che adesso conta 1900 righe anzichè le precedenti 2700!
Il problema erano proprio le transizioni intermedie! Adesso è perfetto.
Ringrazio ancora una volta uwefed per l'illuminazione!
Complimenti per aver beccato subito l'intoppo, senza avere il progetto tra le mani, che occhio!
Ringrazio anche leo72 e brunello.
PS: Volevo modificare il messaggio, ma l'ho eliminato. Comunque il "Quote" di leo72 riporta la mia domanda, così come era.
Devo ripostarla?
A fine progetto posterò il programma con schema elettrico e realizzazione sulla sezione "Progetti", se magari siete interessati a realizzarlo!
Grazie ancora!