MENU

Raspberry Pi Pico WでWS2812B 8×8LEDをランダムに点灯させる方法

  • URLをコピーしました!

※本ページはアフィリエイト広告を利用しています

WS2812Bは、個々に制御可能なRGB LEDで、マイクロコントローラを使用して様々な色やアニメーションを作成することができます。

統合制御回路を内蔵し、シリアルプロトコルを用いて多数のLEDを繋げて制御することができるため、様々な光に関連するプロジェクトにおいて非常に利用価値が高いコンポーネントです。

この記事でわかること
  • WS2812Bの概要
  • WS2812B LEDパネルを点灯させるのに必要なアイテムと入手方法
  • WS2812B LEDパネルを制御するためのPythonコード
目次

WS2812Bとは

WS2812Bは、統合された制御回路とRGBチップを1つの5050コンポーネントパッケージに内蔵したLEDです。

各LEDは、独自の24ビットカラー値(8ビット赤、8ビット緑、8ビット青)を持ち、デイジーチェーン接続が可能です。

データはシリアルプロトコルで伝送され、1つのデータ線を通じて多数のLEDを制御することが可能です。

この特性により、WS2812Bは、色々な色やアニメーションパターンを生成するプロジェクトにおいて、非常に人気があります。

ArduinoやRaspberry Piなどのマイクロコントローラを使って、簡単にプログラムして制御することができます。

使用するLEDパネル

LEDパネル

今回はBTF-LIGHTINGというメーカーの8×8LEDパネルを使用します。

BTF-LIGHTINGのLEDパネルはAmazonで販売されています。

電源コネクタ

今回使用する8×8LEDパネルは、LEDの数が多いため、全LEDを最大光量で点灯させると4Aの電流が必要となりますので、Raspberry Pi から供給することができません。

ですので別途LED用の電源を用意する必要があります。

今回は別の電源アダプターから、変換コネクタを介して基板に接続します。

LitaElekの変換コネクタはAmazon等で販売されています。

Raspberry Pi との接続方法

LEDパネルの表面は64個のLEDパネルが並んでいます。Raspberry Pi や電源を接続する配線は、パネル裏面にあります。

こちらがLEDパネル裏面の写真です。

一番上の5VGNDDOUTはRaspberry Pi へ接続します。

中断の5VGNDは電源へ接続します。

下段の5VGNDDOUTはLEDパネルを複数使用する場合に、次のLEDパネルとの接続に使用します。(今回は単体での使用であるため、この端子は使用せず)

プログラムの実行環境

MicroPythonの開発環境

Raspberry Pi Pico、Raspberry Pi Pico Wで動作するMicroPythonのプログラムを開発する環境として、Thonnyを使用します。

Thonnyを使用することで、コーディングからファイルの転送、Raspberry Pi Picoでの実行を全てツール内で行うことが可能です。

Thonnyのインストールから使用方法までを、以下の記事で解説しています。

作成したPythonコード

このコードは、Raspberry Pi Pico Wを使用して8×8 LEDパネル(WS2812B)を制御し、各LEDをランダムな色で点灯させます。

コード解説

  1. LEDパネルの設定:
    • n = 64で8×8 LEDパネルにあるLEDの数を定義しています。
    • pin = Pin(0, Pin.OUT)でRaspberry Pi Pico WのPin 0を出力モードで設定しています。
    • np = neopixel.NeoPixel(pin, n)でneopixelオブジェクトを作成し、LEDパネルを制御する準備をしています。
  2. ランダムにLEDを点灯させる関数の定義:
    • random_lights関数を定義しています。この関数は、各LEDにランダムな色を設定し、LEDパネルを更新します。
    • for i in range(n):ループで、すべてのLED(0から63まで)に対して処理を行います。
    • np[i] = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))で各LEDにランダムなRGB値を設定しています。
    • np.write()でLEDパネルに色の変更を書き込み、time.sleep(1)で1秒間の一時停止を行っています。
  3. 無限ループでLEDをランダムに点灯:
    • while True:ループでrandom_lights関数を呼び出し、LEDをランダムに点灯させ続けています。これにより、LEDパネルは1秒ごとにランダムな色パターンで点灯し続けます。

