こんにちは!宗村です。 71回目の神楽坂プログラミング教室は「micro:bitで7セグメントLEDを使ってみよう!」というタイトルで実施しました。
7セグメントLEDとは、数字の形の光を作るためのLEDです。デジタルの時計や自動販売機の料金の表示などでよく見かけますね。

数字の形を作るために7つのLEDを使っています。一桁の数字を表現するために7本の出力端子をつかって光らせることになります。つまり単純に考えると、2桁表示では14本、3桁表示では21本必要です。micro:bitにそんなに多くの端子がないので、それをどうやって解決するかというのが今回のメインテーマです。
小学生向けとしてはちょっとマニアックな内容ではあるのですが、いつもとちょっと違った体験ができるかなと思って挑戦してみました。
むずかしい話ではあるので、少しずつ順を追って説明ができるように専用のキットを作りました。

まず最初のステップとして、micro:bitでLEDを光らせる方法を学びます。

1つ光らせられるようになったら、後は簡単。複数のLEDを光らせて、模様を作ったりすることに挑戦です。

次にいよいよ7セグメントLEDの登場です。通常のLEDから7セグメントLEDに交換して、同じように光らせます。光らせ方は同じですが、今度は数字の形を作るための発光パターンを考える必要があります。数字の形をよく見て、どのLEDを光らせればいいかを考えながらプログラムを作っていきます。


この実験セットではmicro:bitの端子を10本使えるようにしてありますが、この時点で7本の端子を使ってしまっています。 無事7セグメントLEDで数字を作れるようになった子の中からとてもうれしい声が。
- 「あれ! 2桁つなぎたくなったらどうすればいいの? このままだとたりないよ」
素晴らしいですね。今日体験してもらいたい本質を見事に指摘してくれました。

そこで、7セグメントLEDを光らせるための専用の部品があることを紹介します。この部品を使うと7本ではなく、4本の線で数字の形を作れるようになります。


この部品を使うにあたって、「真理値表」という表を紹介しました。

ちょっと難しいかなと心配だったのですが、ある程度説明を進めて行くと
- 「あ、そうか。 1で光るから、この組み合わせが数字の形を作っているんだ」
- 「入力の4つは2進数の並びになってるんだ! ってことは2進数で7セグメントLEDの数字の番号がつくれるんだ!」
と声が上がったのですが、このコメントをしてくれたのが小学2年生の子だったのでちょっとびっくりしてしまいました。 さすがに、2進数についてまで指摘されるとは思ってませんでした。最近の小学生ってすっごい。
ひとまず、これで2桁までなら接続できることを確認したうえで、「今日は4桁まで表示するよ」と伝えると、
- 「それは無理じゃない!?」
- 「このままじゃ端子足りないよ!!」
すっごくいいお客さんですね。めちゃくちゃやりやすい。
そこからさらに数ステップの説明を経て、最終的に少ない端子の数で4桁の数字を表示する方法を体験します。その間にもいくつかポイントを用意していたのですが、そのたびに適切なつっこみを入れてくれて本当に実験が進めやすい回でした。(参加者の力によるところが大きいですね)

ここまでたくさんの配線を入れ替えたりとなかなか大変な作業を経て無事に4桁の表示に成功しました。
さすがにこのままだと使い勝手が悪いので、この実験セットを一まとめにした基板を用意しました。

これまで実験で使い方を学んだ部品がそのまま搭載されているので、全く何をしているかわからない基板ではなくて、働きがわかる基板としてみてもらえたようでした。
- 「おー ここにトランジスタがある!」
- 「ICが2つあるね」
- 「抵抗はここにあるのか」
- 「実験セットはこんなに大きかったのに、こんなに小さく収まるんだ」
と、今までの部品がどう配置してあるのか興味を持ってくれたようでした。
基板の様子を確認してもらったら、最後にケースに入れて使いやすくします。

さて、今日の本題はこれで達成できましたが、せっかく数字を表示できるようになったので、実用的に使ってみましょう。 超音波センサーを使って、距離を表示してみます。

余った時間は自由に作品作りに挑戦です。時間を表示したり、超音波センサーを使って、目をつぶって歩けるかに挑戦してみたり、周りのうるささを調べる装置を作ってみたり、温度計にしてみたり、それぞれいろいろな使い方に挑戦してくれていました。
今回は、身の回りで見かける7セグメントLEDが実はこんな風に動いているんだよというのを体験してもらう会でした。 それのおまけで「専用のICの使い方(真理値表の読み方)」「トランジスターという部品の存在」「micro:bitの端子が足りないときにはこんな方法もある」というちょっとした学習要素もちりばめた内容でした。
途中で、真理値表から「2進数の並びになっていること」「出力のパターンが7セグメントLEDの数字の形になっていること」を指摘してくれる子がいましたが、そもそもこういう部品があることも、真理値表という存在も全く知らなかったとの事でした。個人的にはこういう自分の中の知識同士がくっついて、ひらめいたりする瞬間ってとても大事だし、なにより気持ちがよい勉強の醍醐味じゃないかなと考えているので、ちょっとでもそんな機会になったのであればやってよかったなと思いました。
それでは、また次回の神楽坂プログラミングのご参加お待ちしております。