Bird
Raised Fist0
Raspberry Piprogramming~10 mins

Digital output (GPIO.output) in Raspberry Pi - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Digital output (GPIO.output)
Setup GPIO mode
↓
Set pin as output
↓
Write HIGH or LOW to pin
↓
Pin voltage changes
↓
Connected device reacts
↓
End or repeat
This flow shows how to set a pin as output and send a digital signal (HIGH or LOW) to control devices.
Execution Sample
Raspberry Pi
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
GPIO.output(18, GPIO.HIGH)
GPIO.output(18, GPIO.LOW)
GPIO.cleanup()
This code sets pin 18 as output, turns it ON (HIGH), then OFF (LOW), and cleans up GPIO settings.
Execution Table
StepActionPinValue WrittenPin StateEffect
1Set GPIO mode---GPIO mode set to BCM
2Setup pin as output18-Output modePin 18 ready for output
3Write HIGH to pin18HIGHHIGH (3.3V)Pin 18 voltage set to HIGH, device ON
4Write LOW to pin18LOWLOW (0V)Pin 18 voltage set to LOW, device OFF
5Cleanup GPIO---GPIO pins reset to safe state
💡 All steps completed, GPIO cleaned up to avoid issues
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4Final
GPIO modeNot setBCMBCMBCMBCM
Pin 18 modeUnknownOutputOutputOutputReset
Pin 18 stateUnknownUndefinedHIGHLOWReset
Key Moments - 3 Insights
Why do we need to set the pin mode before writing HIGH or LOW?
The pin must be set as output first (see Step 2 in execution_table) so it can send voltage signals; otherwise, writing HIGH or LOW won't work.
What happens if we write HIGH then LOW quickly?
The pin voltage changes accordingly (Step 3 and Step 4), turning the connected device ON then OFF, as shown in the Pin State and Effect columns.
Why call GPIO.cleanup() at the end?
Cleanup resets pins to safe states (Step 5), preventing unwanted signals or conflicts when the program ends.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the pin state after Step 3?
ALOW (0V)
BUndefined
CHIGH (3.3V)
DReset
💡 Hint
Check the 'Pin State' column at Step 3 in the execution_table
At which step is the pin set as output mode?
AStep 2
BStep 3
CStep 1
DStep 5
💡 Hint
Look at the 'Action' and 'Pin' columns in the execution_table for when pin 18 mode changes
If we skip GPIO.cleanup(), what might happen?
APin mode resets automatically
BPin stays in last state, possibly causing issues
CProgram will not run
DPin voltage becomes random
💡 Hint
Refer to Step 5 and the key_moments about cleanup importance
Concept Snapshot
Digital output with GPIO.output:
- Set GPIO mode (e.g., BCM)
- Setup pin as output
- Use GPIO.output(pin, GPIO.HIGH/LOW) to set voltage
- HIGH = 3.3V (ON), LOW = 0V (OFF)
- Call GPIO.cleanup() to reset pins safely
Full Transcript
This visual trace shows how to control a Raspberry Pi GPIO pin as digital output. First, we set the GPIO mode to BCM numbering. Then we configure pin 18 as an output pin. Next, we write HIGH to pin 18, which sets its voltage to 3.3 volts and turns connected devices ON. After that, we write LOW to pin 18, setting voltage to 0 volts and turning devices OFF. Finally, we call GPIO.cleanup() to reset all pins to safe states. This prevents issues if the program ends or restarts. The variable tracker shows how GPIO mode, pin mode, and pin state change step-by-step. Key moments explain why setting pin mode first is necessary, how voltage changes affect devices, and why cleanup is important. The quiz tests understanding of pin states, setup steps, and cleanup effects.

Practice

(1/5)
1. What does GPIO.output(pin, GPIO.HIGH) do on a Raspberry Pi?
easy
A. It sets the pin mode to input.
B. It turns the specified pin ON by setting it to HIGH voltage.
C. It reads the current value from the specified pin.
D. It resets the Raspberry Pi GPIO pins.

Solution

  1. Step 1: Understand GPIO.output function

    The function GPIO.output(pin, value) sets the voltage level of the pin.
  2. Step 2: Interpret GPIO.HIGH

    GPIO.HIGH means turning the pin ON by applying a high voltage.
  3. Final Answer:

    It turns the specified pin ON by setting it to HIGH voltage. -> Option B
  4. Quick Check:

    GPIO.output with GPIO.HIGH = Pin ON [OK]
Hint: HIGH means ON, LOW means OFF for GPIO pins [OK]
Common Mistakes:
  • Confusing output with input reading
  • Thinking GPIO.HIGH reads pin value
  • Assuming it sets pin mode
2. Which of the following is the correct syntax to set GPIO pin 18 as an output pin?
easy
A. GPIO.setup(18, GPIO.INPUT)
B. GPIO.output(18, GPIO.HIGH)
C. GPIO.setup(18, GPIO.OUT)
D. GPIO.output(18, GPIO.OUT)

