Bentornati nella serie di Arduino! In quest'articolo si parlerà del multiplexer, un modulo che consente al nostro microcontrollore di gestire 8/16 pin utilizzandone solo uno.
IL MULTIPLEXER
Il multiplexer (spesso abbreviato in mux) è un circuito che funge da selettore elettronico. Si compone di
- n linee d'ingresso (in foto C0-C15)
- log2n linee di selezione (S0-S3)
- 1 linea di uscita (SIG)
Nel nostro caso utilizzeremo un multiplexer a n=16 linee di ingresso.
Il mux è un componente digitale, pertanto lavora su coppie di bit 0-1. In particolare ciascuna delle 16 linee di ingresso ha un indirizzo in base binaria a 4 bit che viene individuato dai 4 bit di selezione. Ecco il funzionamento: Arduino compone un indirizzo settando ad 1 (HIGH) e 0 (LOW) i bit di selezione e tale indirizzo viene utilizzato per individuare il pin a cui sarà collegato il SIGNAL.
Generalmente, un multiplexer 4:1 in logica combinatoria viene rappresentato in questo modo:
Potete immaginare il circuito come una linea ferroviaria in cui i bit S1-S0 indicano su quale binario (A,B,C o D) passerà il treno diretto all'uscita Y.
Giusto per fare un esempio, supponiamo di avere un multiplexer 16:1 che collega 16 fotoresistori ad Arduino mediante il pin SIGNAL. Potremmo implementare un ciclo for che genera ciascuno dei 16 indirizzi d'ingresso del mux per leggere in pochi millisecondi i dati rilevati da ciascun fotoresistore e poi farne magari una media.
Attenzione! Nel suddetto programma ideale, ovviamente Arduino potrebbe leggere i valori di un solo fotoresistore alla volta perché una sarebbe la linea selezionata ad ogni iterazione del ciclo for.
Il passaggio ulteriore che si potrebbe fare con questo componente è quello di avviare tante comunicazioni seriali diverse quante sono le linee di ingresso. Supponendo quindi di avere 16 sensori che comunicano dati via seriale collegati al multiplexer, basterebbe collegare il SIGNAL al pin RX di Arduino UNO per leggere 16 sensori diversi utilizzando l'unica e sola seriale disponibile, che è quella hardware.
HARDWARE
Al contrario di quanto possa sembrare, il collegamento è molto semplice:
SOFTWARE
Qui avete il codice che serve come base per permettere ad Arduino di interfacciarsi al multiplexer: non vi preoccupate, ci sono abbastanza commenti affinché possiate comprendere il funzionamento del programma, giusto perché noi non vogliamo che gli utenti siano costretti semplicemente a copia-incollare il codice e che poi non abbiano la possibilità di modificarlo a proprio piacimento.