/* http://www.bristolwatch.com/arduino/arduino6.htm PCA9555 32-Bit GPIO Expander with Arduino by Lewis Loflin lewis@bvu.net */ #include // specify use of Wire.h library. int i; byte temp1; void setup() { pinMode(2, INPUT); // IRQ input Wire.begin(); Wire.beginTransmission(0x20); // setup out direction registers Wire.write(0x06); // pointer Wire.write(0x0F); // DDR Port0 bits 0-3 input 4-7 output Wire.write(0x00); // DDR Port1 all output Wire.endTransmission(); Wire.beginTransmission(0x20); // Wire.write(0x02); // pointer Wire.write(0x00); // clear bits 4-7 PORT0 Wire.endTransmission(); Wire.beginTransmission(0x20); // invert bit Wire.write(0x04); // pointer Wire.write(0xFF); // invert bits PORT0 on read Wire.endTransmission(); // clear LEDs PORT1 Wire.beginTransmission(0x20); Wire.write(0x03); // begin here Wire.write(temp1); Wire.endTransmission(); // Use 0x21 for LCD display. Wire.beginTransmission(0x21); // setup out direction registers Wire.write(0x06); // pointer Wire.write(0x00); // DDR Port1 all output Wire.write(0x00); // DDR Port1 all output Wire.endTransmission(); // setup port 0 D7 = E; D6 = RS Wire.beginTransmission(0x21); Wire.write(0x02); //pointer Wire.write(B10000000); // setup for command mode Wire.endTransmission(); } // end setup void loop() { i++; // LEDs to GND PORT 1 Wire.beginTransmission(0x20); Wire.write(0x03); // begin here Wire.write(i); Wire.endTransmission(); if (i > 255) i = -1; delay(500); // delay 500 mSec. } // end loop