ロボカーのLEDを光らせる


LED(エル イー ディー)は低い電力で効率的に発光させることができる半導体です。

接続する際には、プラスとマイナスの極性があるので注意が必要です。

micro:bitの電源3.3Vで光らせることができます。

 

Tiny:bitにはプログラムで光らせることができるフルカラーLEDが4個搭載されています。

 

今回の実習では車体前側にある大型のLED(ヘッドライト)を点灯させます。

 

普通のLEDは端子が2本ですが、フルカラーLEDなので端子は4本あります。

 


 

フルカラーLEDは、内部で光の三原色(RGB:赤緑青)を個別に光らせて色を合成しています。

 

左図はWiKiペディアのRGB記事から引用

 

赤緑青全てを点灯すると白色になります。

緑と青を点灯するとシアンになります。

混ぜ合わせる割合を変えることで多くの色を表現することができます。

 

普通の液晶テレビ画面を虫眼鏡で覗くと、この3原色の発光素子で作られていることが確認できます。

 


 

Tiny:bitでヘッドライトを思った色で発光させるのは非常に簡単です。

 

「Tiny:bit」ブロックから「ヘッドライト色 消」を

「最初だけ」ブロックへドラッグアンドドロップ(D&D)します。

 

好きな色に変更してください。

 

 

 

Tiny:bitとPCをUSBケーブルで結び、

ブラウザ左下にある「ダウンロード」をクリックすると、Tiny:bit(micro:bit)へプログラムが転送されます。

 

転送が終わると自動的にプログラムが起動され、ヘッドライトが点灯します。

 

消灯命令を書いていないので、ずっと点灯したままです。


今度はこのヘッドライトを赤色で点滅させます。

点滅は、次の「手順書」に従って動作させることで実現させます。

 

1 プログラム開始

   ↓

 

 ライトを赤色に点灯

   ↓

3 しばらく点灯状態を継続する(※)

   ↓

4 ライトを消灯する

   ↓

5 しばらく消灯状態を継続する(※)

   ↓

  へ戻る

 

※3と5が無いと、すぐに次のステップへ進んでしまうため、発光する様子は肉眼で確認できなくなってしまいます。

 リアルタイムで動くマイコンのプログラムでは、3と5の「時間待ち」は重要な要素になります。

 ブロック表記は「一時停止」と少し妙な日本語ですが我慢してください。

 内部的には「この行で指定された時間だけ何もせず待っている」という動作になります。

 

次は「Aボタンが押されたら4回赤色で点滅する」という実習を行います。

 

 

 

「入力」群から

「Aボタンが押されたとき」をドラッグ&ドロップ

します。

 

「Tinybit」群から「ヘッドライト 色 消」ブロックを

「Aボタンが押されたとき」ブロックへ組み込みます。

 

 

 

 

①「基本」群から

②「一時停止 (ミリ秒)100」をドラッグし

「ヘッドライト 色 消」

の下に組み込みます。

 

 ※「ミリ秒」は後述します。

 

「ヘッドライト 色  消」ブロックの上で

マウスを右クリックし

表示されたメニューから「複製する」をクリック

します。

 

複製されたブロックをドラッグし

「一時停止 (ミリ秒)100」の下に組み込みます。

 

 

同様に、「一時停止(ミリ秒) 100」を複製し

2つ目の「ヘッドライト色」の下側に組み込みます。

 

 

各ブロックの下向き三角(▽)をクリックし、

 

1個目のヘッドライト色を「赤」に

一時停止2つとも数値を「500」に

 

それぞれ変更します。

 

先の「手順書」の2~5をプログラミングしたことになります。

 

※1秒は1000ms(ミリセカンド)です。

 500ms は 0.5秒

 

micro:bitへ転送して実行してみましょう。

一回点滅しただけですね・・・

 

 

【ミリ秒(時間)について】

 

 ここまでの例で「一時停止(ミリ秒)500」といったブロックを使ってきました。

 このミリ秒について簡単に説明します。

 

 1時間:60分

 1分:60秒

 1秒:1000ms(ミリ秒) ・・・ 1秒の千分の一

 1ms:1000μs(マイクロ秒)・・ 1秒の1000 x 1000=100万分の1秒 マイコンの内部で扱う時間の単位

 1μs:1ns(ナノ秒)・・・ 更に千分の一 1秒の1000 x 1000 x 1000分の1秒

 

 micro:bitのブロックエディタで制御できるのは実質的には100ms程度までです。

 micro:bitが簡単に扱える分、細かな制御はできない仕組みになっています。

 

4回点滅するには4倍のステップを書くことになります。

左がそのプログラム例です。

 

でも、同じ記述が何度も繰り返されて、長くて読みにくいです。

 

これを解決するために

ブロック「ループ

という便利な仕組みが用意されています。

 

