micro:bitによるプログラミング（3）担当：稲川孝司（帝塚山学院大学）
実習内容➢ NeoPixelによるフルカラーLEDの制御

引用・参考文献
高橋参吉、喜家村奨、稲川孝司：micro:bitで学ぶプログラミング
ブロック型からJavaScriptそしてPythonへ、コロナ社（2019.9）

1

NeoPixelとは◼NeoPixelは、１つのセル毎にRGBの３つのLEDとその制御回路が入っており、シリアル通信でRGBの値を送ることで、簡単に多くのLEDをフルカラーで光らせることができるLEDの集合体です。RGBそれぞれを256段階に調整でき、256*256*256=16777216色で光ります。
◼今回は、8個のLEDがStrip型に接続された製品を使って、様々な色で光らせる実習を行います。

◼micro:bitとNeopixelがなくても、ブラウザのみで実習は可能です。
その場合、最後のmicro:bitに書き込む作業は不要です。

2

Micro:bitとNeoPixelの接続
Micro:bitとNeoPixelを右図のように接続します。
黄色はP0,赤は３V,黒はGND

3

シミュレータについてNeoPixelライブラリを追加し、プログラムを作成すると、シミュレータ画面に自動的にNeoPixelが表示されます。
4

【準備】NeoPixelライブラリーの入手
1)

ブラウザでhttps://makecode.microbit.org サイトに行く。

2) 新しいプロジェクト⇒名前を「rei3-1」と入力し、作成ボタンをクリックする。
3) ツールボックスの一番下の「高度なブロック」⇒「＋拡張機能」⇒「neopixel」の写真をクリックする。
4) ツールボックス内に、水色のNeopixelのブロック群が追加される。

5

【例題3-1】NeoPixelを光らせてみよう。(ファイル名:rei3-1）＜手順＞
1) 新しいプロジェクト⇒名前を「rei3-1」と入力し、作成ボタンをクリックする。
2)「最初だけ」ブロックの中に「変数をNeoPixelモードにする」を追加する。
3) NeoPixelを接続している端子はP0なので、P0であることを確認する。
4) NeoPixelの数は８個なので、ブロック内の24を８に変更する。
5) 「Neopixel」ブロックから「赤色に点灯する」ブロックを「最初だけ」に追加する
6) 作成したプログラムをmicro:bitに書き込み、赤色で点灯することを確認する。

24を８に変更
ここをクリックして、好きな色に変えることができる

6

【例題3-2】LEDを好きな色で100ミリ秒ごとに点滅させてみよう。
（ファイル名:rei3-2）＜手順＞
1) ファイル名を「rei3-2」と入力する。
2) 「最初だけ」ブロックの中に「変数をNeoPixelモードにする」ブロックを追加する
3) NeoPixelを接続している端子はP0なので、P0であることを確認する。
4) NeoPixelの数は8個なので、ブロック内の24を8に変更する。
---------------------------------------------------5) 「ずっと」ブロックの中に「赤色に点灯する」ブロックを追加する。
6) 基本から「一時停止（ミリ秒）100」ブロックを追加する
7) 「赤色に点灯する」ブロックを追加し、消灯するために色をblackに変更する。
8) 再度、基本から「一時停止（ミリ秒）100」ブロックを追加する
9) 作成したプログラムをmicro:bitに書き込みます。

7

【例題3-2】（ファイル名:rei3-2）

Neopixelのその他ブロックからRGB(赤255、緑255、青255）ブロックを選ぶと、RGBそれぞれを256段階に変えて表示させることができる。

8

光の3原色 R(赤） G(緑) B(青)赤緑
青256色× 256色× 256色
＝16777216色≒1677万色

10進数⇔16進数
０～２５５ ⇔ ００～FF9原色大辞典 https://www.colordic.org/

16進数表示10micro:bitでの16進数から10進数への自動変換】(例)
16進数であることを示
す０ｘを先頭につける

０ｘ８７

０ｘｃｅ０ｘｅｂ
自動的に10進数になる11【コラム：LEDの番号の割り当てについて】
NeoPixelは、順番にLEDを点灯させるために、それぞれに番号が割り当てられています。
8個のバー型の場合は、右図のように、信号線に近いほうから順に０から7が割り当てられます。
個別に色を設定して点灯する方法は、で番号を指定し、ｎ番目のLEDを好きな色で点灯させることができます。
また、

０１
２３４５６で、点灯しているLEDを下にずらすことができます。

７12【例題3-3】8個のLEDを個別に好きな色に指定して、点灯させてみよう。
（ファイル名:rei3-3）＜手順＞
1) ファイル名を「rei3-3」と入力する。
2) 「最初だけ」ブロックの中に「変数をNeoPixelモードにする」ブロックを追加する。
3) 今回のNeoPixelの数は8個なので、ブロック内の24を8に変更する。
----------------------------------4)「ずっと」ブロックの中に、NeoPixelの「その他」ブロックから「stripの０番目のLEDを赤色に設定する」ブロックを追加する。
5)「設定」ブロックを右クリックして複製し、計8個の「設定」ブロックを作成。
6) 設定する番号を０から7の順に変更し、色はすきな色に変更する。
7)「stripを設定した色で点灯する」ブロックを追加する。
8) 作成したプログラムをmicro:bitに書き込みます。
13【例3-3】（rei3-3）

ブロックの1個目をコピーして、貼り付け、色を変える14

【例題3-4】「1個分ずらす」ブロックを使って、点灯した緑のLEDを上から下へ移動させてみよう。 （ファイル名: rei3-4）＜手順＞
１）ファイル名を「rei3-4」と入力します。
２）「最初だけ」中に「変数をNeoPixelモードにする」ブロックを追加する。
３）今回のNeoPixelの数は8個なので、ブロック内の24を8に変更します。
------------------------------------４）「ずっと」の中に、NeoPixelの「その他」ブロックから「０番目のLEDの色を設定する」ブロックを追加する。
５）ループから「くりかえし」ブロックを入れ、回数を8回に設定します。
６）「くりかえし」の中に、NeoPixelから「指定した色で点灯する」ブロックを追加する。
７）さらに、基本から「一時停止(ミリ秒)100」ブロックを追加する。
８）そのブロックの下に、NeoPixelから「色をLED1個分ずらす」ブロックを追加する。
９）作成したプログラムをmicro:bitに書き込みます。
15

【例題3-4】（rei3-4）

０１２３４５６７16

【例題3-5】１つだけLEDを点灯させて、上移動させてみよう。(rei3-5)(7番目から順に０番目までの点灯するために、例題3-4の次の2か所を修正します。
※最初だけブロックは例題3-4と同じなので省略している。）

変更箇所

０１２３４５６７17

【コラム：加速度センサについて】
micro:bitには、3次元の加速度センサが搭載されており、図のようにx,y,zの３方向の加速度を計測することができます。

地上では下向きの重力加速度があるので、それを計測してmicro:bitを3次元的に動かすだけで値を変化させることができます。
また、動きや振動、衝撃なども検知することができます。

Z軸
Y軸

X軸

18【例題3-6】micro:bitを傾けて、搭載されている加速度センサから３つの値を読み込んでRGBの3つの色に対応したLEDを点灯させ、micro:bitを動かして色を変えてみよう。
（ファイル名:rei3-6）＜手順＞
1) 「最初だけ」ブロックの中に「変数をNeoPixelモードにする」ブロックを追加する。
------------------------------------2) ずっとブロックの中に、NeoPixelのその他から「stripの０番目を赤色にする」ブロックを追加する。
3) 赤の部分を、NeoPixelのその他の「RGB(赤255、緑255、青255)」に置き換える。
4) 数値の255の部分を加速度X、加速度Y,加速度Zに置き換える。
5) Neopixelから「Stripを指定した色で点灯する」ブロックを追加する。
6) 基本から一時停止(ミリ秒）100を追加する。
7) NeoPixelから「stripに設定されている色を1個分ずらす」ブロックを追加する。
8) 作成したプログラムをmicro:bitに書き込みます。
19

【例題3-6】（ファイル名:rei3-6）

Z軸

Y軸

X軸
20

【例題3-7】 虹色で光らせてみよう。
NeoPixelのライブラリの中に「レインボーパターンで点灯する」という命令があり、それを使うと、虹色で光らせることができます。
（ファイル名:rei3-7）＜手順＞
1) 「最初だけ」ブロックの中に、「変数をNeoPixelモードにする」ブロックを追加する。
2) 今回のNeoPixelの数は8個なので、ブロック内の24を8に変更する。
3) 次に「Stripをレインボーパターンに点灯する」ブロックを追加する。
4) 作成したプログラムをmicro:bitに書き込みます。

21

【例題3-8】レインボーパターンで下移動させよう。
例題3-7ではレインボーパターンの色が固定されていたので、「ずっと」ブロックの中に「1個分ずらす」ブロックを追加して、色が順番に下移動するようにしてみよう。（ファイル名:rei3-8）＜手順＞
1) 「最初だけ」のブロックは、例題3-7をそのまま使います。
2) 「ずっと」ブロックの中に、Neopixelから「LED1個分ずらす（ひとまわり）」ブロックと「設定した色で点灯する」ブロックを追加する。
3) 基本から「一時停止（ミリ秒）100」ブロックを追加する。
4)作成したプログラムをmicro:bitに書き込みます。

22

【例題3-9】レインボーパターンで上移動させよう。
例題3-8ではレインボーパターンで下移動したので、ここでは上移動するようにしてみよう。
（ファイル名:rei3-9）＜手順＞
1) ブロックは、例題3-8を基本的にそのまま使います。
2) 「ずっと」ブロックの中の「LED１個分ずらす（ひとまわり）」を「-1個分ずらす」に変更します。

変更箇所

23

【例題3-10】２つのNeopixelを使って、レインボーパターンで、1つは下移動、もう1つは上移動で点灯させてみよう。（ファイル名:rei3-10）（1つ目はP0端子、2つ目はP1端子に接続するものとする）＜手順１＞
最初だけのブロックは,下の図のように2つの変数を使って、ブロックを作成する

24

＜手順２＞
右図のように２つのNeopixelが表示されるので、ずっとブロックの中に、1つは下移動を、もう1つは上移動を設定する。
（ファイル名:rei3-10）

25

プログラムのダウンロードについて＜プログラムに対する注意事項＞
本テキストで利用している例題プログラムなどは、NPO法人学習開発研究所の下記のWebサイトからダウンロードしてください。

本書の中で記載しているJavaScriptのファイル名、例えば、rei○○は、保存ファイル名
では、microbit-rei○○.hex、 になっています。
https://www.u-manabi.net/microbit/kensyu/

26