はじめに
RaspberryPi Pico2 で、MicroPythonとMachineモジュールを使って「フルカラーLED」を光らせる方法を解説します。
「フルカラーLED」は一般的な単色のLEDと違って、複数の色を発色できるLEDです。
手ごろな価格で使い方も簡単。工作やプロダクトをゲーミングPCのように光らせたり、おもちゃや、飾り物のイルミネーションを作ったりと応用先も幅広いです。
初心者の方でも簡単にできるので、記事の内容参考にぜひ使ってみてください。
記事ではRaspberryPi Pico2を使っていますが、Pico、PicoWでも同じ配線・プログラムで動作します。
ぜひお手持ちのPicoシリーズで、試してみてください。
~ この記事の内容 / Contents ~
環境
この記事で使用する環境は以下の通りです。
環境 | バージョンなど | 備考 |
開発用PCのOS | Windows11 | Windows10でもOKです |
言語 | MicroPython Ver.1.24.0 | |
開発環境 | Thonny Ver.4.1.4 | |
ボード | RaspberryPi Pico2 | Pico, PicoWでもOKです |
フルカラーLED(SH5RGB)
フルカラーLEDは、「赤」「緑」「青」の色を組み合わせることで、1つのLEDで様々な色が表示できるLEDです。
接続する端子(足)が4つで、その内3つが「赤(R)」「緑(G)」「青(B)」の色に対応しており、それぞれの足の電圧の強弱で色を指定できます。
残る1本は共通化されたグラウンドで、グラウンドが共通化されていることからこのタイプは「カソードコモン」と呼ばれます。
逆にプラス側が共通化され、グラウンド側が3つに分かれているものは「アノードコモン」と呼ばれます。
Picoシリーズにはピンの出力電圧を変更する機能はありません。そのため、PWMを使って電圧を変更します。PWMについてはこちらの記事をご覧ください。
なお、MicroPythonには、フルカラーLED用ライブラリを扱う「NeoPixel」というライブラリもありますが、今回はあえて基礎的なMachineライブラリを使用する方法を解説します。
SH5RGBの端子とスペック
端子(足)の並びとスペックは以下の通りです。
型番 | SH5RGB | |
順電圧(VF) | RED | 1.8 ~ 2.2V |
GREEN | 3.2 〜 3.4V | |
BLUE | 3.0 〜 3.4V | |
順方向電流 | 20mA |
RaspberryPi Pico2とフルカラーLEDの接続
Pico2とフルカラーLEDを以下のように接続します。
ピン番号 | 内容 | 接続先 | 備考 |
17 | GP13 | RED | |
18 | GND | Common GND | 共通のGNDです。 |
19 | GP14 | GREEN | |
20 | GP15 | BLUE |
Picoピンアサイン(Pin-Out)
※ Pico公式サイトより引用
使用する部品
RaspberryPi Pico 2
今からPicoを揃えるなら、RaspberryPi Pico2がおすすめです。Picoに比べて1.5倍高速で、値段はほぼ一緒です。
すぐに使えるキットもあります
ピンヘッダが半田付けされて、USBケーブルやピンのレイアウト表までついた、すぐに使えるセットもあります(さらに今ならブラックフライデーのセール中です!)。
フルカラーLED
記事内で使っているフルカラーLEDです。100個単位での販売が多い中、20個というちょうどいい数量で購入できます。
私も以下のリンク先から実際に購入しました。エアキャップ付きの封筒など、梱包状態も良好なので、おすすめできる購入先です。
ジャンパワイヤ(セット)
固いジャンパワイヤがセットになったキットです。やわらかい配線よりスッキリした回路が作れます。
ジャンパワイヤ(自作用)
キットだと丁度いい長さがない、色がない。という方は以下の配線で自作できます。ジャンパワイヤとほぼ同じ固さの配線なので、切って曲げるだけで理想のジャンパワイヤが作れます。
抵抗
お手持ちのものでOKです。ない方は一度セットで揃えてしまうと送料と時間が節約できます。
ブレッドボード
国内サンハヤト製のブレッドボードです。少々堅めの指し心地ですが、海外製と違ってピン穴の番号がすべて印刷されており、品質も高いのでおすすめです。
プログラム概要
今回のプログラムの概要は以下の通りです。
- PWMの設定をする
- 赤 → 緑 → 青 → 黄 → 白 → 消灯 の順で点灯させる
実行結果
後述するコードの実行結果は以下の通りです。
基本的に直視できない位の明るさになります。画像だと赤が暗く見えますが、実際はちょうどいいくらいの明るさで、暗く感じることはありません。
全体コード
全体コードは以下の通りです。詳細な内容は後述する「コードのポイント」で解説します。
import machine
import time
from machine import PWM
# 各ピンをPWMに設定します
Red = PWM(machine.Pin(13, machine.Pin.OUT))
Green = PWM(machine.Pin(14, machine.Pin.OUT))
Blue = PWM(machine.Pin(15, machine.Pin.OUT))
# PWMの周期(Hz)を設定します
Red.freq(1000)
Green.freq(1000)
Blue.freq(1000)
# Duty比の最大値です
max = 65535
for i in range(100):
# 赤
Red.duty_u16(max)
Green.duty_u16(0)
Blue.duty_u16(0)
time.sleep(2)
# 緑
Red.duty_u16(0)
Green.duty_u16(max)
Blue.duty_u16(0)
time.sleep(2)
# 青
Red.duty_u16(0)
Green.duty_u16(0)
Blue.duty_u16(max)
time.sleep(2)
# 黄
Red.duty_u16(max)
Green.duty_u16(max)
Blue.duty_u16(0)
time.sleep(2)
# 白
Red.duty_u16(max)
Green.duty_u16(max)
Blue.duty_u16(max)
time.sleep(2)
# 消灯
Red.duty_u16(0)
Green.duty_u16(0)
Blue.duty_u16(0)
time.sleep(2)
コードのポイント
PWMの設定
Machineモジュールを使って、PWMの設定を行います。PWMに使用するピンの「GP〇〇」の番号を指定し、周波数を1000Hzに設定します。
# 各ピンをPWMに設定します
Red = PWM(machine.Pin(13, machine.Pin.OUT))
Green = PWM(machine.Pin(14, machine.Pin.OUT))
Blue = PWM(machine.Pin(15, machine.Pin.OUT))
# PWMの周期(Hz)を設定します
Red.freq(1000)
Green.freq(1000)
Blue.freq(1000)
単色のLEDは10Hzなどのように、周波数が低いと点滅しているように見えますが、フルカラーLEDでは点滅にはならないようです。
色を指定してLEDを光らせる
RGBのバランスを指定して色を指定します。
Picoシリーズでは、PWMのDuty比(1周期中にどのくらいの間信号をONにするか?)を変えることで電圧を変化させることができます。
duty比を設定するためのduty_u16関数は、比率を符号なし16ビット(0~65535)で指定する仕様であるので、0~65535の値で比率を指定します。
3色の指定は混ぜることもでき、絵の具のように3色の全てを指定すると白。赤と黄色を指定することで「黄色」の点灯になります。
全てを0に指定すると「消灯」になります。
# 赤
Red.duty_u16(max)
Green.duty_u16(0)
Blue.duty_u16(0)
time.sleep(2)
# 緑
Red.duty_u16(0)
Green.duty_u16(max)
Blue.duty_u16(0)
time.sleep(2)
# 青
Red.duty_u16(0)
Green.duty_u16(0)
Blue.duty_u16(max)
time.sleep(2)
# 黄
Red.duty_u16(max)
Green.duty_u16(max)
Blue.duty_u16(0)
time.sleep(2)
# 白
Red.duty_u16(max)
Green.duty_u16(max)
Blue.duty_u16(max)
time.sleep(2)
# 消灯
Red.duty_u16(0)
Green.duty_u16(0)
Blue.duty_u16(0)
time.sleep(2)
まとめ
RaspberryPi Pico2 で、MicroPythonとMachineモジュールを使って「フルカラーLED」を光らせる方法を解説しました。
安くて扱いも簡単。色や点灯・点滅など、プログラムの結果がわかりやすく反映されるので、作るのも楽しいです。アイデアや製作物の表現の幅も広がるので、ぜひぜひ使ってみてください。
参考になればうれしいです。
おすすめ書籍
MicroPythonのプログラミングガイドブックがついに登場!
「MicroPython」の専門書がついに発売になりました!
この一冊で、MicroPythonの言語仕様から、プログラミングの仕方までが、”ガッツリ”学べます!
別言語を使っている人や、これからマイコンを始める(工学系の)学生を対象としているので「初心者向け」ではありません。しかし、「自前のライブラリの作成」が目標なので、これ一冊で「ガッツリ」とMicroPythonを学びたい人におすすめの内容となっています。
全ての内容はここでは紹介しきれないので、詳細は以下からご覧ください。目次だけでも”ガッツリ”なのが確認できると思います。
質問・要望 大歓迎です
「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。
使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。