コンピュータの特性「繰り返し」を実現している仕組みの一つです。

 

ブロック群の「ループ」から「繰り返し4回」をドラッグして

「ボタン A・・・」囲みの一番上に組み込みます。

 

 

「ヘッドライト 色 赤」以下4つのブロックをまとめてドラッグし

ブロック群から引き剥がし

「繰り返し 4 回」の囲みの中へ移動

します。

 

 

 

点滅を4回繰り返すプログラムができました。

 

ボタンAが押されたとき

  以下を4回繰り返す

    赤に点灯して

    0.5秒待つ

    消灯して

    0.5秒待つ

  繰り返しはここまで

 ボタンA押下処理はここまで

 

という意味です。

 

ロボカーへプログラム転送して動作を確認してみましょう!

 

ちなみに、こういうプログラムをマイコン界隈では「Lチカ」(エルチカ)と呼んでいます。(LEDチカチカの略)

 

 

実習を応用してみましょう。

例えば、

 

・点滅する速さを変えるにはどうしたらいい?

 

・点滅させる回数を変えてみましょう。

 

・色んな色で点滅させてみましょう。

 

・光の三原色の割合を変えるといろんな色が出せます。

 

など。

 

 

ーーー この実習は終わりです ーーー

 

 

ーーー ちょっと寄り道 ーーー

 

チカチカでは終わりませんよ!

LEDの光り方をグラフにしてみました。

コンピュータの内部で信号をやり取りしていますが、まさにこういう電圧のON/OFFで互いに連携して動いているのです。

 

また、この信号を他のコンピュータに光の点滅で伝えたら、光通信です。(ほんと)

実際に市内のビル間でレーザーを使ったビル間通信設備を付けている例もありますし、広電宇品線が本通りを二分していますが、その間をレーザー通信で結んでいました。(現時点不明)

 

この上の画像に青色の四角が2個書いてあります。

これはモールス信号と考えることも出来ます。

和文モールス符号で読めば「イ」です。

ちなみに「イ」は「・ー」で「伊藤」と覚えていたそうです。

「ロ」は「・ー・ー(路上歩行)」「ハ」は「ー・・・(ハーモニカ)」(大日本帝国海軍の生き残りから聞いた。)


micro:bitのLEDは光らせることもできますが、実は明るさを調べる機能があります。
ということは、2枚のmicro:bit間で光通信ができるはずです。
Tiny:bitの基盤下側には赤外線通信用のLEDも付いていますし、先頭には赤外線リモコン受光部も入っています。

 

赤外線発光LEDや受光部は数十円で売られているので、簡単な光通信を実験することも出来ますよ!
ダイソーで売られている赤外線リモコン調光器(300円)を分解して取り出すことも可能です。


以下の動画はこの「LED点灯」テキストのPC操作を録画したものですが、編集されていません。

2024年7月までには編集しYoutubeへアップしますが、それまではこれで勘弁してください。

 1 単純点灯
 2 ヘッドライト点滅
 3 (ブラウザとmicro:bitの接続設定から書き込みまでの一連動画)

 


参考記事

車体後部LEDを光らせる場合は、

「Neopixcel」群から

①「(Strip)を赤色に点灯する」を組み込み、

更にその下に

②「(Strip)を設定した色に点灯する」

を入れます。

 

 

※NeoPixcelブロックの日本語がおかしいのですが無視してください。

 ①は本来「(Strip)を赤色に設定する」のハズです。

「Strip」とは細長い形状の物体(布切れなど)= LEDテープを意味しているようです。😆

 

 

「Strip」が入っている場所へ

「Tiny:bit」群から

「フルカラーLED」をドラッグ&ドロップします。

 

これで後部LED2個が赤色に点灯します。


 コンピュータは、命令を与えると  ”ずっと同じ状態を維持する ように作られています。

これは「記憶」機能の一種です。

例えば「照明を点けなさい」と言われたら、ずっと「つけっぱなし」にする、そんな機能です。

今回実習した「LEDの点灯」も同じです。

  「点灯」を命令すれば、ずっと点灯しっぱなし

  「消灯」を命令すれば、ずっと消灯しっぱなし
になります。

(micro:bitの端子に直接LEDをつなぐ点灯実験(別記事)で確認することができます。)

(プログラムがLEDを光らせるために基盤上のピンに3.3Vの電圧をかけ続けている。)

そういう物だと理解してください。本来的に気がきかないモノなのです。

 

「ア◯クサ、電気を点けて」だけで済むのは、裏でア◯クサ・プログラムがご主人さまのためにバタバタ作業を代行していて、人がどこに居るからどの電灯を点けるのかを判断し点灯、居なくなったら気を利かせて消灯しているのです。

最近のコンピュータが使いやすいのは、裏でプログラムを作っている人たちが必死で努力した結果なんです。