I'm building a distributed multiaxis robot (8dof) using UNO (5 UNO boards, 4 twi-slaves, 1 master) and motor sheilds. The motor shields come with square pins to be soldered in place to mate with the UNO female sockets, through which the analog and digital lines pass. If you want to use some of the unused lines, you can replace the male pins on the motor shield with shield stacking headers, which both makes the connection to the female socket on the UNO and provides a female socket on the motor shield. I did this so I could use analog 4 and 5 for TWI (I2C) to comm b/t UNO boards and thereby coordinate robot motion.
If you look at a standard male header connector, the pin is square in cross section. If you look at the metal portion of the female part it mates to,
it is a 'fork' which squeezes the male at two contact points. The plastic part of the female guides the male such that the contact points are centered on the male.
The stacking header male pins are rectangular in cross section, with the thin part of the pin oriented against the pins of the fork of the female
part. If the alignment between the female and male is perfect, it works. If there is a slight misalignment (as might occur when soldering the stacking header), the pins do not squeeze the male, the connection is formed from surface contact between the plane of the male and the plane of the female, and the connection is inconsistent. Ergo an intermittent I2C signal.
I've tried resoldering to align the pins better. I've tried adding conductive grease (no-ox-id) to the socket. I've tried creative profanity. The I2C remains unreliable...it works intermittently. If I take the motor shield off, I2C works perfectly.
I'm considering soldering directly to the UNO board, which would be a shame as it makes the system less maintainable. If anyone has a better idea, please share!
--Xnloder