Skip to content

第5章 LEDで学ぶデジタル出力

この章では、Pico WからLEDを点灯・消灯し、 デジタル出力の基本を確認します。

最初に内蔵LEDを使用してプログラムの動きを確認します。 次に、ブレッドボードへ外付けLEDを接続し、 プログラムからGP15の出力を切り替えます。

この章でできるようになること

Section titled “この章でできるようになること”
  • デジタル出力の10を説明できる
  • Pico Wの内蔵LEDを点灯・消灯できる
  • LEDのアノードとカソードを見分けられる
  • GP15、330Ω抵抗、LED、GNDを接続できる
  • 外付けLEDを点滅させ、待ち時間を変更できる
  • 内蔵LEDと外付けLEDのコードの違いを説明できる
分類使用するもの数量
制御用ボードピンヘッダー実装済みのRaspberry Pi Pico WまたはPico WH1
配線ブレッドボード1
出力部品一般的な赤色LED1
保護部品330Ω抵抗(橙・橙・茶・金)1
配線ジャンパーワイヤー2本程度
PC接続データ通信対応Micro USBケーブル1

開始時は、Pico Wへ外付け部品を接続していない状態とします。

  • 配線を追加・変更するときは、Pico WからUSBケーブルを外します
  • 外付けLEDには、必ず330Ω抵抗を直列に接続します
  • LEDの向きを確認してから通電します
  • GP15とGNDを抵抗なしで直接接続しません
  • 配線後は講師または接続表による確認を行ってからUSB接続します

GPIOを出力として使用すると、 プログラムから端子の電圧を2つの状態へ切り替えられます。

プログラム上の値呼び方GP15の状態LED
1HIGH約3.3V点灯
0LOW約0V消灯

このように、2つの状態を切り替える出力をデジタル出力と呼びます。

10は、必ずLEDの点灯と消灯を意味するわけではありません。 接続する回路によって動作は変わります。 この章の外付けLED回路では、1で点灯し、0で消灯します。

Pico Wには、動作確認に使用できるLEDが内蔵されています。 Pico Wの内蔵LEDは無線チップ側の端子へ接続されていますが、 MicroPythonではLEDという名前を使って制御できます。

次のプログラムをch05_01_internal_led.pyとしてPC側へ保存し、実行します。

ch05_01_internal_led.py
from machine import Pin
import time
led = Pin("LED", Pin.OUT)
led.on()
time.sleep(2)
led.off()

内蔵LEDが2秒間点灯し、その後消灯すれば成功です。

コード意味
from machine import PinGPIOを扱うPinを読み込む
Pin("LED", Pin.OUT)内蔵LEDを出力として準備する
led.on()LEDを点灯する
time.sleep(2)2秒間待つ
led.off()LEDを消灯する

Pin.OUTは、対象の端子を出力として使用する指定です。 ledという変数を通して、内蔵LEDの機能を呼び出しています。

次のプログラムでは、内蔵LEDの状態を6回切り替えます。

ch05_02_internal_led_blink.py
from machine import Pin
import 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が消灯する状態へそろえています。

LEDには向きがあります。

  • アノード:一般に端子が長い側。プラス側へ接続
  • カソード:一般に端子が短い側。部品の平らな側。GND側へ接続

製品によって外観が分かりにくい場合があります。 端子を切った後は長さで判断できないため、 平らな側や製品資料も確認します。

LEDへ流れる電流を制限するため、 GP15とLEDの間に330Ω抵抗を接続します。 抵抗には向きがないため、どちら向きに取り付けても動作します。

左側にLEDの長い端子であるアノードと、短い端子および平らな側であるカソードを示す。右側にGP15から330Ω抵抗、LED、GNDの順に接続する回路と、出力1で点灯、出力0で消灯する関係を示す。

図5-1 LEDの向きとGP15へ接続する回路

この章では、次の接続を標準とします。

