Bird
Raised Fist0
Raspberry Piprogramming~5 mins

Pull-up and pull-down resistors in Raspberry Pi - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a pull-up resistor?
A pull-up resistor is connected between a signal line and a positive voltage supply to ensure the line reads a high voltage (logic 1) when no other device is driving it.
Click to reveal answer
beginner
What is a pull-down resistor?
A pull-down resistor is connected between a signal line and ground to ensure the line reads a low voltage (logic 0) when no other device is driving it.
Click to reveal answer
beginner
Why do we need pull-up or pull-down resistors in Raspberry Pi GPIO inputs?
They prevent the input pin from 'floating' which can cause unpredictable readings by ensuring the pin has a default voltage level when no button or sensor is connected.
Click to reveal answer
intermediate
How can you enable an internal pull-up resistor on a Raspberry Pi GPIO pin using Python?
Using the RPi.GPIO library, you can set up a pin with pull-up like this:
GPIO.setup(pin_number, GPIO.IN, pull_up_down=GPIO.PUD_UP)
Click to reveal answer
beginner
What happens if you don't use pull-up or pull-down resistors on an input pin?
The input pin may 'float', causing it to randomly read high or low, leading to unreliable or noisy input signals.
Click to reveal answer
What does a pull-up resistor connect to?
AGround
BPositive voltage supply
COutput pin
DBattery negative terminal
Which resistor prevents a GPIO pin from floating low?
APull-down resistor
BPull-up resistor
CSeries resistor
DNo resistor
How do you enable an internal pull-down resistor in RPi.GPIO?
AGPIO.setup(pin, GPIO.IN)
BGPIO.setup(pin, GPIO.OUT)
CGPIO.setup(pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
DGPIO.setup(pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
What problem occurs if no pull-up or pull-down resistor is used on an input pin?
APin will short circuit
BPin will always read high
CPin may float causing unreliable readings
DPin will always read low
Which of these is a correct way to set a GPIO pin as input with pull-up resistor in Python?
AGPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)
BGPIO.setup(17, GPIO.OUT)
CGPIO.setup(17, GPIO.IN)
DGPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
Explain what pull-up and pull-down resistors do and why they are important for Raspberry Pi GPIO inputs.
Think about how to keep a wire from 'floating' when nothing is connected.
You got /4 concepts.
    Describe how to enable internal pull-up and pull-down resistors on Raspberry Pi GPIO pins using Python code.
    Look at the parameters inside GPIO.setup for input pins.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using pull-up or pull-down resistors with Raspberry Pi GPIO pins?
      easy
      A. To set a default voltage level on input pins to avoid floating values
      B. To increase the speed of the GPIO pin
      C. To power external devices connected to the GPIO
      D. To change the output voltage of the pin

      Solution

      1. Step 1: Understand the problem of floating pins

        GPIO input pins can read random values if not connected to a stable voltage, causing unreliable readings.
      2. Step 2: Role of pull-up and pull-down resistors

        Pull-up sets the pin to high by default, pull-down sets it to low, preventing floating and ensuring stable input.
      3. Final Answer:

        To set a default voltage level on input pins to avoid floating values -> Option A
      4. Quick Check:

        Pull-up/down resistors prevent floating = A [OK]
      Hint: Pull resistors fix input pin voltage to high or low [OK]
      Common Mistakes:
      • Thinking pull resistors power devices
      • Confusing pull-up with output voltage control
      • Believing pull resistors speed up GPIO
      2. Which of the following is the correct way to enable an internal pull-up resistor on GPIO pin 17 using the RPi.GPIO library in Python?
      easy
      A. GPIO.setup(17, GPIO.OUT)
      B. GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)
      C. GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
      D. GPIO.setup(17, GPIO.OUT, pull_up_down=GPIO.PUD_UP)

      Solution

      1. Step 1: Identify correct pin mode for input

        Pull-up resistors are used with input pins, so mode must be GPIO.IN.
      2. Step 2: Use correct pull-up argument

        GPIO.PUD_UP enables the internal pull-up resistor; GPIO.PUD_DOWN is for pull-down.
      3. Final Answer:

        GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP) -> Option B
      4. Quick Check:

        Input pin with pull-up = D [OK]
      Hint: Pull-up means GPIO.IN with GPIO.PUD_UP [OK]
      Common Mistakes:
      • Setting pin as output when enabling pull-up
      • Using PUD_DOWN instead of PUD_UP for pull-up
      • Omitting pull_up_down parameter
      3. Consider this Python code snippet using RPi.GPIO:
      import RPi.GPIO as GPIO
      GPIO.setmode(GPIO.BCM)
      GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
      input_state = GPIO.input(22)
      print(input_state)
      If no button or wire is connected to pin 22, what will be printed?
      medium
      A. 1
      B. Error
      C. None
      D. 0

      Solution

      1. Step 1: Understand pull-down resistor effect

        Pull-down resistor sets the pin to low (0) by default when nothing is connected.
      2. Step 2: Check input reading

        Since no button is connected, the input reads the default low level, so GPIO.input(22) returns 0.
      3. Final Answer:

        0 -> Option D
      4. Quick Check:

        Pull-down resistor means input reads 0 when floating = C [OK]
      Hint: Pull-down means default input is 0 [OK]
      Common Mistakes:
      • Assuming input reads 1 without connection
      • Expecting an error without a device connected
      • Confusing pull-up and pull-down effects
      4. You wrote this code to read a button press on GPIO pin 5:
      GPIO.setup(5, GPIO.IN)
      if GPIO.input(5) == 1:
          print("Button pressed")
      else:
          print("Button not pressed")
      But the output is random even when the button is not pressed. What is the likely problem?
      medium
      A. You forgot to enable a pull-up or pull-down resistor on pin 5
      B. You set the pin mode to output instead of input
      C. You used the wrong pin number
      D. You need to call GPIO.cleanup() before reading input

      Solution

      1. Step 1: Identify cause of random input readings

        Without pull-up or pull-down resistors, input pins can float and read random values.
      2. Step 2: Fix by enabling internal resistor

        Use GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP) or PUD_DOWN to stabilize input.
      3. Final Answer:

        You forgot to enable a pull-up or pull-down resistor on pin 5 -> Option A
      4. Quick Check:

        Floating input needs pull resistor = B [OK]
      Hint: Always enable pull resistor for input pins reading buttons [OK]
      Common Mistakes:
      • Not setting pin as input
      • Assuming cleanup affects input reading
      • Changing pin number without hardware change
      5. You want to connect two buttons to Raspberry Pi GPIO pins 6 and 13. Button on pin 6 should read HIGH when pressed, and button on pin 13 should read LOW when pressed. Which setup correctly uses pull-up and pull-down resistors to achieve this behavior?
      hard
      A. GPIO.setup(6, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(13, GPIO.IN, pull_up_down=GPIO.PUD_UP)
      B. GPIO.setup(6, GPIO.OUT) GPIO.setup(13, GPIO.OUT)
      C. GPIO.setup(6, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(13, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
      D. GPIO.setup(6, GPIO.IN) GPIO.setup(13, GPIO.IN)

      Solution

      1. Step 1: Understand button logic for pin 6

        Button on pin 6 should read HIGH when pressed, so use pull-up resistor to keep default HIGH and go LOW on press.
      2. Step 2: Understand button logic for pin 13

        Button on pin 13 should read LOW when pressed, so use pull-down resistor to keep default LOW and go HIGH on press.
      3. Step 3: Match setup calls to logic

        Pin 6 uses GPIO.PUD_UP, pin 13 uses GPIO.PUD_DOWN to achieve desired readings.
      4. Final Answer:

        GPIO.setup(6, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(13, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) -> Option C
      5. Quick Check:

        Pin 6 pull-up, pin 13 pull-down = B [OK]
      Hint: Pull-up means default HIGH, pull-down means default LOW [OK]
      Common Mistakes:
      • Reversing pull-up and pull-down resistor roles
      • Setting pins as output instead of input
      • Not using pull resistors causing floating inputs
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard