Hi everyone, I'm at my first experience with arduino...
I need I2C to use my hmc5843 magnetometer, but I have all analog pin used by triple axis accelerometer and dual axis gyro.
I found a library for using every couple of digital pin to obtain a I2C port, but it seems it's good for writing data and not for reading from device (or I can't find an example for achieve this).
To read from a device, you need to shift out its address, probably a command or two depending on the part, and then shift-in its data.
In all cases, you are supplying the clock - after the shiftout, you change the datapin, with pinMode (or equivalent port commands) and then with your next clocks the device will output data.
You could probably skip the library and just use shiftout() and shiftin() commands, paying attention to direction and # of bytes needed, etc.
Get a second Atmega328 chip (for around $6) and with a handful of other components (resonator, couple of capacitors) use that as an I2C interface for your main processor. You could communicate between both of them using SPI. Or get an off-board analog chip and connect your accelerometer to it. For that matter, I believe some accelerometers (eg. the ones used in the Wii nunchuck) use I2C anyway.