接続元接続先補足
Pico WのGP15330Ω抵抗の片側GP15は物理ピン20
330Ω抵抗の反対側LEDのアノード一般に長い端子
LEDのカソードPico WのGND物理ピン18を使用

次の順番で配線します。

  1. Pico WからUSBケーブルを外します
  2. Pico Wを、中央の溝をまたぐ向きでブレッドボードへ挿します
  3. GP15と330Ω抵抗の片側を接続します
  4. 抵抗の反対側とLEDのアノードを接続します
  5. LEDのカソードと物理ピン18のGNDを接続します
  6. ブレッドボード内部で同じ端子列につながっている穴を確認します
  7. 接続表、図5-1、実物を順番に照合します
  8. 講師の確認後、USBケーブルを接続します

抵抗の両端やLEDの両端を、同じ内部接続の端子列へ挿すと、 部品を通らずにつながった状態になります。 第2章のブレッドボード内部接続図と照合してください。

次のプログラムをch05_03_external_led.pyとしてPC側へ保存し、実行します。

ch05_03_external_led.py
from machine import Pin
import time
LED_PIN = 15
led = 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を記述しないようにします。

対象Pinの指定配線
内蔵LEDPin("LED", Pin.OUT)追加配線なし
外付けLEDPin(15, Pin.OUT)GP15、330Ω抵抗、LED、GND

点灯や消灯に使うon()off()toggle()は同じです。 どの出力先をledへ割り当てるかが異なります。

LEDの状態は、10を使って指定することもできます。

led.value(1) # 点灯
led.value(0) # 消灯

この章の回路では、次の記述が対応します。

点灯消灯
led.on()led.off()
led.value(1)led.value(0)

on()off()は動作を読み取りやすい記述です。 value()は、条件判定の結果や変数の値をそのまま出力するときにも使用できます。

外付けLEDの点滅を確認できたら、次のいずれか1つを変更します。

  • time.sleep(0.5)time.sleep(0.2)へ変更する
  • count < 3count < 5へ変更する
  • on()off()value(1)value(0)へ書き換える

一度に複数箇所を変更せず、 1つ変更するたびに実行結果を確認します。

  • 内蔵LEDを点灯・消灯できる
  • 外付けLEDのアノードとカソードを確認できる
  • GP15、330Ω抵抗、LED、GNDを接続表どおりに配線できる
  • 接続表のGP15とコードの15を対応付けられる
  • 外付けLEDを3回点滅させられる
  • 待ち時間または繰り返し回数を変更できる
  • プログラム終了時にLEDが消灯している
状況主な確認箇所
内蔵LEDが点灯しないPin("LED", Pin.OUT)の引用符、Thonnyの接続先、MicroPythonの版
外付けLEDが点灯しないLEDの向き、GP15とGND、抵抗とLEDが同じ端子列で短絡していないか
LEDが常に点灯する実行中のコード、GP15以外の電源端子へ接続していないか
点滅回数が想定と違うcountの初期値、繰り返し条件、1回の繰り返しにある点灯と消灯
実行を止めても点灯しているShellからled.off()を実行するか、USBを外して配線を確認する
LEDが極端に明るい330Ω抵抗が直列に入っているか、抵抗値を取り違えていないか

配線を確認するときは、先にUSBケーブルを外します。 原因が分からないまま配線を増やしたり、 別の電源端子へ差し替えたりしません。

  • デジタル出力は、10の2つの状態を切り替える出力です
  • Pico Wの内蔵LEDは、MicroPythonからLEDという名前で制御できます
  • LEDには向きがあり、アノードを抵抗側、カソードをGND側へ接続します
  • 外付けLEDには330Ωの電流制限抵抗を直列に接続します
  • 外付けLEDはGP15を使用し、コードではPin(15, Pin.OUT)と指定します
  • on()off()toggle()value()で出力状態を変更できます
  • 配線とコードは、GPIO番号を基準に照合します

次の第6章では、タクトスイッチの状態を繰り返し確認し、 デジタル入力とポーリングの基本を学びます。