Bird
Raised Fist0
Raspberry Piprogramming~10 mins

GPIO pin numbering (BCM vs BOARD) in Raspberry Pi - Visual Side-by-Side Comparison

Choose your learning style10 modes available
Concept Flow - GPIO pin numbering (BCM vs BOARD)
Start: Choose Pin Numbering Mode
↓
BOARD Mode Selected?
Yes→Use Physical Pin Numbers
↓
Access Pins by Position
↓
Perform GPIO Actions
↓
BCM Mode Selected?
Yes→Use Broadcom GPIO Numbers
↓
Access Pins by GPIO Number
↓
Perform GPIO Actions
Choose between BOARD (physical pin positions) or BCM (Broadcom chip numbers) to access Raspberry Pi GPIO pins before performing actions.
Execution Sample
Raspberry Pi
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
GPIO.output(7, GPIO.HIGH)
This code sets the pin numbering to BOARD mode, sets physical pin 7 as output, and turns it on.
Execution Table
StepActionPin Numbering ModePin ReferencedEffect
1Import GPIO libraryNoneNoneGPIO module ready
2Set mode to BOARDBOARDNonePins referenced by physical position
3Setup pin 7 as outputBOARDPhysical pin 7Pin 7 ready for output
4Set pin 7 HIGHBOARDPhysical pin 7Pin 7 output set to HIGH (on)
5EndBOARDPhysical pin 7Program finished
💡 Program ends after setting pin 7 HIGH in BOARD mode
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4Final
Pin Numbering ModeNoneBOARDBOARDBOARDBOARD
Pin 7 StateUndefinedUndefinedConfigured as OutputHIGHHIGH
Key Moments - 2 Insights
Why does setting GPIO.setmode(GPIO.BOARD) change how pins are referenced?
Because BOARD mode uses the physical pin numbers on the Raspberry Pi header, not the Broadcom chip numbers. See execution_table step 2 where mode changes to BOARD.
What happens if you use BCM numbering but reference a physical pin number?
The wrong pin will be accessed or an error may occur because BCM mode expects GPIO numbers, not physical positions. This is shown by contrasting step 2 and 3 in the execution_table.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the pin numbering mode after step 3?
ANone
BBCM
CBOARD
DUndefined
💡 Hint
Check the 'Pin Numbering Mode' column at step 3 in the execution_table.
At which step is pin 7 configured as an output?
AStep 3
BStep 4
CStep 2
DStep 1
💡 Hint
Look at the 'Effect' column in execution_table for when pin 7 is set as output.
If you change GPIO.setmode(GPIO.BCM) in the code, what changes in the execution_table?
APin numbering mode stays BOARD but pin referenced changes
BPin numbering mode changes to BCM and pin referenced changes to GPIO number
CNo change in pin numbering mode or pin referenced
DProgram will not run
💡 Hint
Refer to the concept_flow and execution_table showing mode selection effect on pin referencing.
Concept Snapshot
GPIO Pin Numbering Modes:
- BOARD: Use physical pin numbers on header
- BCM: Use Broadcom GPIO chip numbers
Set mode with GPIO.setmode(GPIO.BOARD) or GPIO.setmode(GPIO.BCM)
Pin references depend on chosen mode
Always set mode before accessing pins
Full Transcript
This visual execution shows how Raspberry Pi GPIO pin numbering works. First, you choose a mode: BOARD or BCM. BOARD mode uses the physical pin positions on the Pi's header, while BCM mode uses the Broadcom chip's GPIO numbers. The example code sets BOARD mode, then sets physical pin 7 as output and turns it on. The execution table traces each step, showing the mode and pin referenced. Variable tracking shows how the mode and pin state change. Key moments clarify why mode matters and what happens if you mix numbering systems. The quiz tests understanding of mode and pin setup. Remember to always set the pin numbering mode before controlling pins to avoid mistakes.

Practice

(1/5)
1. Which GPIO pin numbering mode uses the physical pin numbers on the Raspberry Pi header?
easy
A. BOARD numbering mode
B. BCM numbering mode
C. WIRING numbering mode
D. PIN numbering mode

Solution

  1. Step 1: Understand GPIO numbering modes

    GPIO pins can be numbered by their physical location (BOARD) or by the Broadcom chip numbering (BCM).
  2. Step 2: Identify physical pin numbering

    BOARD mode refers to the physical pin numbers on the Raspberry Pi header.
  3. Final Answer:

    BOARD numbering mode -> Option A
  4. Quick Check:

    Physical pins = BOARD [OK]
Hint: BOARD mode matches physical pin numbers on the header [OK]
Common Mistakes:
  • Confusing BCM with physical pin numbers
  • Thinking BCM is the physical numbering
  • Assuming WIRING or PIN modes exist
