Raspberry Pi/はじめて/6分で読める/
ラズパイGPIOのBCM番号と物理ピン番号の違い
Raspberry Piでは、GPIO18のようなBCM番号と、物理ピン12のようなコネクタ上の番号が別物です。コードと配線で番号の基準がズレると、正しく配線しているつもりでもLEDが動きません。
WIRING ORDER
配線順序プレビュー
Tsunagu IoT Learn / Raspberry Pi
- 1STEP 1Raspberry Pi GPIO18(物理ピン12) から 抵抗を通して LEDの長い足(アノード) へここからRaspberry Pi GPIO18(物理ピン12)抵抗→ここへLEDの長い足(アノード)
確認: コードではGPIO.setmode(GPIO.BCM)を使い、18と書きます。
- 2STEP 2LEDの短い足(カソード) から Raspberry Pi GND(物理ピン6など) へここからLEDの短い足(カソード)→ここへRaspberry Pi GND(物理ピン6など)
確認: GNDピンは複数ありますが、どれも共通の基準です。
用意するもの
- Raspberry Pi 4 / 5 などGPIOを使える本体
- LED 1個
- 330Ω前後の抵抗 1本
- ブレッドボード
- ジャンパーワイヤー
配線
| 接続元 | 接続先 | 確認点 |
|---|---|---|
| Raspberry Pi GPIO18(物理ピン12) | 抵抗を通してLEDの長い足(アノード) | コードではGPIO.setmode(GPIO.BCM)を使い、18と書きます。 |
| LEDの短い足(カソード) | Raspberry Pi GND(物理ピン6など) | GNDピンは複数ありますが、どれも共通の基準です。 |
配線元、配線先、コードのピン番号を同じ画面で確認できます。
手順
- 1GPIO.setmode(GPIO.BCM)を使うか、GPIO.BOARDを使うかを先に決めます。
- 2この記事ではBCM番号を使うため、コード上のLED_PINは18にします。
- 3実際のピンヘッダーでは物理ピン12の位置にジャンパーワイヤーを挿します。
- 4GNDは物理ピン6などのGNDへ戻します。
BCM番号GPIO18でLEDを点滅させるPythonコード
pythonimport RPi.GPIO as GPIO
import time
LED_PIN = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED_PIN, GPIO.OUT)
try:
while True:
GPIO.output(LED_PIN, GPIO.HIGH)
time.sleep(1)
GPIO.output(LED_PIN, GPIO.LOW)
time.sleep(1)
finally:
GPIO.cleanup()動かないときの確認
- BCM番号18と物理ピン12を混同していないか
- GPIO.setmode(GPIO.BCM)になっているか
- LEDに抵抗を直列に入れているか
- GNDへ戻る線があるか
よくあるミス
- GPIO18と書いて物理ピン18に挿してしまう
- GPIO.BOARDのサンプルコードとBCMの配線図を混ぜる
- ピンヘッダーを逆向きに数えてしまう
次に試すこと
BCM番号と物理ピン番号の対応に慣れたら、LEDだけでなくボタンやセンサーでも、コードと配線の番号を同じ基準で確認しましょう。
デモで配線を確認する