Multiplexer analogico con Arduino e CD4051 -
HTML-код
- Опубликовано: 20 июл 2024
- In questo video vedremo come aggiungere un multiplexer (MUX) analogico ad Arduino per aumentare i suoi ingressi analogici.
Sorgenti, schemi e slide:
github.com/zmaker/arduino_coo...
Indice dei video:
www.zeppelinmaker.it/arduino100/
Puoi scaricare gratuitamente i miei libri:
"Il manuale di Arduino - gumroad.com/l/arduino
"Il cookbook di Arduino": gumroad.com/l/arduinocookbook
Altre informazioni e libri sul mio sito: www.zeppelinmaker.it
I sorgenti su github:
github.com/zmaker/arduino_coo...
Paolo, ma anche qualche video (ovviamente in futuro) che riguarda il tuo lavoro come riparatore non sarebbe male. Ogni tanto racconti qualche piccolo trucco e li ho trovati sempre interessanti.
Ormai sei un appuntamento fisso giornaliero :)
Ciao! Sicuramente si. Ne ho pubblicato qualcuno alcuni mesi fa, ma sarebbe interessante approfondire...
Buongiorno +paolo aliverti ! Grazie per questa nuova guida ! Molto interessante per un inesperto come me, alle prese con l'elettronica ! Ho studiato il MUX in un ottimo corso “From NAND to Tetris” (suddiviso in 2 parti), gratuito, sulla piattaforma di MOOC Coursera: lo consiglio alla grande a tutti gli appassionati della materia ! Si parte dal NAND, poi si sviluppano chip sempre più complessi, passando per AND, XOR, MUX, DEMUX, BIT, REGISTRI, RAM...e poi CPU, Assembler...e qui finisce il primo corso; il secondo riparte da lì, per poi sviluppare Compilatore, Linguaggio di programmazione, OS ed infine il Tetris ! Ogni volta si sviluppa su quanto già implementato, quindi la sensazione, procedendo nel corso, è davvero piacevole ! Ho completato solo la prima parte, ma prima o poi farò anche il secondo corso ! Comunque il primo è stato fantastico, per me che non ne sapevo praticamente nulla, venendo dal mondo della programmazione (autodidatta) ! Il tutto viene sviluppato con del software fornito gratuitamente durante il corso, ed i vari chip si implementano in HDL, quindi non ci sono componenti hardware.
Tornando al tuo video qui, giusto una brevissima puntualizzazione: a 5:50 dici che un int è memorizzato in 16 bit (2 byte). Siccome sono abituato al linguaggio C, dove, per la maggior parte dei compilatori e sui moderni processori e sistemi operativi (la dimensione di un tipo di variabile dipende da una combinazione di 3 aspetti, dunque), int è memorizzato in 4 byte, ho dato un'occhiata alla documentazione di Arduino:
“
Integers are your primary data-type for number storage.
On the Arduino *Uno* (and other ATmega based boards) an int stores a 16-bit (2-byte) value. This yields a range of -32,768 to 32,767 (minimum value of -2^15 and a maximum value of (2^15) - 1). On the Arduino *Due* and SAMD based boards (like MKR1000 and Zero), an int stores a 32-bit (4-byte) value. This yields a range of -2,147,483,648 to 2,147,483,647 (minimum value of -2^31 and a maximum value of (2^31) - 1).
”
Ho pensato di aggiungere questo dettaglio come commento al tuo già ottimo lavoro, +paolo aliverti, con modestia e desiderio di contribuire ai tuoi grandi sforzi di divulgazione (sei un grande per me, come ti ho già scritto!): vedo che usi un Arduino UNO nel video, dunque quello che dici è corretto, ma potrebbe portare chi utilizza un altro tipo di scheda a conclusioni errate, in caso di altri codici. D'altronde, per quanto riguarda il codice che sviluppi in questo video, non ci sarebbero comunque problemi (credo), in quanto prendi soltanto i 3 bit più a destra della variabile int i, ma volevo aggiungere questo commento, dato che ormai ho fatto una piccola ricerca sulla documentazione e varie considerazioni. Addirittura, sarebbe forse più formalmente corretto e meno suscettibile a vulnerabilità usare un unsigned int.
Curiosità: magari questa è una domanda banale, per chi è esperto in materia, ma, ora che rifletto, ho letto in vari post che il chip di Arduino UNO è a 8 bit: come fa dunque a gestire variabili da 2 byte (16 bit) ? Lo fa via software, suddividendo i dati in pacchetti da 8 bit ? Via hardware ? Qualcuno ne sa qualcosa ?
Grazie ancora per le tue ottime guide 💾
Grazie a te per il dettagliatissimo commento e le precisazioni che saranno utili a tutti. Credo di aver spiegato il fatto che su alcuni "Arduini" int vale 4 piuttosto che 2 in un video precedente. Son tanti ormai! Sulla formazione degli int a 16 bit mi informo.
@@zeppelinmaker mi era sfuggito il vecchio video, in quanto non seguo il canale da tanto tempo, a differenza delle tue pubblicazioni ! Grazie !
@@alfa-psi grazie mille per la spiegazione !
alfa-psi grazie !
Eccolo qua: www.coursera.org/learn/build-a-computer
Fammi sapere se lo segui, così ne parliamo assieme, se ti va ! Scrivimi via Skype a paolovag o su Twitter @p_vag !
Grazie 🙏🏼
semplice ed efficace
Cia Paolo, grazie per i tuoi video. Volevo chiederti questo: Ho provato a collegare due 4051 in modalità MUX in parallelo, mettendo in comune A,B e C e collegare i due ingressi in A0 e A1. Nel for quando leggo i canali dai due integrati, ottengo valori "sballati". I canali del primo integrato per esempio restituiscono due valori, uno per i canali pari e uno per i canali dispari... ti è mai capitato? Grazie
Ciao, grazie per il tutorial ho una domanda: è possibile leggere simultaneamente più input attraverso il MUX?
Che differenza c'è tra multiplexer e demultiplexer?
ciao è possibile accendere 2 o più led conteporaneamente o si può selezionare un canale alla volta?
no, mi pare (a memoria) che puoi attivare un solo canale per volta. Per quello puoi usare degli shift register
Ciao, sto imparando a conoscere MUX e DEMUX con un CD74HC4067 (è economico e il datasheet, ha un numero di pagine che non intimidisce).
Mi sono reso conto che per la maggior parte delle mie applicazioni sarebbe più comodo, un demux digitale che mantenga alto o basso il segnale in uscita senza un costante segnale in entrata, per esempio:
faccio la prima scansione su 4 uscite e le imposto
1 = high
2 = high
3 = low
4 = high
poi rimanendo sul pin 4 continuo a comandarlo, mentre i pin 1, 2, 3 mantengono gli stati impostati fino a nuovo comando sugli stessi.
Che tu sappia esiste qualcosa del genere? E se esiste come si chiama?
ciao. credo che ti serva un registro a scorrimanto con ingressi di tipo latch... significa che se arriva un segnale, lo memorizzano fino a che non lo leggi. Cerca in playlist i video su registri sincroni e asincroni...