SparkFun will be closed Nov 26th and 27th for the Thanksgiving holiday. Orders placed after 2:00pm MT on the 25th will ship out Monday the 30th.


Member Since: June 1, 2011

Country: United States


Programming Languages

Python, Java, C++

  • Could you guys update the Pinout Reference to reflect the cables currently sold?

  • Your solution makes me think that I may be fundamentally misunderstanding the keypad…

    Doesn’t pressing button 5 create a short between pads 1 and 7? Thus sampling anywhere other than 1 and 7 will give ambiguous readings. If you sample at pad 4, pressing button 5 (short 1 to 7) and button 3 (short 2 to 5) will both give a floating voltage read.

    Similarly, suppose you used the same resistor value for R1 and R2, when you press button 2 (short around R1) and button 1 (short around R2) you will get readings.

    However, I never got my keypad to work because the readings were dancing around too much (I was thinking of using a cap and/or an op amp to get a better signal) - but the behavior wasn’t drastically different than I expected…

    You do have a point about using higher resistor values (I’ll edit my solution), but I was implying kOhms and was using smaller numbers just for readability.

  • I found the following resistor ladder for 4x4: (12, 15, 39, 56, 82, 100, 150, 180)

    The minimum difference is only 4.9 however.

  • Thank you for this great idea! However, what exactly were you trying to optimize? I thought this was a really interesting problem and was wondering if our solutions would match.

    Given your solution, I assume that you took the common resistor values to be your universe of possible resistors: 10,12,15,18,22,27,33,39,47,56,68,82, and all their multiples of 10. That’s 24 different values and we pick 7, which gives us less than 350,000 combinations (Maybe you were making their multiples of 100 too? Doing so did not change my result)..

    I figured that what we wanted was to space out the Vout/Ain Return for each button as much as possible; that is, maximize the minimum distance between any two possible readings.

    The following sequence of resistors did this optimally for me: 39, 82, 120, 150, 180, 220, 680 (in K OHMS)

    It gives a minimum difference between two possible readings of 11.7 instead of 6.5 from your ladder (this is in the Arduino’s 1024 res). I’m pretty happy with the improvement but perhaps you intended to optimize something else?

  • What is the tip made out of? Some kind of epoxy?

  • did you ever get more info?