2. Which of the following is the correct way to set GPIO pin numbering to BCM mode in Python?
easy
A. GPIO.setmode(GPIO.BOARD)
B. GPIO.setupmode(GPIO.BCM)
C. GPIO.mode(GPIO.BCM)
D. GPIO.setmode(GPIO.BCM)

Solution

  1. Step 1: Recall the correct function to set GPIO mode

    The function to set numbering mode is GPIO.setmode().
  2. Step 2: Use the correct constant for BCM mode

    GPIO.BCM is the constant for BCM numbering mode.
  3. Final Answer:

    GPIO.setmode(GPIO.BCM) -> Option D
  4. Quick Check:

    Use setmode with BCM constant [OK]
Hint: Use GPIO.setmode(GPIO.BCM) to select BCM numbering [OK]
Common Mistakes:
  • Using GPIO.mode instead of GPIO.setmode
  • Using BOARD instead of BCM constant
  • Calling GPIO.setupmode which doesn't exist
3. Given the code snippet:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
GPIO.output(7, GPIO.HIGH)

Which physical pin is set HIGH?
medium
A. Pin 11 on the physical header
B. GPIO pin number 7 on the Broadcom chip
C. Pin 7 on the physical header
D. GPIO pin number 11 on the Broadcom chip

Solution

  1. Step 1: Identify the numbering mode used

    The code uses GPIO.setmode(GPIO.BOARD), so pin numbers refer to physical header pins.
  2. Step 2: Check which pin is set HIGH

    GPIO.setup(7, GPIO.OUT) and GPIO.output(7, GPIO.HIGH) set physical pin 7 HIGH.
  3. Final Answer:

    Pin 7 on the physical header -> Option C
  4. Quick Check:

    BOARD mode pin 7 = physical pin 7 [OK]
Hint: BOARD mode means pin number is physical header pin [OK]
Common Mistakes:
  • Confusing BOARD pin 7 with BCM GPIO 7
  • Assuming pin 7 means BCM numbering
  • Mixing physical pin numbers with BCM numbers
4. What is wrong with this code snippet?
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(10, GPIO.OUT)
GPIO.output(10, GPIO.HIGH)

Assuming the LED is wired to physical pin 10 on the header.
medium
A. Pin 10 in BCM does not match physical pin 10 wiring
B. GPIO.setmode(GPIO.BOARD) should be used instead
C. GPIO.output() requires pin number as string
D. GPIO.setup() cannot use BCM numbering

Solution

  1. Step 1: Understand numbering mismatch

    GPIO.setmode(GPIO.BCM) means pin numbers refer to Broadcom chip pins, not physical pins.
  2. Step 2: Check wiring vs numbering

    Physical pin 10 corresponds to BCM GPIO 15. The code uses BCM pin 10 (physical pin 19), so it does not control the wired physical pin 10.
  3. Final Answer:

    Pin 10 in BCM does not match physical pin 10 wiring -> Option A
  4. Quick Check:

    BCM 10 controls physical 19 ≠ pin 10 [OK]
Hint: Match numbering mode to wiring to avoid pin mismatch [OK]
Common Mistakes:
  • Assuming physical pin numbers work with BCM mode
  • Using string instead of int for pin number
  • Thinking GPIO.setup can't use BCM numbering
5. You want to control an LED connected to physical pin 12 on the Raspberry Pi header. Which code snippet correctly sets the pin HIGH using BCM numbering?
hard
A. GPIO.setmode(GPIO.BOARD) GPIO.setup(12, GPIO.OUT) GPIO.output(12, GPIO.HIGH)
B. GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) GPIO.output(18, GPIO.HIGH)
C. GPIO.setmode(GPIO.BCM) GPIO.setup(12, GPIO.OUT) GPIO.output(12, GPIO.HIGH)
D. GPIO.setmode(GPIO.BOARD) GPIO.setup(18, GPIO.OUT) GPIO.output(18, GPIO.HIGH)

Solution

  1. Step 1: Identify physical pin 12's BCM number

    Physical pin 12 corresponds to BCM GPIO 18 on Raspberry Pi.
  2. Step 2: Use BCM numbering mode and correct pin

    Set mode to GPIO.BCM and use pin 18 in setup and output.
  3. Final Answer:

    GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) GPIO.output(18, GPIO.HIGH) -> Option B
  4. Quick Check:

    Physical pin 12 = BCM 18, use BCM mode [OK]
Hint: Convert physical pin to BCM before coding [OK]
Common Mistakes:
  • Using physical pin number with BCM mode
  • Using BCM pin number with BOARD mode
  • Mixing pin numbers without conversion
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