[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 ([u]spiegando bene quali conoscenze hai di elettronica e di programmazione[/u] ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere [u]con attenzione[/u] il su citato REGOLAMENTO ... Grazie.

Guglielmo

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

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!