Desde o final de 2009 tenho tentado fazer a expansão i2C do Arduino funcionar corretamente. Achei varios códigos mas nenhum respondia para o PCF8574 da Philips que é uma expansão bidirecional de 8 portas. Ontem finalmente, usando o IO shield eu consegui fazer o dito cujo funcionar corretamente. Na primeira foto a montagem do PCF com dois leds.

Demorou mas funcionou. Basicamente oq ue faltava era corrente para alimentação do conjunto e os resistores no bus i2C, o que impedia que a comunicação acontecesse.
Eu utilizei o seguinte código:
/*
Test program for PCF8574 I2C I/O expander
- Blinks all ports low then high.
by Ford
*/
#include
#define expander B0100000 // Address with three address pins grounded.
// Note that the R/W bit is not part of this address.
void setup() {
Wire.begin();
Serial.begin(9600);
}
void loop() {
Serial.println("LED OFF");
expanderWrite(B00000000);
Serial.print("Read: ");
Serial.println(expanderRead(), BIN);
delay(1000);
Serial.println("LED ON");
expanderWrite(B00100000);
Serial.print("Read: ");
Serial.println(expanderRead(), BIN);
delay(1000);
}
void expanderWrite(byte _data ) {
Wire.beginTransmission(expander);
Wire.send(_data);
Wire.endTransmission();
}
byte expanderRead() {
byte _data;
Wire.requestFrom(expander, 1);
if(Wire.available()) {
_data = Wire.receive();
}
return _data;
}Origem do código ->
LinkA segunda parte consistia em colocar o i2C para funcionar na placa de relés/entradas digitais.


A proxima etapa é colocar tudo para funcionar em Processing e na sequencia integrar com o Ethernet Shield.