Bird
Raised Fist0
Raspberry Piprogramming~10 mins

First GPIO program (LED blink) in Raspberry Pi - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - First GPIO program (LED blink)
Start Program
↓
Setup GPIO Pin as Output
↓
Turn LED ON
↓
Wait (delay)
↓
Turn LED OFF
↓
Wait (delay)
↓
Repeat Loop
The program sets up a pin to control an LED, then repeatedly turns it on and off with pauses in between.
Execution Sample
Raspberry Pi
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)

while True:
    GPIO.output(18, GPIO.HIGH)
    time.sleep(1)
    GPIO.output(18, GPIO.LOW)
    time.sleep(1)
This code makes an LED connected to pin 18 blink on and off every second.
Execution Table
StepActionPin 18 StateDelay (seconds)Loop Iteration
1Setup pin 18 as outputLOW (default)00
2Turn LED ON (HIGH)HIGH01
3Wait 1 secondHIGH11
4Turn LED OFF (LOW)LOW01
5Wait 1 secondLOW11
6Repeat loop back to turn LED ONLOW02
7Turn LED ON (HIGH)HIGH02
8Wait 1 secondHIGH12
9Turn LED OFF (LOW)LOW02
10Wait 1 secondLOW12
...Loop continues indefinitelyAlternates HIGH/LOW1 each delay3,4,5,...
💡 Program runs forever until manually stopped (no automatic exit).
Variable Tracker
VariableStartAfter Step 2After Step 4After Step 6After Step 9Final
Pin 18 StateLOW (default)HIGHLOWLOWLOWAlternates HIGH/LOW
Loop Iteration01122Increases by 1 each cycle
Key Moments - 3 Insights
Why does the LED blink instead of staying on?
Because the program turns the LED ON, waits 1 second, then turns it OFF and waits 1 second repeatedly, as shown in steps 2-5 in the execution table.
What happens if we remove the time.sleep() calls?
The LED would appear to stay ON or OFF because the program would switch states too fast to see blinking, as the delays control visible timing (see steps 3 and 5).
Why does the program never stop on its own?
Because the while True loop runs forever, repeating the ON/OFF cycle endlessly, as noted in the exit_note and steps 6-10.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the state of pin 18 at step 4?
ALOW
BUndefined
CHIGH
DFlashing
💡 Hint
Check the 'Pin 18 State' column at step 4 in the execution_table.
At which step does the program wait for 1 second after turning the LED ON?
AStep 5
BStep 3
CStep 2
DStep 4
💡 Hint
Look for 'Wait 1 second' after 'Turn LED ON' in the execution_table.
If the delay after turning LED OFF is removed, how would the blinking change?
ALED would stay ON
BLED would stay OFF
CLED would blink faster
DNo change
💡 Hint
Refer to key_moments about the role of time.sleep() delays controlling blink speed.
Concept Snapshot
First GPIO program (LED blink):
- Import GPIO and time modules
- Set GPIO mode (BCM)
- Setup pin 18 as output
- Loop: turn LED ON, wait 1s, turn OFF, wait 1s
- Repeat forever to blink LED
- Use delays to make blinking visible
Full Transcript
This program controls an LED connected to Raspberry Pi pin 18. It first sets the pin as an output. Then, inside an endless loop, it turns the LED on by setting the pin HIGH, waits one second, turns the LED off by setting the pin LOW, and waits another second. This cycle repeats forever, causing the LED to blink on and off every second. The delays are important to make the blinking visible to our eyes. Without delays, the LED would switch states too fast to notice. The program runs continuously until stopped manually.

Practice

(1/5)
1. What is the main purpose of the GPIO.setup(pin, GPIO.OUT) command in a Raspberry Pi LED blink program?
easy
A. It cleans up the GPIO pins after use.
B. It reads the input from the LED.
C. It turns the LED on immediately.
D. It sets the specified pin as an output to control the LED.

Solution

  1. Step 1: Understand GPIO pin modes

    The Raspberry Pi GPIO pins can be set as input or output. To control an LED, the pin must send signals, so it needs to be an output.
  2. Step 2: Role of GPIO.setup

    The command GPIO.setup(pin, GPIO.OUT) configures the pin as an output pin, allowing the program to turn the LED on or off.
  3. Final Answer:

    It sets the specified pin as an output to control the LED. -> Option D
  4. Quick Check:

    GPIO.setup with GPIO.OUT means output pin [OK]
Hint: Remember: setup with GPIO.OUT means output pin [OK]
Common Mistakes:
  • Confusing input and output pin setup
  • Thinking setup turns LED on
  • Mixing cleanup with setup
2. Which of the following is the correct way to import the GPIO library and set the pin numbering mode for a Raspberry Pi LED blink program?
easy
A. import RPi.GPIO as GPIO\nGPIO.setupmode(GPIO.BCM)
B. import RPi.GPIO as GPIO\nGPIO.setmode(GPIO.BOARD)
C. import RPi.GPIO as GPIO\nGPIO.setmode(GPIO.OUT)
D. import gpiozero\ngpiozero.setmode(GPIO.BCM)

