Python × Pico 電子工作 | #02 LEDを光らせよう

前回は Raspberry Pi Pico の基本とブレッドボード・ピン配置を学びました。今回は実際に LED を光らせる プログラムを動かしながら、電子工作の核となる 2 つの知識を身につけましょう。

  • LED の極性(アノードとカソード)と回路記号の見方
  • 電流制限抵抗の計算(オームの法則)と LED 焼損の防ぎ方

PycoBlocks(MicroPythonモード) を開き、左カテゴリ「Pico 電子工作 / デジタル出力」から「LED を点灯する」ブロックを 1 つ置くだけで、回路図と MicroPython コードが同時に表示されます。

LEDを光らせよう

LED の仕組みと極性

LED(発光ダイオード)は電流を一方向にしか流さない素子です。正しい向きで電気を流したときだけ光ります。足の長い方を アノード(+)、短い方を カソード(-) と呼びます。

名称記号足の長さつなぐ先
アノード+長い方GP ピン(HIGH 側)
カソード-短い方GND

⚠️ 向きを間違えると光らない

LED を逆向き(アノードを GND 側)につなぐと電流が流れず、まったく光りません。回路図記号では 三角形の先端=横線のある側がカソード(-) です。光らないときは、まず LED の向きを疑いましょう。

なぜ抵抗が必要? 電流制限の計算

Pico の GP ピンから出る電圧は 3.3V です。一方、赤色 LED の順方向電圧(点灯に必要な電圧)は約 2.0V、適正電流は 10mA(0.01A) 程度です。差分の 1.3V を抵抗で消費させなければ、LED に過大な電流が流れて焼損します。

🚫 抵抗なしで直結しない

GP ピンと LED を抵抗なしで直接つなぐと、定格を超える電流が流れて LED が一瞬で焼損 したり、Pico の GP ピンを傷める恐れがあります。外付け LED には必ず電流制限抵抗を入れましょう。

オームの法則 V = I × R を使うと、必要な抵抗値が計算できます。

# 必要な抵抗値(オームの法則)
V_supply = 3.3       # GP ピンの電圧
V_led    = 2.0       # LED の順方向電圧(赤色の場合)
I_target = 0.01      # 流したい電流(10mA)

R = (V_supply - V_led) / I_target   # → 130 Ω
# 余裕を持って 220Ω〜330Ω を選べば LED は焼けない

本シリーズでは 330Ω(橙・橙・茶・金)を採用します。計算値より少し大きい値を選ぶことで、製造ばらつきや電源変動に対する安全マージンが取れます。

カラーコード値用途
茶黒赤金1kΩ暗めの点灯・電池駆動
橙橙茶金330Ω本シリーズ標準(3.3V LED)
赤赤茶金220Ω明るく光らせたいとき

ステップ1:内蔵 LED を点灯しよう(GP25)

Pico(無印)の基板上にはオンボード LED が 1 個搭載されており、GP25 に直結されています(外付け部品なしで点灯可能)。「LED を点灯する ピン:GP25 (オンボード)」ブロックを 1 つ置くだけで光ります。

内蔵 LED(GP25)を点灯するブロック
ブロック構成:「LED を点灯する ピン:GP25 (オンボード)」を 1 つ置くだけ。
from machine import Pin
led = Pin(25, Pin.OUT)
led.value(1)   # HIGH = 点灯

Pico W を使っている人へ:内蔵 LED は Pin('LED')

Pico W は無線通信機能(WiFi/Bluetooth)を載せた上位モデルで、基板の見た目はほぼ同じですが 内蔵 LED が GP25 ではなく WiFi チップ(CYW43439)経由 で制御される構造に変わっています。そのため Pin(25, Pin.OUT) では点灯せず、ピン番号の代わりに文字列 'LED' を渡すのが正解です。

