I have set up an mcp3008 chip and a slide pot on my pi because I wanted a nice old fashioned volume control, and all of that seems to working fine and I am quite happy with it.

Now I have 7 redundant analogue channels, which I would quite like to repurpose as simple on/off buttons, because the chip just happens to be there and it would save a bunch of gpio pins which I could use for more interesting stuff.

My problem is, they seem to float wildly all over the place when there is no voltage running through them, so while I can add a switch to one and read 3.3v reliably enough, when the switch is off they just read a bunch of noise. This doesn't happen with the slide pot, presumably since one end is grounded.

Can anyone suggest a simple solution ?

Shall I just live with the noise , or is there something really obvious I am missing?

Bear in mind I am asking because I am a complete moron as far as electronics are concerened, so no answer can be too patronising :)

  • 1
    Hello and welcome. Is there any way you could make that question's title more comprehensible? I am still trying to figure out what the opposite of an ADC is (other than the obvious a DAC...).
    – Ghanima
    Dec 13, 2018 at 22:08

2 Answers 2


You will have to use a Pull-Up resistor to get clean difference between the two desired states.
This way you will have no floating input but either VCC (3.3V) or GND (0.0V) at the input of your MCP3008.
(You can ignore the logic gate in the image).

(Alternatively a Pull-Down resistor will work just as well).

  • 2
    Something which confused me when I first heard of it: "pull-up" is not a special kind of resistor, it is a particular use for one ;)
    – goldilocks
    Dec 12, 2018 at 16:40
  • 2
    I would try a 10k resistor per channel. That would not draw a great deal of current, would easily be defeated by a button, but would also resist random interference on the channel.
    – joan
    Dec 12, 2018 at 16:56

A pull up/down resistor is the correct solution - the question is which way do you want to be default? Based on your description you are going to want a pull down. Why? You say that if "the switch is on, I can read 3.3V" - which makes me think that you have the switch wired to 3.3V and want to see a logical 1 when it is closed, logical 0 when open. In this case, by using a pull down an open circuit (the switch) reads as a zero. This has the added advantage of not pulling current unless the switch is closed. The most important thing you've learned here is it is generally not a good idea to leave inputs floating.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.