Solution

  1. Step 1: Identify the function to set pin mode

    GPIO.setup(pin, mode) is used to set pin mode.
  2. Step 2: Choose correct mode for output

    GPIO.OUT sets the pin as output, so GPIO.setup(18, GPIO.OUT) is correct.
  3. Final Answer:

    GPIO.setup(18, GPIO.OUT) -> Option C
  4. Quick Check:

    Pin mode output = GPIO.setup(pin, GPIO.OUT) [OK]
Hint: Use GPIO.setup(pin, GPIO.OUT) to set output mode [OK]
Common Mistakes:
  • Using GPIO.INPUT instead of GPIO.OUT
  • Trying to set output with GPIO.output before setup
  • Using GPIO.output to set pin mode
3. What will be the output state of pin 23 after running this code?
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)
GPIO.output(23, GPIO.LOW)
medium
A. Code will cause a runtime error.
B. Pin 23 will be ON (HIGH voltage).
C. Pin 23 will be set as input.
D. Pin 23 will be OFF (LOW voltage).

Solution

  1. Step 1: Analyze pin setup

    Pin 23 is set as output using GPIO.setup(23, GPIO.OUT).
  2. Step 2: Check output command

    GPIO.output(23, GPIO.LOW) sets pin 23 to LOW voltage, turning it OFF.
  3. Final Answer:

    Pin 23 will be OFF (LOW voltage). -> Option D
  4. Quick Check:

    GPIO.output(pin, GPIO.LOW) = Pin OFF [OK]
Hint: LOW means OFF, so pin is off after output LOW [OK]
Common Mistakes:
  • Assuming LOW means ON
  • Forgetting to set pin as output first
  • Confusing pin number with mode
4. Identify the error in this code snippet:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.output(17, GPIO.HIGH)
medium
A. Pin 17 is not set as output before using GPIO.output.
B. GPIO.HIGH is not a valid value for GPIO.output.
C. GPIO.setmode(GPIO.BCM) is incorrect syntax.
D. Missing import statement for GPIO.

Solution

  1. Step 1: Check pin setup before output

    The code calls GPIO.output without first setting pin 17 as output using GPIO.setup(17, GPIO.OUT).
  2. Step 2: Confirm other parts are correct

    GPIO.HIGH and GPIO.setmode(GPIO.BCM) are correct, and import is present.
  3. Final Answer:

    Pin 17 is not set as output before using GPIO.output. -> Option A
  4. Quick Check:

    Must setup pin as output before GPIO.output [OK]
Hint: Always setup pin as output before writing HIGH/LOW [OK]
Common Mistakes:
  • Skipping GPIO.setup for output pins
  • Confusing GPIO.HIGH with pin mode
  • Incorrect setmode usage
5. You want to blink an LED connected to pin 12 five times. Which code snippet correctly turns the LED ON and OFF using GPIO.output inside a loop?
hard
A. for i in range(5): GPIO.output(12, GPIO.HIGH) time.sleep(1) GPIO.output(12, GPIO.LOW) time.sleep(1)
B. for i in range(5): GPIO.output(12, GPIO.LOW) time.sleep(1) GPIO.output(12, GPIO.HIGH) time.sleep(1)
C. GPIO.output(12, GPIO.HIGH) for i in range(5): time.sleep(1) GPIO.output(12, GPIO.LOW) time.sleep(1)
D. for i in range(5): GPIO.setup(12, GPIO.OUT) GPIO.output(12, GPIO.HIGH) GPIO.output(12, GPIO.LOW)

Solution

  1. Step 1: Understand blinking logic

    Blinking means turning LED ON (HIGH), waiting, then OFF (LOW), waiting, repeated 5 times.
  2. Step 2: Analyze each option

    for i in range(5): GPIO.output(12, GPIO.HIGH) time.sleep(1) GPIO.output(12, GPIO.LOW) time.sleep(1) correctly loops 5 times, sets pin HIGH, waits, sets LOW, waits. for i in range(5): GPIO.output(12, GPIO.LOW) time.sleep(1) GPIO.output(12, GPIO.HIGH) time.sleep(1) reverses ON/OFF order. GPIO.output(12, GPIO.HIGH) for i in range(5): time.sleep(1) GPIO.output(12, GPIO.LOW) time.sleep(1) turns ON once before loop. for i in range(5): GPIO.setup(12, GPIO.OUT) GPIO.output(12, GPIO.HIGH) GPIO.output(12, GPIO.LOW) wrongly calls setup inside loop.
  3. Final Answer:

    for i in range(5): GPIO.output(12, GPIO.HIGH) time.sleep(1) GPIO.output(12, GPIO.LOW) time.sleep(1) -> Option A
  4. Quick Check:

    Blink = ON + wait + OFF + wait in loop [OK]
Hint: Turn ON then OFF with delays inside loop to blink [OK]
Common Mistakes:
  • Calling GPIO.setup inside loop repeatedly
  • Reversing ON/OFF order
  • Not including delays between ON and OFF
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