PycoBlocks(MicroPythonモード) では Pico W ユーザー向けに専用カテゴリ 「Pico W 専用」(紫紺色)を用意しています。無印 Pico のブロック(赤・橙色)と視覚的に区別できるように分けてあるので、自分の機種に合うほうを選んでください。

Pico W 内蔵 LED を点灯するブロック
ブロック構成:「Pico W 専用」カテゴリの「Pico W 内蔵LEDを点灯する」を 1 つ置くだけ。
from machine import Pin
Pin('LED', Pin.OUT).value(1)   # Pico W の内蔵 LED を点灯

なお、外付け LED(このあとのステップ2)の配線とブロックは Pico でも Pico W でも全く同じ です。GP15 などの GP ピンは両機種で共通なので、外付け LED の例はそのまま進めて問題ありません。Pico W ならではの WiFi/HTTP 通信は #15・#16 で詳しく扱います。

ステップ2:外付け LED を配線して光らせよう(GP15)

次は LED とジャンパーワイヤを使い、ブレッドボード上に独立した回路を組みます。GP15 → 330Ω 抵抗 → LED アノード → LED カソード → GND の順につなぎます。

まず、つなぎ方を 回路図 で確認しましょう。回路図は部品の位置ではなく「どことどこが電気的につながっているか」を表す設計図です。電流は GP15(HIGH=3.3V)から抵抗・LED を通って GND へ、上から下へ一本道で流れます。

外付け LED の回路図(GP15→330Ω→LED→GND)
回路図:GP15 → 330Ω → LED(アノード→カソード)→ GND。三角形の先(横線のある側)がカソードで、GND につなぐ。

PycoBlocks では「LED を点灯する ピン:GP15」を置くだけで、下の図のような 実体配線図(ブレッドボード上の実際の挿し位置)が画面左下のプレビューに自動表示されます。回路図と見比べてみましょう。

外付け LED(GP15)配線図
GP15 → 330Ω 抵抗 → LED → GND。(実体配線図は Fritzing の部品画像をもとに作図・CC BY-SA 3.0)
外付け LED(GP15)を点灯するブロック
ブロック構成:ピン番号を GP15 に変えただけ。配線は変わるがブロックは同じ。
from machine import Pin
led = Pin(15, Pin.OUT)
led.value(1)   # HIGH = 点灯

配線のポイント: 抵抗は LED の前でも後でも電気的には同じ効果ですが、「GP ピン → 抵抗 → LED → GND」の順で並べると初学者にも理解しやすい配置です。抵抗には方向(極性)はありません。

ステップ3:digital_write で書いてみよう

「LED を点灯する」ブロックは、内部的には 「ピンを HIGH にする」(電圧を 3.3V にする)処理を行っています。より汎用的な 「ピン ◯◯ を HIGH/LOW にする」 ブロックを使えば、LED だけでなく後で扱うブザーやモーター制御にも同じ書き方が使えます。

ピン GP15 を HIGH にするブロック(digital_write 相当)
ブロック構成:「ピン GP15 を HIGH にする」を 1 つ置く。LED 専用ブロックの代替。
from machine import Pin
pin15 = Pin(15, Pin.OUT)
pin15.value(1)   # HIGH = 3.3V 出力
# pin15.value(0)  # LOW  = 0V  出力(消灯)

「LED を点灯する」と「ピン GP15 を HIGH にする」は MicroPython では同じ命令(led.value(1))に変換されます。用途に応じて読みやすい方を選びましょう。

演習課題

課題3-2-1:抵抗値を計算してみよう

緑色 LED の順方向電圧は約 3.0V、適正電流は 10mA です。GP ピン(3.3V)に緑色 LED をつなぐとき、必要な最小抵抗値(Ω)を計算しよう。計算式と答えを書いてみよう。

▶ 模範解答と解説を見る
# オームの法則: R = (V_supply - V_led) / I
R = (3.3 - 3.0) / 0.01
  = 0.3 / 0.01
  = 30 Ω  (最低 30Ω あれば焼損しない)
