2 I2C su Arduino Uno

Ciao,

domanda veloce: è possibile avere due coppie di SDA e SCL per collegare contemporaneamente, non in parallelo, due componenti I2C?

Non e' possibile. Posso sapere comunque a quale scopo?

No capisco la necessitá della Tua richiesta. Il I2C é un Bus e si possono collegare fino a 127 dispositivi. Se questo non basta ci sono dei Integrati che cambiano il livello (2 dispositivi con tensione di alimentazioni diversi) e expander che creano dei sottobus con 127 dispositivi per cianscun sottobus. Il I2C é uno ed é implementato via Hardware e non esistono sono emulazioni del I2C in software. Ciao Uwe

Se vuoi comunicare contemporaneamente con 2 periferiche puoi farlo. Basta aprire la connessione alternativamente prima all'una e poi all'altra.

Cmq se ci dici cosa intendevi fare magari ti possiamo consigliare una soluzione alternativa

Con 2 o più I2C è possibile (chiedo!), collegare un display LCD seriale, un accelerometro e un giroscopio e altri dispositivi (127)?

Con 1 (uno) bus I2C è possibile collegare insieme fino a 127 dispositivi e comunicare con essi.

leo72: Con 1 (uno) bus I2C è possibile collegare insieme fino a 127 dispositivi e comunicare con essi.

127 è il limite teorico per via del numero di address disponibili, in realtà se riesci a collegare 15-20 device sullo stesso bus è già tanto. Il limite è sempre il solito, la capacità complessiva del bus che non deve superare i 400 pf, e tra quella delle piste/cavi e quella d'ingresso dei singoli device non ci vuole molto per raggiungerla.

astrobeed: 127 è il limite teorico per via del numero di address disponibili,

Yes. Mi riferifo a quello.

in realtà se riesci a collegare 15-20 device sullo stesso bus è già tanto. Il limite è sempre il solito, la capacità complessiva del bus che non deve superare i 400 pf, e tra quella delle piste/cavi e quella d'ingresso dei singoli device non ci vuole molto per raggiungerla.

Senza considerare che voglio vedere a mettere un sacco di dispositivi su una stessa schedina

Etti: Con 2 o più I2C è possibile (chiedo!), collegare un display LCD seriale, un accelerometro e un giroscopio e altri dispositivi (127)?

127 magari no, ma un paio di decine se sei bravo si.

Vicino ogni dispositivo concatenti all’altro dispositivo una resistenza di pull-up al (+) e sulle linee SCL e SDA o non è neccessaria, se si bastano 10k?
Per indirizzare ogni dispositivo basta delle chiamate a funzione ripetute ciclicamente o serve dell’altro?

Le R di pull-up sono 2 e basta. Il loro valore va calcolato in modo che la corrente sul bus sia intorno ai 2/3 mA. Con tensioni di 5V, valori sono 1K5 e 2K2.

Per indirizzare un dispositivo devi fare una chiamata di inizio trasmissione specificando l'indirizzo del dispositivo verso cui comunicare: http://www.arduino.cc/en/Reference/Wire

Se non sai gli indirizzi colega il dispositivo al I2C e scannerizza tutti gli indirizzi con http://todbot.com/blog/2009/11/29/i2cscanner-pde-arduino-as-i2c-bus-scanner/ (lo scanner va fino 100 e non 127; non so perché; basta mettere la variabile end_address = 127;

Ciao Uwe

potrebbe esse una sicurezza per Arduino non perdere dati, o i dispositivi hanno dei buffer o latch temporanei fino che non gli arriva l'abilitazione?

Etti, non ti capisco. Ciao Uwe

si pensavo a una temporizzazione dei dati

Non ho capito neanch'io.

Se hai un sensore di temperatura, non hai un buffer di letture: il sensore, su richiesta, invia la lettura istantanea. Sarai tu, lato Arduino, se vorrai, a doverti conservare le letture da qualche parte (SD? EEPROM? ecc..). Se un dato non lo leggi, non lo salvi.

Ma invece di essere criptico, perché non dici cosa vuoi fare almeno anche noi si capisce un po' meglio il problema? ;)