記事担当:
ハンダ付け不要-マイコン系


みなさんこんにちは。

アットホームなカフェが近い会社でおなじみの共立電子産業です。


あ、会社もアットホームですよ(笑)


…そんな会社から送る今回のブログの記事ですが、当社のネット通販サイト「エレショップ」では電子部品だけでなく、プラモデルのように組み立てられる工作キットや小中学生向けの小型コンピューター等の製品もそろっています。

そして昨今の半導体不足等の事情にもれず、小型コンピューターの中にはラズパイに代表されるように品薄状態のものが多い中、このブログ執筆段階ではエレショップのmicro:bitの在庫は多い状況なので、現時点では比較的手に入りやすくなっています。

…ということで、今回は低価格かつ初心者向けにピッタリの小型コンピューター「micro:bit」を用いたプログラミングの解説をしていこうと思います。

目次

はじめに

当記事では、micro:bitでプログラミング環境を導入できるまでの方法の解説は行っておりません。
micro:bitの公式サイトも含め、それらの解説はネット上に多く存在しているので、micro:bitでプログラミングを開始できるようになるまでの方法についてはそれらを参考にしてください。

今回使用するmicro:bit

micro:bitにはいくつかの機能やセンサーが内蔵されていて、ver.2からはさらにセンサー等が追加されています。
それらの機能を用いて実用的なツールをプログラミングしていこうと思います。

今回は、micro:bit V2.2ファーストトライセットの単四電池のものを使っています。

microbit_set

こちらの商品はセットの中にmicro:bit本体だけでなく、micro:bitを保護するカバーやパソコンと接続するためのUSBケーブル、micro:bitを動かすための電源となる電池ボックスと単四電池が一緒になっているので、これだけで外に持ち歩いて使えるツールを構築できます。

夜に持ち歩いている時だけ光るライトを作る

冬の季節になって、日が暮れるのもすっかり早くなりました。
夕方には暗くなるため、比較的早い時間帯でも街灯が少ない場所では道行く人の姿が見えづらい場面もあったりします。

そこで、夜道を歩いている時に、たとえば背負っているリュックやズボンのベルト通し等に点滅するライトを着けて、後方からくる自動車や自転車に、ここに人が歩いていますよとアピールするような事故の予防的な使い方のできるライトをmicro:bitで作ってみようと思います。

自転車のライトで、周辺が暗くて自転車が移動している時だけ光る製品がありますが、それをmicro:bitで再現してみようというわけです。

LEDを点滅させる

夜道にライトを光らせて周りにアピールする機能を製作するので、まずは、その基本部分であるLEDを点滅させてみます。

Sample_001


上記のサンプルプログラムを実行すると、micro:bitが起動している間はすべてのLED部分が常に光ったり消えたり… つまり、ライトが点滅します。

micro:bitのLEDは縦横5列ずつ並んだ計25個あり、命令(ブロック)の中で予め用意された光り方の形(顔の表情風やハート形等)がいくつかあるのですが、すべてのLEDが光っているパターンがないので、「LED画面に表示」というLEDのパターンを自由に作れる命令を使って、すべてのLEDを光らせています。

あとは「一時停止→表示を消す→一時停止」と処理を続け、それらが常に実行され続けることでLEDが点いてしばらく待って消えてを繰り返します。

一時停止は指定した時間だけプログラムの実行が止まります。
サンプルでは「200ミリ秒」=0.2秒間となります。

「表示を消す」で、すべてのLEDの明かりが消えます。

「ずっと」の中の内容はmicro:bitが起動している間は常に実行され続けるので、上記のプログラムは一番目の命令からラストの命令まで動いた後、また一番目の命令へと戻り… と、繰り返されることでライトが点滅し続けるというわけです。

周りの明るさを測る

夜に自動でライトが点くようにしたいので、micro:bitに周りの明るさを判定してもらわないといけません。
ということで、続いて明るさを測ってみたいと思います。

Sample_002


上記のサンプルプログラムを実行すると、Aボタンを押すと数値で、Bボタンを押すと棒グラフで、それぞれのボタンを押した時の明るさの値をLED画面に表示します。

micro:bitの明るさセンサーはLEDに含まれていて、0~255の範囲で明るさを数値化しています。

実際のところ明るさセンサーの精度はそう高くないようで、試したところ明るい部屋でも照明から離れた位置では数値が「0」を示していました。

続いて、前述とは少し違った明るさセンサーのサンプル。

Sample_003


こちらのプログラムは、周りの明るさを常に棒グラフでリアルタイム表示します。

LEDの点滅のプログラムでも説明したように「ずっと」の内容は常に実行され続けるので、最初の明るさセンサーのサンプルと違って、上記サンプルは明るさセンサーの値を常に棒グラフの形でリアルタイム表示させ続けるというわけです。

明るさセンサーが組み込まれているLED部分を照明に近づけたり遠ざけたり、あと懐中電灯の光を当てたり屋外で日光にかざしたりと、色々試しながら数値や棒グラフの変化を試してみてください。

移動しているかを判定する