# 実際は安全マージンを取って 100Ω〜330Ω を使うのが一般的

解説: 緑色や青色 LED は赤色より順方向電圧が高い(≈ 3.0〜3.2V)ため、電源 3.3V との差分が小さくなり、必要な抵抗値も小さくなります。ただし、ばらつきや LED 個体差を考えて、赤色 LED と同じ 330Ω を使っても問題ありません。電流が少なくなる(暗くなる)だけで、LED は壊れません。

課題3-2-2:LED を 1 秒間隔で点滅させよう

GP15 の外付け LED を 1 秒点灯 → 1 秒消灯 の繰り返しで光らせよう。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

課題3-2-2 解答:1秒点滅のブロック構成
ブロック構成:ずっと繰り返す → LED を点灯する → 1秒待つ → LED を消灯する → 1秒待つ。
from machine import Pin
import utime
led = Pin(15, Pin.OUT)
while True:
    led.value(1)        # 点灯
    utime.sleep(1)
    led.value(0)        # 消灯
    utime.sleep(1)

解説: 「ずっと繰り返す」ブロックの中に「LED を点灯する → 1秒待つ → LED を消灯する → 1秒待つ」を並べます。「ずっと繰り返す」ブロックは MicroPython の while True: に変換されます。utime.sleep(1) は CPU を 1 秒間停止させる命令です。この組み合わせで「点灯 → 待機 → 消灯 → 待機」の周期動作が作れます。Lチカ(LED チカチカ)は電子工作の Hello, World! と呼ばれる定番プログラムです。

課題3-2-3:LED を 2 個同時に点滅させよう

GP14 と GP15 に 2 個の LED(それぞれ 330Ω 抵抗付き)を配線し、0.5 秒間隔で同時に点滅 させよう。ブレッドボード上では電源レール(GND)を共有させて、ジャンパー本数を減らすのがコツ。

2個 LED 同時点滅 配線図(GP14・GP15)
GP14 と GP15 の 2 個の LED を 330Ω 抵抗経由で共通 GND に落とす。
▶ 模範解答と解説を見る

ブロックの組み合わせ例:

課題3-2-3 解答:2個 LED 同時点滅のブロック構成
ブロック構成:2 個の点灯ブロック → 0.5秒待つ → 2 個の消灯ブロック → 0.5秒待つ。
from machine import Pin
import utime
led_a = Pin(14, Pin.OUT)
led_b = Pin(15, Pin.OUT)
while True:
    led_a.value(1)
    led_b.value(1)
    utime.sleep(0.5)
    led_a.value(0)
    led_b.value(0)
    utime.sleep(0.5)

解説: GP14 と GP15 をそれぞれ Pin(14, Pin.OUT) / Pin(15, Pin.OUT) で初期化し、両方を同じタイミングで HIGH/LOW に切り替えます。「value(1) → value(1) → sleep」の順で書けば人間の目には完全に同時点滅に見えます。発展:片方を value(0)、もう片方を value(1) にして交互点滅にすれば、踏切信号のような演出も作れます。

まとめ

  • LED は アノード(+・足長) を GP ピン側、カソード(-・足短) を GND 側につなぐ。
  • 3.3V の GP ピンと赤色 LED(順方向電圧 ≒ 2.0V)の組み合わせでは 330Ω 程度の電流制限抵抗を必ず入れる。
  • 「LED を点灯する」ブロックは内部的に Pin(N, Pin.OUT).value(1) を実行している。digital_write ブロックと等価。
  • Pico 内蔵 LED は GP25、Pico W は Pin('LED')。外付け回路はどちらの機種でも同じ(共通の GP ピンを使う)。
  • Lチカ(点滅)は「ずっと繰り返す」+「待つ」ブロックで構成される。電子工作のスタートライン。

次の記事ではタクトスイッチでデジタル入力を読み取り、ボタンを押している間だけ LED が光るインタラクティブな回路を作ります。

トップへ戻る