第5章 LEDで学ぶデジタル出力
この章の目的
Section titled “この章の目的”この章では、Pico WからLEDを点灯・消灯し、 デジタル出力の基本を確認します。
最初に内蔵LEDを使用してプログラムの動きを確認します。 次に、ブレッドボードへ外付けLEDを接続し、 プログラムからGP15の出力を切り替えます。
この章でできるようになること
Section titled “この章でできるようになること”- デジタル出力の
1と0を説明できる - Pico Wの内蔵LEDを点灯・消灯できる
- LEDのアノードとカソードを見分けられる
- GP15、330Ω抵抗、LED、GNDを接続できる
- 外付けLEDを点滅させ、待ち時間を変更できる
- 内蔵LEDと外付けLEDのコードの違いを説明できる
使用するもの
Section titled “使用するもの”| 分類 | 使用するもの | 数量 |
|---|---|---|
| 制御用ボード | ピンヘッダー実装済みのRaspberry Pi Pico WまたはPico WH | 1 |
| 配線 | ブレッドボード | 1 |
| 出力部品 | 一般的な赤色LED | 1 |
| 保護部品 | 330Ω抵抗(橙・橙・茶・金) | 1 |
| 配線 | ジャンパーワイヤー | 2本程度 |
| PC接続 | データ通信対応Micro USBケーブル | 1 |
開始時は、Pico Wへ外付け部品を接続していない状態とします。
安全上の注意
Section titled “安全上の注意”- 配線を追加・変更するときは、Pico WからUSBケーブルを外します
- 外付けLEDには、必ず330Ω抵抗を直列に接続します
- LEDの向きを確認してから通電します
- GP15とGNDを抵抗なしで直接接続しません
- 配線後は講師または接続表による確認を行ってからUSB接続します
5-1 デジタル出力とは
Section titled “5-1 デジタル出力とは”GPIOを出力として使用すると、 プログラムから端子の電圧を2つの状態へ切り替えられます。
| プログラム上の値 | 呼び方 | GP15の状態 | LED |
|---|---|---|---|
1 | HIGH | 約3.3V | 点灯 |
0 | LOW | 約0V | 消灯 |
このように、2つの状態を切り替える出力をデジタル出力と呼びます。
1と0は、必ずLEDの点灯と消灯を意味するわけではありません。
接続する回路によって動作は変わります。
この章の外付けLED回路では、1で点灯し、0で消灯します。
5-2 内蔵LEDを点灯する
Section titled “5-2 内蔵LEDを点灯する”Pico Wには、動作確認に使用できるLEDが内蔵されています。
Pico Wの内蔵LEDは無線チップ側の端子へ接続されていますが、
MicroPythonではLEDという名前を使って制御できます。
次のプログラムをch05_01_internal_led.pyとしてPC側へ保存し、実行します。
from machine import Pinimport time
led = Pin("LED", Pin.OUT)
led.on()time.sleep(2)led.off()内蔵LEDが2秒間点灯し、その後消灯すれば成功です。
コードを確認する
Section titled “コードを確認する”| コード | 意味 |
|---|---|
from machine import Pin | GPIOを扱うPinを読み込む |
Pin("LED", Pin.OUT) | 内蔵LEDを出力として準備する |
led.on() | LEDを点灯する |
time.sleep(2) | 2秒間待つ |
led.off() | LEDを消灯する |
Pin.OUTは、対象の端子を出力として使用する指定です。
ledという変数を通して、内蔵LEDの機能を呼び出しています。
内蔵LEDを点滅する
Section titled “内蔵LEDを点滅する”次のプログラムでは、内蔵LEDの状態を6回切り替えます。
from machine import Pinimport time
led = Pin("LED", Pin.OUT)led.off()count = 0
while count < 6: led.toggle() time.sleep(0.5) count = count + 1
led.off()led.toggle()は、現在の状態を反対へ切り替えます。
点灯中なら消灯し、消灯中なら点灯します。
最後にled.off()を実行し、
プログラム終了後にLEDが消灯する状態へそろえています。
5-3 LEDの向きと電流制限抵抗
Section titled “5-3 LEDの向きと電流制限抵抗”LEDには向きがあります。
- アノード:一般に端子が長い側。プラス側へ接続
- カソード:一般に端子が短い側。部品の平らな側。GND側へ接続
製品によって外観が分かりにくい場合があります。 端子を切った後は長さで判断できないため、 平らな側や製品資料も確認します。
LEDへ流れる電流を制限するため、 GP15とLEDの間に330Ω抵抗を接続します。 抵抗には向きがないため、どちら向きに取り付けても動作します。
図5-1 LEDの向きとGP15へ接続する回路
5-4 外付けLEDを配線する
Section titled “5-4 外付けLEDを配線する”この章では、次の接続を標準とします。
| 接続元 | 接続先 | 補足 |
|---|---|---|
Pico WのGP15 | 330Ω抵抗の片側 | GP15は物理ピン20 |
| 330Ω抵抗の反対側 | LEDのアノード | 一般に長い端子 |
| LEDのカソード | Pico WのGND | 物理ピン18を使用 |
次の順番で配線します。
- Pico WからUSBケーブルを外します
- Pico Wを、中央の溝をまたぐ向きでブレッドボードへ挿します
GP15と330Ω抵抗の片側を接続します- 抵抗の反対側とLEDのアノードを接続します
- LEDのカソードと物理ピン18の
GNDを接続します - ブレッドボード内部で同じ端子列につながっている穴を確認します
- 接続表、図5-1、実物を順番に照合します
- 講師の確認後、USBケーブルを接続します
抵抗の両端やLEDの両端を、同じ内部接続の端子列へ挿すと、 部品を通らずにつながった状態になります。 第2章のブレッドボード内部接続図と照合してください。
5-5 外付けLEDを点滅する
Section titled “5-5 外付けLEDを点滅する”次のプログラムをch05_03_external_led.pyとしてPC側へ保存し、実行します。
from machine import Pinimport time
LED_PIN = 15led = Pin(LED_PIN, Pin.OUT)led.off()count = 0
while count < 3: led.on() time.sleep(0.5) led.off() time.sleep(0.5) count = count + 1
led.off()外付けLEDが0.5秒ごとに点灯・消灯し、 3回点滅して消灯すれば成功です。
ピン番号をコードの先頭へまとめる
Section titled “ピン番号をコードの先頭へまとめる”LED_PIN = 15この変数は、外付けLEDを接続したGPIO番号を表します。 配線とコードを照合しやすいよう、ピン番号をコードの先頭へまとめています。
接続表のGP15に対し、コードでは数値の15を指定します。
物理ピン番号の20を記述しないようにします。
内蔵LEDと外付けLEDを比較する
Section titled “内蔵LEDと外付けLEDを比較する”| 対象 | Pinの指定 | 配線 |
|---|---|---|
| 内蔵LED | Pin("LED", Pin.OUT) | 追加配線なし |
| 外付けLED | Pin(15, Pin.OUT) | GP15、330Ω抵抗、LED、GND |
点灯や消灯に使うon()、off()、toggle()は同じです。
どの出力先をledへ割り当てるかが異なります。
5-6 value()で出力する
Section titled “5-6 value()で出力する”LEDの状態は、1と0を使って指定することもできます。
led.value(1) # 点灯led.value(0) # 消灯この章の回路では、次の記述が対応します。
| 点灯 | 消灯 |
|---|---|
led.on() | led.off() |
led.value(1) | led.value(0) |
on()とoff()は動作を読み取りやすい記述です。
value()は、条件判定の結果や変数の値をそのまま出力するときにも使用できます。
変更してみる
Section titled “変更してみる”外付けLEDの点滅を確認できたら、次のいずれか1つを変更します。
time.sleep(0.5)をtime.sleep(0.2)へ変更するcount < 3をcount < 5へ変更するon()とoff()をvalue(1)とvalue(0)へ書き換える
一度に複数箇所を変更せず、 1つ変更するたびに実行結果を確認します。
- 内蔵LEDを点灯・消灯できる
- 外付けLEDのアノードとカソードを確認できる
- GP15、330Ω抵抗、LED、GNDを接続表どおりに配線できる
- 接続表の
GP15とコードの15を対応付けられる - 外付けLEDを3回点滅させられる
- 待ち時間または繰り返し回数を変更できる
- プログラム終了時にLEDが消灯している
よくある問題と確認方法
Section titled “よくある問題と確認方法”| 状況 | 主な確認箇所 |
|---|---|
| 内蔵LEDが点灯しない | Pin("LED", Pin.OUT)の引用符、Thonnyの接続先、MicroPythonの版 |
| 外付けLEDが点灯しない | LEDの向き、GP15とGND、抵抗とLEDが同じ端子列で短絡していないか |
| LEDが常に点灯する | 実行中のコード、GP15以外の電源端子へ接続していないか |
| 点滅回数が想定と違う | countの初期値、繰り返し条件、1回の繰り返しにある点灯と消灯 |
| 実行を止めても点灯している | Shellからled.off()を実行するか、USBを外して配線を確認する |
| LEDが極端に明るい | 330Ω抵抗が直列に入っているか、抵抗値を取り違えていないか |
配線を確認するときは、先にUSBケーブルを外します。 原因が分からないまま配線を増やしたり、 別の電源端子へ差し替えたりしません。
- デジタル出力は、
1と0の2つの状態を切り替える出力です - Pico Wの内蔵LEDは、MicroPythonから
LEDという名前で制御できます - LEDには向きがあり、アノードを抵抗側、カソードをGND側へ接続します
- 外付けLEDには330Ωの電流制限抵抗を直列に接続します
- 外付けLEDはGP15を使用し、コードでは
Pin(15, Pin.OUT)と指定します on()、off()、toggle()、value()で出力状態を変更できます- 配線とコードは、GPIO番号を基準に照合します
- MicroPython公式「machine.Pin」(v1.26.0)
- Raspberry Pi公式「Connecting to the Internet with Raspberry Pi Pico W-series」(PDF)
- Raspberry Pi公式「Raspberry Pi Pico W Datasheet」(PDF)
次の第6章では、タクトスイッチの状態を繰り返し確認し、 デジタル入力とポーリングの基本を学びます。