作成した全体のソースコード

import time
import random
from machine import Pin
import neopixel

# LEDパネルの設定
n = 64  # 8x8 LEDパネルなので64個のLED
pin = Pin(0, Pin.OUT)  # Raspberry Pi Pico WのPin 0を使用
np = neopixel.NeoPixel(pin, n)

# LEDをランダムに点灯させる関数
def random_lights():
    for i in range(n):
        np[i] = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
    np.write()
    time.sleep(1)

# 無限ループでLEDをランダムに点灯
while True:
    random_lights()

実行結果

先ほどのプログラムを実行した結果、以下のようにLEDパネルをランダムに点灯させることができました。

組込みソフトウェアの知識を仕事に活かすには

趣味でマイコンのプログラムを書いてるから、仕事でも活かしたいなあ。
でも自信が無い…

そんな時は、一度スクールで体系的に基礎を学ぶといいよ。

趣味のプログラミングスキルを活かしたいけど、「実務レベルで通用するか不安」という方には、プログラミングスクールを受講してみるのがおすすめです。

プログラミングスクールのカリキュラムは、企業の研修などでも利用されており、実践的で即戦力となるスキルを習得することが可能です。

Winスクールでは、Web系や機械学習、データサイエンスなどに加え、プログラミングスクールでは珍しいハードウェアを扱うC言語組み込みシステムやハードウェアとクラウドを連携させたIoTシステムの講座が非常に充実しています。

授業内容も受講者に対して組み込み用マイコンボードRaspberry Piを用意し、実機を使いながら学べる本格的なカリキュラムが用意されています。

また、受講者のスケジュールやロケーションに応じて、対面授業オンライン授業を選択、もしくは組み合わせて受講できるため、プログラミング初心者の方でも安心です。

家電自動車業界などへの転職を目指したい方に非常におすすめです。

また近年、クラウドソーシングのプラットフォームにも、マイコンボードを使った組み込みソフトウェアの開発案件も多く募集されており、副業でマイコンのソフトウェア開発を行う方も増えています。

クラウドワークスなどで「Raspberry Pi」と検索すると、開発解説記事作成などの案件が出てくるよ。

スクールで基礎をしっかり押さえておけば、安心して案件に応募できるね。

 プログラミング言語Python, C, C#, Java, JavaScript(React.js), Ruby, PHP, 他
 授業形式対面&オンラインが選択可能
 学習期間90分×40回(60時間)(C言語&組込みシステム開発(マイコンボード)コースの例)
 費用353,100円~(C言語&組込みシステム開発(マイコンボード)コース例)
 補助金、給付金一部の講座が教育訓練給付制度対象
 転職支援個別の就職カウンセリング、無料の就職支援セミナー
 実績・信頼性年間17,000人以上の受講者、年間1,484社の企業研修実績

\ Winスクール公式サイトを見てみる! /

まとめ

WS2812Bは、その独特な機能と利便性により、色彩豊かな照明プロジェクトやアニメーションを作成する際に優れた選択肢となります。

ArduinoやRaspberry Piなどのマイクロコントローラと組み合わせることで、さまざまな色やアニメーションパターンを簡単にプログラムし、制御することが可能であり、これによりWS2812Bはクリエイティブなプロジェクトにおいて幅広く利用されています。

8×8 LEDパネルとRaspberry Pi Pico WはAmazon等で購入可能です。

ノーブランド品
¥2,190 (2023/12/03 15:26時点 | Amazon調べ)
\楽天ポイント5倍セール!/
楽天市場
\ポイント5%還元!/
Yahooショッピング

それでは、また次の記事でお会いしましょう。

日経BP
¥3,520 (2023/10/11 11:19時点 | Amazon調べ)
\楽天ポイント5倍セール!/
楽天市場
\ポイント5%還元!/
Yahooショッピング

参考

よかったらシェアしてね!
  • URLをコピーしました!
目次