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色で光ります。
今回は、12個のLEDがRING型に接続された製品を使って、様々な色で光らせる実習を行います。
2

【準備１】Micro:bitとNeoPixelの接続
Micro:bitとリング型NeoPixelを右図のように接続する。
（黒色はGND、赤色は３V、黄色はP0）3

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

ブラウザで

https://makecode.microbit.org サイトに行く。

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

4

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

24を12に変更
ここをクリックすると、好きな色に変えることができる

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

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

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

7

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

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

916進数であることを示
す０ｘを先頭につける

０ｘ８７

０ｘｃｅ

０ｘｅｂ
自動的に10進数になる

10【コラム：LEDの番号の割り当てについて】
NeoPixelは、順番にLEDを点灯させるためにそれぞれに番号が割り当てられている。
12個のリング型の場合は、右図のように信号線に近いほうから時計回りに順に０から11が割り当てられている。
個別に色を設定して点灯する方法は、で番号を指定し、ｎ番目のLEDを好きな色で点灯させることができる。また、で、点灯しているLEDを次にずらすことができる。
11

【例題3-3】12個のLEDを個別に好きな色に指定して、点滅させてみよう。
（ファイル名:rei3-3）＜手順＞
1) ファイル名を「rei3-3」と入力する。
2) 「最初だけ」ブロックの中に「変数をNeoPixelモードにする」ブロックをいれる。
3) 今回のNeoPixelの数は12個なので、ブロック内の24を12に変更する。
----------------------------------4)「ずっと」ブロックの中に、NeoPixelの「その他」ブロックから「stripの０番目のLEDを赤色に設定する」ブロックをいれる。
5)「設定」ブロックを右クリックして複製し、計12個の「設定」ブロックを作成。
6) 設定する番号を０から11の順に変更し、色はすきな色に変更する。
7)「stripを設定した色で点灯する」ブロックと「一時停止(ミリ秒)200」ブロックをいれる。
8)「stripをblack色で点灯する」ブロックと「一時停止(ミリ秒)200」ブロックをいれる。
12

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

複製する

13

【例題3-4】「1個分ずらす」ブロックを使って、点灯した緑のLEDを右回転させてみよう。
（ファイル名:rei3-4）＜手順＞
１）ファイル名を「rei3-4」と入力する。
２）「最初だけ」ブロックの中に「変数をNeoPixelモードにする」ブロックをいれる------------------------------------３）「ずっと」ブロックの中に、NeoPixelの「その他」ブロックから「０番目のLEDの色を設定する」ブロックをいれる。
４）ループから「くりかえし」ブロックを入れ、回数を12回に設定する。
５）「くりかえし」ブロックの中に、NeoPixelから「指定した色で点灯する」ブロックをいれる。
６）さらに、基本から「一時停止(ミリ秒)50」ブロックをいれる。
７）そのブロックの下に、NeoPixelから「色をLED1個分ずらす」ブロックをいれる。
14

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

【例題3-4別解】（演習課題１） 「ループ」からの繰り返しのブロックと変数を使って、例題3-4と同じ動きをするプログラムを作成してみよう。
（ファイル名:rei3-4b）※最初だけブロックは省略している16

【例題3-5】１つだけLEDを点灯させて、左回転させてみよう。
(ファイル名:rei3-5)(※例題3-4において、11番目から０番目が点灯するように、次の2か所を修正すればよい。) ※最初だけブロックは省略している

変更箇所

17

【例題3-5別解】（演習課題２）例題3-4別解を利用して、左回転させるために、0➡11ではなく、11➡０の順に点灯させるように、繰り返しブロックの変数を工夫してみよう。
(ファイル名:rei3-5b) ※最初だけブロックは省略している

変更箇所

18

【コラム：加速度センサについて】
micro:bitには、加速度センサが搭載されており、図のようにx,y,zの３方向の加速度を計測することができます。
地上では下向きの重力加速度があるので、それを計測してmicro:bitを3次元的に動かすだけで値を変化させることができます。
また、動きや振動、衝撃なども検知することができます。

Z軸

Y軸

X軸

19【例題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個分ずらす」ブロックを入れる。
20

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

Z軸

Y軸

X軸
21

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

22

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

23

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

変更箇所

24

プログラムのダウンロードについて＜プログラムに対する注意事項＞
本テキストで利用している例題プログラムなどは、NPO法人学習開発研究所の下記のWebサイトからダウンロードしてください。
本書の中で記載しているJavaScriptのファイル名、例えば、rei○○は、保存ファイル名
では、microbit-rei○○.hex、 になっています。
http://www.u-manabi.org/microbit/

25