フィジカルコンピューティング with Raspberry PI Pico
5 Lチカ

ここでは、ブレッドボードやジャンパー線を使ってLEDを点滅させる、通称「Lチカ」プログラムを作成します。電子工作界隈では、LEDをチカチカさせる入門プログラムを「Lチカ」というそうです。

Lチカ プログラム

プログラムは次のように動作します。

使用する電子部品

使用している、Picoをのぞく電子部品を紹介します。

ブレッドボード

たとえばデジタル温度計など、Picoを本格的に稼働させるときには、Picoやディスプレイを接続するジャンパー線をはんだ付けして固定し、全体を筐体に収めることになりますが、ブレッドボードを使うと、Picoや電子部品との接続を、はんだ付けせず“仮止め”しておくことができます。

ブレッドボードは下図の構造をしています。ブレッドボードの表面はただ穴が並んでいるだけのように見えますが、内部でつながっています。ブレッドボードの両端(一方のみも場合もある)には、縦向きにつながった電源レールとグランドレールがあります。電源レールは赤い線や+で表され、グランドレールは青や黒の線、-で表されます。

内側の穴は横向きにつながっていますが、真ん中の溝で分断されています。Picoを下図のように、Micro USBポートを上にし、上端のピン(GP0)をブレッドボードの端の穴にそろえると、Picoのピン番号がブレッドボードの穴の番号で参照しやすくなります。

ジャンパー線

ジャンパー線には、接続部によって、オス-オス、オス-メス、メス-メスの3種類があります。ここではオス-オスを使います。極性はありません。これは、どちらをプラス側に、どちらをマイナス側につなぐという決まりはないということです。

抵抗器(抵抗)

抵抗器は330Ω(Ω)程度のものを、LEDの接続に使います。極性はありません。

LED

光らせたい色のものを使います。LEDには極性があるので注意します。2本の足の長い方をプラス側に、短い方をマイナス側につなぎます。抵抗器を使用しないと、Pico本体やLEDがダメージを受ける恐れがあるので、LEDを使うときには、必ず抵抗器を使用するようにします。

配線

配線は図があればそれを見て、ない場合は簡単なものを書いて、それを見ながら行うのが間違いが少なくてよいでしょう。PicoのUSBポートを上にして見た場合、Picoの上端とブレッドボードの上端が揃うように、Picoをブレッドボードに挿します。

Raspberry Pi Pico 抵抗器 LED
GP15 <---> VCC(+、長い足)
GND GND(-、短い足)

GP15が具体的にどの位置にあるのかは、前の「ピンアウト」で述べたピンの配置図で調べます。GP15は下図で見ると、Picoの左下隅のピンだと分かります。GNDは全部で8か所あり、実際の接続先はPicoの右上隅のGNDでなくても構いません。

非常に細かく、配線の手順を示すと次のように記述できます。

  1. Picoの左下隅のGP15ピンを使うので、その左にあるブレッドボードの穴(20行め)に、抵抗器の足(どちらでもよい)を挿し、もう一方を25行めの穴に挿します。
  2. LEDの長い方の足を25行めの穴に挿し、真ん中の溝をまたいで、短い方の足を25行めの穴に挿します。
  3. 黒かなければ濃い色のジャンパー線を25行めの穴に挿し、もう一方をグランドレールのどこかの穴に挿します。
  4. 黒かなければ濃い色のジャンパー線をもう1本使って、グランドレールに挿し、片方をPicoのGNDピンのある3行めの穴に挿します。

この配線によって、GP16 -> (抵抗) ->(+)LED(-) -> (グランドレール) -> GND が接続できたことになります。抵抗器とLEDの長い足とはブレッドボードの同じ列を通って、LEDの短い足とジャンパー線とはブレッドボードの同じ列を通って、ジャンパー線とジャンパー線はグランドレールを通って、ブレッドボード内部でつながっています。

プログラムコード 点灯

Thonnyの[+]ボタン([新規ファイル]ボタン)をクリックして、次のコードを記述します。

import machine

led_external = machine.Pin(15, machine.Pin.OUT)
led_external.value(1)

Thonnyの[実行]ボタンをクリックして、プログラムを実行します。配線とコードの記述に間違いがなければ、LEDが点灯します。プログラムを停めるには[停止]ボタンをクリックします。ただしLEDは消えません。

このプログラムではGP15ピンを使っているので、Pin()関数にはその番号の15を指定しています。変数led_externalの”external”は「外部の」と言う意味です。

led_external.value(1)は、もっと分かりやすくled_external.on()と記述できます。同様にled_external.value(0)はled_external.off()と記述できます。この方がオン(点灯)とオフ(消灯)が直感的に分かりやすくなります。

電気は高いところから低いところに流れます。言い換えると、電流は電圧の高いところ(+)から低いところ(-)に流れます。今の場合は、LEDとPicoを保護するために、抵抗器を入れて、電流を流れにくくしています。

プログラムコード 点滅

LEDの点滅は、プログラムの実行を一時停止させ、その時間分同じ状態でいさせることで実現できます。

コードを次のように変更します。

import machine
import utime

led_external = machine.Pin(15, machine.Pin.OUT)

# 無限ループ
while True:
    led_external.on()	# 点灯
    utime.sleep(1)	# 1秒間、同じ状態
    led_external.off()	# 消灯
    utime.sleep(1)	# 1秒間、同じ状態

このプログラムを実行すると、1秒間点灯し1秒間消灯する動作を繰り返します。

ここでは時間を扱うので、utimeライブラリをインポートしています。これはMicroPython版のtimeライブラリで、sleep()メソッドに秒数を指定すると、その間、プログラムの実行が停止できます。

LEDを点灯して1秒間その状態をつづけ、LEDを消灯して1秒間その状態をつづけ、これをwhileループで繰り返しつづけると点滅になります。ここではPythonと同様、MicroPythonでもインデントが必要です。

utime.sleep()の停止時間を変えると、点滅のリズムを変えることができます。たとえば点灯の時間を0.1に変えると、テレビドラマでよく見る、手術室の心臓の脈動のようなリズムに変わります。

LEDの点灯は、LEDに電気が流れオンの状態にあるということです。これは数値の1(3.3V)であり、論理値のTrueに当たります。同様に、LEDの消灯はLEDがオフの状態にあり、0(0V)、Falseであることを表しています。電気が流れるか流れないかのオン/オフは、電子機器にとって理解できる唯一の状態で、Picoやコンピュータはこれを2進数で理解します。

オンボードLEDと交互に点滅

前の例と合わせると、オンボードLEDと外部LED両方が制御できます。オンボードLEDが点いている間は外部LEDを消し、外部LEDが点いている間はオンボードLEDを消すといったことができます。


import machine
import utime

led_onboard = machine.Pin(25, machine.Pin.OUT)	# Pico
# led_onboard = machine.Pin(“LED”, machine.Pin.OUT)	# Pico W
led_external = machine.Pin(15, machine.Pin.OUT)

# 無限ループ
while True:
    # 0.5秒間、オンボードLEDを点灯
    # 0.5秒間、外部LEDを消灯
    led_onboard.on()
    led_external.off()	
    utime.sleep(0.5)
    
    # 1秒間、オンボードLEDを点灯
    # 1秒間、外部LEDを点灯
    led_onboard.off()
    led_external.on()	
    utime.sleep(1)

Thonnyの[停止]ボタンをクリックすると、どちらかのLEDが点いたままでプログラムは終了します。LEDを消したい場合は、単にUSBケーブルをPCから抜きます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA