chip 74hc4051

ciao a tutti…
vorrei un informazione… io ho bisogno di 2 chip 4051 perchè mi servono 16 uscite, e vorrei usare lo stesso pin analogico… o meglio non ho più pin digitali e quindi vorrei sapere anche se mi basta solo usare 2 pin analogici e le stesse uscite digitali per entrambi i chip… in rete e sul forum non ho trovato nulla o forse non ho cercato le parole adatte… riuscite ad indirizzarmi su qualche tutorial o schema, anche per la programmazione per cortesia? grazie…

p.s.da questa domanda avrete sicuramente capito che non sono una cima in elettronica e quindi un autodidatta alle prime armi…

Rileggi quel che hai scritto, lo trovi comprensibile? :o

Perché vorresti usare per forza un pin analogico come uscita quando non ha alcuna funzione particolare ed è uguale a qualunque altro pin, anche i digitali? Le funzioni analogiche sono solo attive se i pin usati come ingressi.

in effetti è un pò confuso.....

io ho bisogno di 2 chip 4051 perchè mi servono 16 uscite

Ok, e questa si è capita, solo che il 4051 ha bisogno di almeno 3 porte per gestirlo ed e' senza Latch, quindi cosa ci devi gestire con queste 16 porte ?

16 potenziometri devo gestirci..
questo è il mio primo progetto e mi sà che mi sono spinto un po troppo oltre il limite..
allora ricapitolando:
questo chip usa 3 pin digitali ed un analogico, siccome io ho occupato tutti i digitali mentre degli analogici solo uno ne ho usato, ora non so come devo muovermi su due chip, per questo ho chiesto se si può usare i 3 digitali per entrambi i chip anche se uso 2 pin analogici differenti, dato che non son riuscito a capire come metterlo in "serie" come con i chip in digitale che ha una pin out per usare più chip.. magari non ho capito quale sia il pin out in questo chip..

Forse dovresti imparare a spiegarti un po' meglio, prima di tutto.

Comunque, forse abbiamo capito: invece di usare un 4051 perché non provi con un 4067? Ha 16 ingressi/uscite, che puoi selezionare con 4 pin.

Se può servirti, ho anche fatto una libreria per gestire questi device: GitHub - SukkoPera/Arduplex: A library that allows interfacing Arduino with various de/multiplexers.

16 potenziometri devo gestirci..

Vero, sorry, avevo in mentre un'altro IC

questo chip usa 3 pin digitali ed un analogico, siccome io ho occupato tutti i digitali mentre degli analogici solo uno ne ho usato, ora non so come devo muovermi su due chip, per questo ho chiesto se si può usare i 3 digitali per entrambi i chip anche se uso 2 pin analogici differenti, dato che non son riuscito a capire come metterlo in "serie" come con i chip in digitale che ha una pin out per usare più chip.. magari non ho capito quale sia il pin out in questo chip.

Per collegare due 4051 ti servono ( se usi due ingressi analogici , uno per chip ) solo 3 digitali in totale.
In pratica puoi mettere gli ingressi S0, S1, S2 di ogni chip in parallelo, quando poi fai la lettura sai tu da quale chip leggere, se da 1 a 8, quello collegato su A0, se da 9 a 16 quello collegato su A1

Brunello:
Vero, sorry, avevo in mentre un'altro IC
Per collegare due 4051 ti servono ( se usi due ingressi analogici , uno per chip ) solo 3 digitali in totale.
In pratica puoi mettere gli ingressi S0, S1, S2 di ogni chip in parallelo, quando poi fai la lettura sai tu da quale chip leggere, se da 1 a 8, quello collegato su A0, se da 9 a 16 quello collegato su A1

grazie, era quello che volevo capire..

SukkoPera:
Comunque, forse abbiamo capito: invece di usare un 4051 perché non provi con un 4067? Ha 16 ingressi/uscite, che puoi selezionare con 4 pin.

hai ragione, solo che già avevo comprato il 4051 quando ho visto il 4067.. finisco questi e compro il 4067

