[RISOLTO]Come funziona la I/O Expander Shield MCP 23017???

Ciao a tutti, salto le presentazioni e arrivo al dunque.
Ho comprato una scheda succitata da FUTURA ELETTRONICA --
link: http://www.futurashop.it/shield-arduino-io-expander-in-kit-7100-ft1079k
Ho visto e rivisto la documentazione ma non ci ho capito quasi nulla data anche l' assoluta ASSENZA di tutorial in merito a questa scheda.
VI CHIEDO cortesemente di dirmi COME collegare la scheda ad arduino (ES: 5V di arduino ai 5V della scheda.... e via dicendo.)
Non dovrei aver problemi nel codice che sono riuscito a racimolare su internet ma è ovvio che se c'è qualcuno di buon cuore che abbia voglia di darmi una dritta sul codice ben venga.
Vi chiedo di aiutarmi in quanto ho acquistato diverse schede e dato il prezzo sarebbe una cosa poco piacevole non riuscire ad utilizzarle.. GRAZIE.

Matteo_Puzzolante:
Ciao a tutti, salto le presentazioni e arrivo al dunque.

NO, non va bene ...

... essendo il tuo primo post nella sezione di lingua Italiana, nel rispetto del regolamento, ti chiedo di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

Hai scaricato la documentazione ? Te la sei studiata ? Mi sembra piuttosto chiara ... ::slight_smile:

Così come la sua descrizione ...

Shield di espansione I/O per Arduino basato sul chip MCP23017 prodotto da Microchip. Dispone di 8 ingressi digitali, ognuno dei quali dispone di un diodo di protezione, una resistenza di pull-up ed un LED; 8 uscite a relè con relativo LED di stato.
La comunicazione con l’MCP23017 è basata sull’I²C-Bus, pertanto la libreria utilizza “Wire.h” di Arduino. Il bus I²C è realizzato da 2 pin (SDA, ossia dati, ed SCL, cioè clock); sull’integrato sono disponibili sui pin 13 e 12, portati sui corrispondenti pin della scheda Arduino. Nello shield è prevista la possibilità di portare (tramite ponticello) il pin di interrupt dell’MCP23017 (INTB, pin 19) in ingresso su due differenti pin di Arduino (D2 o D4) in modo da adattarlo il più possibile al reale utilizzo. L’indirizzo I²C-Bus dell’MCP23017 viene selezionato tramite dip switch che permette di collegare fino a 8 diversi shield senza che interferiscano tra di loro. Il kit comprende tutti i componenti, la basetta forata e serigrafata e tutte le minuterie.

... è una shield che monti direttamente sopra ad Arduino e preleva tutti i segnali e le alimentazioni direttamente dai pin dello shield. Per l'alimentazione puoi scegliere se usare i 5V o la tensione presente su Vin (la scheda ha anche un suo regolatore per non sovraccaricare quello di Arduino) e lo fai con il jumer JPV5.

Inoltre, Futura mette a disposizione anche la libreria per usare quella scheda ... l'hai scaricata ? L'hai installata ? Anche questa, te la sei studiata ?

E' ben descritta ...

Abbiamo sviluppato una libreria software Arduino che fornisce tutte le routine necessarie alla rilevazione degli shield collegati e alla relativa gestione degli I/O (potete scaricare tale libreria da questa pagina). La comunicazione con l’MCP23017 è basata sull’I²C-Bus, pertanto la libreria utilizza “Wire.h” di Arduino; è presente una funzione “begin(int i2cAddress)” per inizializzare il singolo shield identificato tramite indirizzo I²C, ed anche una “init()” per programmare correttamente i registri interni del chip secondo le nostre necessità, ed infine una “pinMode(int pin, int mode)” per indicare se i singoli pin di I/O sono input o output. Oltre alle funzioni di inizializzazione, le istruzioni che in particolare ci interessano sono le “digitalRead(int pin)”, “digitalWrite(int pin, int val)”, “digitalWordRead()” e “digitalWordWrite(word w)” che, rispettivamente, permettono di leggere lo stato di un singolo pin di input, scrivere un singolo pin di output, leggere lo stato di tutti i pin di input (8 nel nostro caso) ed infine scrivere lo stato di tutti i pin di output (sempre 8 ).
La gestione degli input può avvenire tramite interrupt; è pertanto presente un’apposita funzione “pinDisableINT(int pin)” che permette di configurare il singolo pin come generatore di interruzioni o meno (in particolari applicazioni potrebbe essere utile avere la possibilità di non impostare tutti i pin di input come generatori di interrupt, ma farlo selettivamente).

Quindi ... dove sono i problemi ? Cosa non è chiaro ?

Guglielmo

Grazie mille signor Guglielmo per le risposte.
Mi sono corretto e ho pubblicato la mia presentazione nell' apposita area del sito dunque adesso dovrei essere autorizzato, se vogliamo =), a pubblicare su questo forum.
Sono riuscito a utilizzare la scheda ma adesso sorge un' altranecessità. Vorrei collegare una seconda scheda di espansione alla prima.
Mi basta condividere tra arduino e le due schede di espansione i pin SDA, SCL, 5V,GND e modificare lo switch sulle apposite schede?
grazie mille e a presto.

Essendo una scheda con interfaccia I2C, basta che le varie schede abbiano "indirizzo" differente e puoi metterle.

La documentazione dice chiaramente che poson essere collegati fino ad 8 shield, quindi, suppongo, useranno 3 switch per selezionare 3 bit dell'indirizzo, permettendo, appunto, 8 combinazioni.

Guglielmo

Perfetto grazie mille.
Ho testato e funziona.
Grazie ancora e buona serata!