夜などの暗い場所にいて、かつ動いている時にライトが点灯するようにしたいので、次は移動しているかどうかを判定してみます。

micro:bitには加速度センサーが付いているので、そちらの機能を使います。

Sample_004


上記のプログラムは、micro:bitが一定以上の速さで揺れる等の動きがあるとLEDが点灯し、あまり動いていない時は消えた状態になります。

micro:bitの加速度センサーには上下・左右・前後の方向と、あとそれらすべての方向への移動を数値化した「絶対値」とがあります。

方向 説明 ニュートラルの値
x 左右の方向。
Aボタン側が左で、Bボタン側が右。
0
y 前後の方向。
bicro:bitのマークやUSB接続端子のあるほうが前、5つの穴が開いているコネクタのほうが後ろ。
0
z 上下の方向。
micro:bitのマークやLED画面があるほうが上、USB接続端子やスピーカーがあるほうが下。
0
絶対値 x,y,zすべての方向。 1023


今回は、絶対値を利用して移動しているかを判定しています。
「もし」を使い、加速度センサーの絶対値を常にチェックして値が「1200」よりも大きい場合はLEDが点灯する命令を実行するようにしています。

今回はmicro:bitをバッグやズボン等からぶら下げて動くことを想定しているので、とにかくどの方向でもいいので動き(揺れ)を感じたら反応するようにしたかった為、サンプルでは「絶対値」を利用して、あまり激しくない動きでも反応するように加速度センサーの絶対値が1200より大きい場合のみLEDが点灯するようにしています。

命令の中に「揺さぶられたとき」というものがありますが、試したところかなりしっかりと揺らされないと反応しなかったので、今回は人が歩いた時の少しの揺れを判断する為に絶対値を使い、あまり激しくない動きでも反応するように絶対値が低めの値の場合に反応するようにプログラムしています。

暗くて移動している時だけ点滅するライト

ではいよいよ、これまでに作ったサンプルプログラムの内容を踏まえて、夜の暗い場所で移動している時だけ点滅するライトのプログラムを作っていきます。

Sample_005

上記サンプルを実行するとmicro:bitがある程度暗い場所にあり、さらに一定以上揺れている状態の場合に10回、LED画面が点滅し続けます。
周りが明るいか、あまり揺れていない状態ではLEDは点灯しません。

今回は「変数」を用いて予め判定に使う明るさと加速度の基準となる値を指定しています。

変数名 内容 サンプルで
指定されている値
明値 明るさの基準となる値。
明るさセンサーの値が指定値以下の場合はLED点灯。
10
動値 加速度の基準となる値。
加速度センサーの値が指定値以下の場合はLED点灯。
1200


変数は数字や文字列を入れる容器のようなもので、作った変数に数字等を代入して用います。

今回のサンプルでは変数「明値」が明るさ、変数「動値」が加速度の判断の基準となる値として使われます。
サンプルを試す際に明るさや揺れ具合の判定を環境に合わせて変えてみたい場合は、こちらの数字(10や1200の部分)を変更してみてください。

「最初だけ」に設定されている命令は、micro:bitが起動してすぐの一回のみ実行されます。
今回の変数は、いわゆるツールの初期設定のようなものなので「最初だけ」の中で指定しています。

そして「もし」を使い、明るさが変数「明値」以下かつ加速度が変数「動値」を超える場合にLED画面を200ミリ秒間隔で10回、点滅を繰り返すようになっています。
前にも書いているように「ずっと」の中で設定されている命令は常に実行されつづけるので、上記の「もし」の内容は常に動き続け、明るさや動きを判断してLEDを点滅させたり… をし続けるというわけです。

「くりかえし」は指定されている回数分、中の命令を実行し続けます。
サンプルの「10回」の部分が繰り返す回数となり、これを用いてLED画面を10回点滅させています。

サンプルでは動作の確認がしやすいように点滅する回数を10回にしていますが、実用性を考えるともう少し回数が多いほうがいいので、「10回」部分の数字を自由に編集して、色々試してみてください。

あとは、このプログラムを書き込んだmicro:bitにカバーを取り付け、そのカバーに細工してストラップ等を取り付ければ、バッグ等に着けられる夜道で点滅してアピールしてくれるライトの完成です。

上記のサンプルまででも使えるツールとはなっていますが、例えば実際に自分以外の第三者、つまり他人に使ってもらうと考えた場合にはツールとしては不親切です。
そして、まだ不完全な部分のあるプログラムなのでサンプルのプログラムを見て試すだけでなく、さらに解析し、改造して問題点の改良する等、いろいろ試しながらプログラミングの勉強のひとつの素材として活用してもらえれば幸いです。

BBC 教育向けマイコンボード micro:bit / マイクロビット / micro:bit V2.2
microbitV2r2a
micro:bit【V2.2】 ファーストトライセット 単4電池バージョン ▲航空便不可▲ / SK-MB-SETV22AAA
SKMBSETV22AAAa


micro:bit ムーブミニ MK2 バギーキットセット ▲航空便不可▲ / KEI-KIT5652SET
KEIKIT5652SETa



(記事:糖分)
更新予定:毎週木曜日(次回は12月29日です!)