Con 2 4051 puoi fare un 4097 e aggiungendo un NOT , ma anche no …un 4067, senza avere quella patata da 24pin. Il 4051 ha avuto un successo molto superiore al 4067, puoi dislocare più facilmente sul PCB a gruppi di 8 in/out, lo trovi ovunque e a poco. Da averlo sempre in casa.

Nello schema al posto del NOT puoi mettere un transistor oppure pilotare i 2 ingressi INH con il MC separatamente

A me questo non sembra così scomodo:

ho messo 2 chip 4051.. sto scrivendo il codice, ma forse sbaglio qualcosa..
posso postarlo qui oppure devo metterlo nella sezione software?

ZioZio:
posso postarlo qui oppure devo metterlo nella sezione software?

No, no, continua in questo thread :wink:

Guglielmo

Posta pure qua, ma valuta anche di usare la mia libreria.

A0 e A1 sono i pin Analogici per i due chip e 11,12,13 i digitali..

int potenziometro = 0;
int contatore = 0;

int bit1 = 0;
int bit2 = 0;
int bit3 = 0;
int bit4 = 0;
int bit5 = 0;
int bit6 = 0;
int bit7 = 0;
int bit8 = 0;

void setup() {
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
}

void loop() {

for ( contatore = 0 ; contatore = 7 ; contatore++ ); {

bit1 = bitRead(contatore, 0);
bit2 = bitRead(contatore, 1);
bit3 = bitRead(contatore, 2);
bit4 = bitRead(contatore, 3);
bit5 = bitRead(contatore, 4);
bit6 = bitRead(contatore, 5);
bit7 = bitRead(contatore, 6);
bit8 = bitRead(contatore, 7);

digitalWrite(2, bit1);
digitalWrite(3, bit2);
digitalWrite(4, bit3);
digitalWrite(5, bit4);
digitalWrite(6, bit5);
digitalWrite(7, bit6);
digitalWrite(8, bit7);
digitalWrite(9, bit8);

potenziometro = analogRead(A0);
Serial.print(potenziometro);
Serial.print("");
}
Serial.println ("");
}/code]

Cosa dovrebbe fare questo programma? :o

Dove pensi di stare selezionando l’ingresso di interesse del multiplexer?

**>ZioZio: **ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (in basso a destra del post, bottone More → Modify) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra).

Guglielmo

for ( contatore = 0 ; contatore = 7 ; contatore++ ); {

è doppiamente sbagliato.
Ciao Uwe

uwefed:

for ( contatore = 0 ; contatore = 7 ; contatore++ ); {

è doppiamente sbagliato.

quindi?

SukkoPera:
Cosa dovrebbe fare questo programma? :o

Dove pensi di stare selezionando l'ingresso di interesse del multiplexer?

vorrei capire cosa sto sbagliando o cosa ho mancato di fare

Credo che Uwe ti stesse facendo notare che, oltre alla logica, è sbagliata anche la sintassi di quel for ...
.. hai visto nel reference come funziona il FOR ? Prova a ragionare su cosa hai scritto tu e su come, nel reference, è scritto che funziona e ... vedi se riesci a capire l'errore :wink:

Guglielmo

gpb01:
Credo che Uwe ti stesse facendo notare che, oltre alla logica, è sbagliata anche la sintassi di quel for ...
.. hai visto nel reference come funziona il FOR ? Prova a ragionare su cosa hai scritto tu e su come, nel reference, è scritto che funziona e ... vedi se riesci a capire l'errore :wink:

Guglielmo

quindi oltre ad aver sbagliato a scrivere for che non ci sta proprio, è anche sbagliata la scrittura nella stringa del codice?

Se i pin 10, 11 e 12 sono quelli che usi per pilotare il multiplexer, e quindi per scegliere l’ingresso da collegare ad A0, va bene la pinMode(), ma dovrai anche farci sopra delle digitalWrite(), altrimenti come credi che capisca il multiplexer quale ingresso ti interessa?

Visto che non mi sembri espertissimo a programmare, mi permetto di insistere: dai un’occhiata ad Arduplex/CD4051.ino at master · SukkoPera/Arduplex · GitHub e dimmi se non ti sembra più semplice da usare.