Solution

  1. Step 1: Importing the GPIO library

    The standard library to control GPIO pins on Raspberry Pi is RPi.GPIO, imported as GPIO.
  2. Step 2: Setting pin numbering mode

    We use GPIO.setmode() to choose pin numbering style. GPIO.BOARD uses physical pin numbers, which is common for beginners.
  3. Final Answer:

    import RPi.GPIO as GPIO\nGPIO.setmode(GPIO.BOARD) -> Option B
  4. Quick Check:

    Import RPi.GPIO and setmode BOARD [OK]
Hint: Use 'import RPi.GPIO as GPIO' and 'GPIO.setmode(GPIO.BOARD)' [OK]
Common Mistakes:
  • Using gpiozero instead of RPi.GPIO
  • Wrong method names like setupmode
  • Setting mode to GPIO.OUT instead of BOARD or BCM
3. What will be the output behavior of this code snippet controlling an LED on pin 11?
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
for i in range(3):
    GPIO.output(11, GPIO.HIGH)
    time.sleep(1)
    GPIO.output(11, GPIO.LOW)
    time.sleep(1)
GPIO.cleanup()
medium
A. The LED will blink on and off 3 times with 1 second intervals.
B. The LED will stay on continuously for 3 seconds.
C. The LED will blink rapidly without delay.
D. The program will raise an error due to missing setup.

Solution

  1. Step 1: Analyze the loop and GPIO output commands

    The loop runs 3 times. Each time, the LED pin is set HIGH (on), waits 1 second, then set LOW (off), waits 1 second.
  2. Step 2: Understand the LED blinking pattern

    This means the LED turns on for 1 second, off for 1 second, repeated 3 times, resulting in 3 blinks.
  3. Final Answer:

    The LED will blink on and off 3 times with 1 second intervals. -> Option A
  4. Quick Check:

    Loop with sleep controls blink count and duration [OK]
Hint: Loop with sleep(1) toggles LED on/off 3 times [OK]
Common Mistakes:
  • Thinking LED stays on continuously
  • Ignoring sleep delays causing rapid blinking
  • Assuming missing setup causes error here
4. Identify the error in this Raspberry Pi LED blink code:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
GPIO.output(18, GPIO.HIGH)
time.sleep(1)
GPIO.output(18, GPIO.LOW)
GPIO.cleanup()
medium
A. Pin 18 is not set up as output before use.
B. Missing import of time module.
C. GPIO.setmode(GPIO.BCM) conflicts with pin numbering 18 if BOARD mode expected.
D. GPIO.cleanup() should be called before output commands.

Solution

  1. Step 1: Check pin numbering mode and pin number

    The code uses GPIO.setmode(GPIO.BCM), which means pin numbers refer to Broadcom chip pins. Pin 18 is valid in BCM mode, but if the user expects physical pin numbering (BOARD), this causes confusion.
  2. Step 2: Understand the mismatch impact

    If the user wired the LED to physical pin 18 (BOARD), but code uses BCM mode, the LED won't work as expected. This is a common error mixing modes and pin numbers.
  3. Final Answer:

    GPIO.setmode(GPIO.BCM) conflicts with pin numbering 18 if BOARD mode expected. -> Option C
  4. Quick Check:

    Pin numbering mode must match wiring [OK]
Hint: Match setmode with pin numbering used [OK]
Common Mistakes:
  • Confusing BOARD and BCM pin numbers
  • Calling cleanup too early
  • Forgetting to import time module
5. You want to blink two LEDs connected to pins 7 and 11 alternately for 5 cycles using Raspberry Pi GPIO. Which code snippet correctly implements this behavior?
hard
A. import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(7, GPIO.OUT) GPIO.setup(11, GPIO.OUT) for _ in range(5): GPIO.output(7, GPIO.HIGH) GPIO.output(11, GPIO.LOW) time.sleep(0.5) GPIO.output(7, GPIO.LOW) GPIO.output(11, GPIO.HIGH) time.sleep(0.5) GPIO.cleanup()
B. import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(7, GPIO.OUT) for _ in range(5): GPIO.output(7, GPIO.HIGH) GPIO.output(11, GPIO.LOW) time.sleep(1) GPIO.cleanup()
C. import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(7, GPIO.OUT) GPIO.setup(11, GPIO.OUT) GPIO.output(7, GPIO.HIGH) GPIO.output(11, GPIO.HIGH) GPIO.cleanup()
D. import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(7, GPIO.IN) GPIO.setup(11, GPIO.IN) for _ in range(5): GPIO.output(7, GPIO.HIGH) GPIO.output(11, GPIO.LOW) time.sleep(0.5) GPIO.cleanup()

Solution

  1. Step 1: Setup pins as output and initialize GPIO

    Both pins 7 and 11 are set as outputs using GPIO.setup(pin, GPIO.OUT). The mode is set to BOARD to match physical pin numbers.
  2. Step 2: Alternate LEDs in a loop with delays

    The loop runs 5 times. Inside each cycle, pin 7 is turned on and pin 11 off, then after 0.5 seconds, pin 7 is off and pin 11 on, creating alternate blinking.
  3. Step 3: Cleanup GPIO pins after use

    Calling GPIO.cleanup() resets the pins safely after blinking finishes.
  4. Final Answer:

    Code in option A correctly blinks two LEDs alternately for 5 cycles. -> Option A
  5. Quick Check:

    Alternate output with sleep and cleanup [OK]
Hint: Use two outputs toggled alternately with sleep [OK]
Common Mistakes:
  • Setting pins as input instead of output
  • Not toggling both pins alternately
  • Missing time delays causing no visible blink
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