I'm working on a project which involves a wired remote connected to an Arduino, with 3 conductors available for the wire (out of necessity for utilizing an existing infrastructure). The remote will have 7 buttons, and a bi-color LED. I'm debating the relative merits of two approaches, and was hoping for some input from you guys.
1) All analog. The wires to the remote are input, 3V3, and LED control. The LED control line is connected to an output which goes either high (5V) or low, and the LED is connected between that and the 3V3 supply, so it sees a relative -2V7 or +3V3 to go either red or green. The switches each connect 3V3 to the input line via a different value resistor, which returns to an analog input, and then the Arduino reads the analog input to determine which switch is pressed. Multiple simultaneous button presses aren't an issue in this application.
2) Digital. The remote has an Arduino Pro Mini, and directly processes the buttons, and controls the LED, and connects to the primary Arduino via I2C or some other method tbd.
Any thoughts on either approach? Clearly the analog method is more elegant and cost-effective, but I'm concerned about being able to get all 7 inputs that way. I see discussion here on doing this sort of "analog multiplexing" somewhat often, but always with just a mention of having to "carefully choose" values for the resistors, but never discussion of what to take into account when choosing them/what values to use. Clearly I'd use thresholds for the reads rather than discrete values, to allow for fluctuations in readings (and appropriately Aref to 3V3).
My other concern with this method is the stability of the analog inputs/their susceptibility to noise.
If I go the digital route, are there any suggestions for the best way to interface the two Arduinos? Or is there a simpler board, sort of a wired XBee, to use for the remote? I only need to pass which button is pressed, and ideally to control the LED in the other direction. Is I2C the best way to go? Roll my own through some other method?