Espansione Arduino 2009 con GPIO14

Salve a tutti! Sono nuovo, vorrei avere delucidazioni su come poter connettere e programmare questo integrato

che utilizza lo standard i2c, con l'arduino.. ci sto sbattendo la testa ma non riesco a capirci nulla! qualcuno mi puo aiutare??

Dovrei espandere gli ingressi e le uscite all'arduino ma non so da dove iniziare.. Grazie..

Nessuno puo aiutarmi???

Ciao!! Calamaro ha scritto un'ottima guida su questo argomento!!!
http://www.megavideo.com/?v=9JIEAOS1

Dai un occhio anche su playground perchè ci sono un sacco di realizzazioni simili a quella che vuoi fare tu.

Ciao.. ma il link non va!!!Per favore aiutatemi... sono in crisi

gbm ma che fai metti i link di media video? sei leggermente un fagiano ahahaha apparte scherzi, ho scritto un paio di articoli sul protocollo i2c e sui port expander e spero ti siano di aiuto.
I GPIO port expander I2C a 8bit sono i meno begosi perchè per leggere o scrivere sull'unico port che hanno basta un byte, mentre quelli a 14, 16 ecc ecc invece hanno dei registri che servono a interpellare i vari port.
Sta cosa non mi pare di averla scritta, quindi ora dovrò inserirla in un nuovo articolo o storie simili.
Il Protocollo I2C
gpio port expander
Fammi sapere cosa ne pensi di questi articoli lasciando un commento oppure mandandomi un pm. Se trovi errori di forma o cose che non ti tornano fammi sapere, quando avrò tempo ti risponderò.
Purtroppo non ho moltissimo tempo a causa dello studio in vista della sessione di settembre.

comunque basta un messaggio privato e capisco.

se hai domande chiedi qui, che io ti ho già detto che non ho molto tempo per risponderti. Magari se qualche altro utente legge la tua domanda, come quella che mi hai fatto in PM ti sa rispondere anche meglio di me :smiley:
Wire.send(COMMAND_REGISTER [6]);
Wire.send(0xff & dir); // low byte
Wire.send(dir >> 8); // high byte

Wire.send serve per mandare dei bit utilizzando il protocollo I2C
in pratica con la prima istruzione mandi il byte contenuto nell'array COMMAND_REGISTER alla posizione 6, poi fai una and con 0xFF e la variabile DIR spedisci il byte meno significativo, successivamente shifti di 8 a destra la variabile dir e mandi il byte più significativo.

ma la variabile dir quale è? da dove esce?

void gpio_dir(int address, int dir, int port) {
switch(port){
case 0:
// Trasmetto il registro di configurazione per il port 0
Wire.beginTransmission(address);
Wire.send(COMMAND_REGISTER [6]);
//  Mi connetto alla periferica e mando 2 byte contenenti la direzione
Wire.send(0xff & dir); //  low byte
Wire.send(dir >> 8); //  high byte
Wire.endTransmission();
break;
case 1:
//  Trasmetto il registro di configurazione per il port 1
Wire.beginTransmission(address);
Wire.send(COMMAND_REGISTER [7]);
//  Mi connetto alla periferica e mando 2 byte contenenti la direzione
Wire.send(0xff & dir); //  low byte
Wire.send(dir >> 8); //  high byte
Wire.endTransmission();
break;
}
}

Questa è una funzione, dir è un argomento della funzione.
Da quanto tempo programmi in C?

da pochissimo

adesso ho compreso.. solo che c'è un altra cosa oscura.. quando parli di port 0 e port 1 cosa intendi.. credimi sono alle prime armi con c e con arduino... quindi mi serve un grosso aiuto... tipo una spiegazione punto per punto... posso contare su di te?

Se hai deciso come primo progetto di espandere il port ci sarà un motivo.
Se il tuo progetto è a fini hobbistici secondo me ti merita avere pazienza e imparare il C poi successivamente dedicarti a progetti complessi come l'espansione di un port. Io ci ho perso qualche settimana a capire i port expander e a farli funzionare.
Altrimenti se il tuo progetto ha fini lavorativi, quindi di tuo lucro personale, non vedo come mai io dovrei perdere tempo per far guadagnare te :smiley: D'altra parte hai detto solo che vuoi espandere il port di arduino senza spiegare il tuo progetto e questo mi fa pensare male.
Comunque ora non ho veramente tempo di fare nulla tra una settimana parto e sono indietro con dei lavori.

ammazza che arroganza.. Tranquillo tienile x te le tue cose.. Io son qui x imparare non per scopi fi lucro.. E credimi non cerco persone come te che devono fare guadagnare me.. Ma guarda un pò. >:(

Non volevo essere arrogante, perdonami è che capita spesso di trovare gente che chiede aiuto per poi lucrare su progetti che alla fine non sapevano fare.

Comunque ci vuole del tempo per capire la dinamica dei gpio port expander. Io che comunque il C lo mastico da più tempo di te, a quanto mi hai detto, ci ho impiegato un po' per capire le varie istruzioni per far funzionare i port expander.
Soprattutto ho preso i datasheet in inglese e la documentazione in inglese e me la sono letta e studiata.

Probabilmente ho frainteso il tuo atteggiamento, ho pensato che tu volessi la pappa scodellata.

Se hai voglia di studiare e capire sono ben lieto di aiutarti, ma io posso arrivare fino a un certo punto.
Se alcune istruzioni non le conosci o non le capisci guarda qui Arduino - Home
trovi tutto quello che cerchi e se, come nel caso sopracitato, vuoi capire una particolare sequenza di istruzioni non ci sono problemi. Posti qui e o io o qualcun'altro comunque ti rispondiamo.
Scusami ancora, ma sono leggermente prevenuto verso chi vuol fare megaprogetti, ma o non conosce nulla di elettronica o non sa programmare, ma non ce l'ho con te, non ti conosco e spero non tu sia in questo modo :smiley:

Solo che mi sembrava strano che come primo progetto tu volessi espandere solo il port di arduino e che non tu conoscessi benissimo il c.
Magari proprio per questo non hai capito a pieno quello che intendevo, voler pilotare un port expander a 14bit ed essere alla prima esperienza è come voler domare uno stallone e non aver mai cavalcato. :smiley:
Oddio forse pilotare un port expander è più semplice, però spero che il succo ti sia arrivato :smiley:
Poi comunque per queste cose ci vuole pazienza. Te lo dice uno che per far funzionare dei PCA9555 (che sono gpio a 16bit) ci ha messo quasi 3 settimane, però la soddisfazione di essere arrivato all'obiettivo è stata immensa!