このパートでは,なでしこパッドを使ってかんたんなマイコンボードを制御してみよう!
作りながら,センサで測定する方法や,機器を制御する方法,計測・制御のしくみを覚えよう。
2022/8/28 なでしこv3.3に対応させるため,サンプルプログラムを修正しました。それに合わせて解説を修正しました。
- 「!非同期モード」と書かなくてよいことになりました(本家なでしこの仕様)。
- 「n秒待機」は「n秒待つ」と書くことになりました(本家なでしこの仕様)。
7-1. 必要な機器やアプリ
このパートでは,次のものが全て必要です。よく確かめて準備しよう。
- Google Chrome ブラウザ ※Safari等のブラウザではうまくいかないかもしれません。
- なでしこボード (優良教材)
- 光導電セル(CdSセル) ※なでしこボードに付属のものでOK
- 赤色LED ※別の色でもOK ※抵抗内蔵のものがよい ※ホームセンター等で購入できます
LEDは部品の向きがあります。電流は長い足(アノード)から,短い足(カソード)に向けて流れます。
7-2. なでしこボードの仕組み と 準備
なでしこボードは,マイコンボードの一種です。センサの値を測る,LEDを光らせる,ブザーを鳴らす,といったことができます。
次の写真を見ながら,入力端子1に光導電セル(CdS)を,出力端子1に赤色LEDを取り付けてみよう。(※この赤色LEDは,抵抗内蔵のものを使ってください)
CdSの足を「G-」と「1」に差しこもう。部品の向きはありません。
赤色LEDの長い足を「①」に,短い足を「G-」に差しこもう。部品の向きに気を付けて!
次に,なでしこボードをコンピュータのUSBポートに接続しよう。「ピポッ♪」と音が鳴ったら準備OKだよ。
または
7-3. 使い方を覚えよう!
最初に,なでしこパッドでなでしこボードを使うやり方を覚えよう。
(1) お手本を開いて準備しよう
お手本を開くと,次のようなプログラムが表示されます。
ボード接続。 もし,ボード未接続ならば,終わる。 // ボード上のLED点灯・消灯 2回 LEDオン。 1秒待つ。 LEDオフ。 1秒待つ。 ここまで。 // ボード上のブザー発音 // 音の高さは0~22まで。 2回 12を発音。 16を0.5秒発音。 ここまで。 // センサ1の値を測定して表示 // センサの値は0~1023 4回 センサ1測定。 // 「センサ1」という変数に測定値が入る センサ1を表示。 1秒待つ。 ここまで。
(2) なでしこパッドとなでしこボードを接続しよう
なでしこパッドでは,WebHIDという技術を利用してなでしこボードと通信しています。そのため最初の1度だけ,なでしこボードを使うことをコンピュータ側へ伝える必要があります。
お手本にある,最初の2行で,ボードを使う準備をします。
ボード接続。 もし,ボード未接続ならば,終わる。
ボードをコンピュータへ接続してから初めて実行すると,次のように「どの機器と通信したいか」を指定するように要求されます。そこで「なでしこボード(Nadeshiko board)」を選んで[接続]ボタンをクリックします。
その後,プログラムは実行されますが,1回目は正しく動作しないことがあります(実行されずに終了することもあります)。
(3) プログラムを実行しよう
接続がうまくいったら,[実行]ボタンを押すと,プログラムの3行目以降が処理されます。
プログラムを何度か実行してみよう!
- 基板上の白いLEDが2回チカチカする(Lチカっていうやつだね!)
- その後,基板上のブザーが「ピポピポ♪」と鳴る
- その後,画面上に数値が4回表示される。基板に取り付けたCdSを手で隠して暗くすると,画面上の数値が変化するよ!
何度も実行して,動作を確かめてみよう!
(4) 使い終わったときは…
なでしこボードを使い終わったときは,ボードをゆっくりとコンピュータから抜き取ろう。その時,金属部分を触らないように気を付けてね。
7-4. なでしこボードを使うときは,ひな形をつかってみよう!
じゃあ,ここからはプログラムを自分で作ってみよう。
プログラムを作るとき,最初の2行はいつも同じになるから,あらかじめひな形を用意してあるよ。
なでしこパッドを開いたら,画面下方の「■お手本を選ぶ」というセレクトボックスから,「計測・制御0 なでしこボードを使う」を選んで[お手本読込]ボタンをクリックしよう。
すると,次のようにプログラムのひな形が表示されるので,6行目からプログラムを入力していこう。
7-5. とりあえずLチカ!
じゃあ,最初はLEDをチカチカ光らせてみよう! こういうプログラムを,プログラミングの世界では「Lチカ(エルチカ)」と呼んでいるよ。
(1) 基板のLEDをチカチカさせよう!
まず,基板上にある白いLEDを光らせてみよう。
基板のLEDを制御する命令
- 点灯させる命令は LEDオン
- 消灯させる命令は LEDオフ
- n秒待つ命令は n秒待機
を使います。
これを組み合わせて,LEDをチカチカさせてみよう。
次のプログラムを入力して,実行しよう!
ひな形の5行目から入力してね!
4回 LEDオン。 1秒待つ。 LEDオフ。 1秒待つ。 ここまで。
実行すると,こんなふうになるよ。みんなも同じ動作をしたかな?
↓
(2) 赤色LEDをLチカさせよう!
次は,出力端子1に取り付けた赤色LEDをチカチカさせよう。
出力端子につないだLEDを制御する命令
- このLEDを点灯させる命令は 出力1オン
- このLEDを消灯させる命令は 出力1オフ
を使います。
これを組み合わせて,LEDをチカチカさせてみよう。
(1)で作ったLチカのプログラムを修正してみよう!
4回 出力1オン。 1秒待つ。 出力1オフ。 1秒待つ。 ここまで。
実行すると,こんなふうになるよ。みんなも同じ動作をしたかな?
(3) 2つのLEDを交互に点灯させてみよう!
じゃあ,次の順に処理するプログラムを考えて作ってみよう。
- 白色LED…●消灯,赤色LED…●消灯 で1秒待つ
- 白色LED…○点灯,赤色LED…●消灯 で1秒待つ
- 白色LED…○点灯,赤色LED…○点灯 で1秒待つ
- 白色LED…●消灯,赤色LED…○点灯 で1秒待つ
- これを4回繰り返す。
実行すると,こんなふうになるよ。
↓
(2)で作ったLチカのプログラムを修正して,作ってみよう!
自分で作った後で,お手本と比べてみよう
4回 LEDオン。 1秒待機。 出力1オン。 1秒待機。 LEDオフ。 1秒待機。 出力1オフ。 1秒待機。 ここまで。
7-6. ブザーを鳴らそう
(1) とりあえずピーッ♪
基板上にあるブザーを鳴らしてみよう。とりあえず,ピーッ♪と1回だけ鳴らしてみよう。
次のプログラムを入力して,実行しよう!
ひな形の5行目から入力してね!
発音。
実行したら,基板からピーッ♪と音が鳴ったかな?
(2) 音の長さを変えてみよう!
次に,音の長さを変えてみよう。
0.2秒発音。
こんなふうに,秒数を指定するとその長さでブザーが鳴るよ(但し最長で2秒まで)。
単に発音と書いたときは,0.5秒発音と同じ意味になるよ。
(3) 音の高さを変えてみよう!
音の高さも変えられるよ。音の高さは,0~22の範囲で指定できるよ。
11を発音。 14を0.2秒発音。
数値を変えて,色んな音を出してみよう。
0を発音。 // ド 2を発音。 // レ 4を発音。 // ミ 5を発音。 // ファ 7を発音。 // ソ 9を発音。 // ラ 11を発音。 // シ 12を発音。 // ド 14を発音。 // レ 16を発音。 // ミ 17を発音。 // ファ 19を発音。 // ソ 21を発音。 // ラ 22を発音。 // シ
このプログラムの例はこちら。実行するとこんなふうになるよ。
(4) かんたんな電子メロディをつくってみよう!
組み合わせると,かんたんな電子メロディを作れそうだね! じゃあつくってみよう!
(単に発音と書いたときは,0.5秒発音と同じ意味になるよ)
0を発音。 // ド 2を発音。 // レ 4を1秒発音。 // ミ 0を発音。 // ド 2を発音。 // レ 4を1秒発音。 // ミ 7を発音。 // ソ 4を発音。 // ミ 2を発音。 // レ 0を発音。 // ド 2を発音。 // レ 4を発音。 // ミ 2を1秒発音。 // レ
このプログラムの例はこちら。 実行するとこんなふうになるよ。
電子レンジや電気ポットなどが,電子音でメロディを流しているのは,これと同じ原理だよ。コンピュータは何でも数値で処理しているんだね。
7-7. センサで明るさを測ってみよう
(1) CdSで明るさを測る
次は,なでしこボードに取り付けたセンサの測定値を測ってみよう。
センサとは,周囲の明るさや温度などを測る部品や装置のことです。なでしこボードでは,センサが測った明るさや温度などを,数値で扱うことができます。
CdS(光導電セル)は,周囲の明るさによって抵抗値が変化する部品です。これを利用して,周囲の明るさを測ることができます。なでしこボードは明るいと最小値0,暗いと最大値1023で測定値を返します。
ボードの入力端子1にCdSを差しこんで,センサ1測定という命令を使うと,CdSの測定値がセンサ1という変数に格納されます。
次のプログラムを入力して,実行しよう!
ひな形の5行目から入力してね!
10回 センサ1測定。 // 「センサ1」という変数に測定値が入る センサ1を表示。 1秒待つ。 ここまで。
プログラムを実行すると,画面に測定値(センサ1という変数の値)が表示されます。自分の手でCdSをおおって暗くすると,どんな値になるか確かめよう。
(2) センサライトを作ってみよう!
もし~ならば~違えば~ここまで を使って,センサライトの動作を再現してみよう。
- 周囲が暗いときは,自動的にLEDオン(点灯)する。
- 周囲が明るいときは,自動的にLEDオフ(消灯)する。
- これを繰り返す
市販のセンサライトと全く同じ動作をつくるのは難しいから,基本的な動作だけ再現してみよう。
動作している動画を見てみよう!
↓
次のプログラムを参考にして,自分でプログラムを考えてみよう!
ひな形の5行目から入力してね!
10回 センサ1測定。 // #1 センサ1を表示。 もし,センサ1>???ならば // #2 ?? // #3 違えば ?? // #4 ここまで。 0.5秒待つ。 // #5 ここまで。 LEDオフ。 // #6
#1 センサ1測定 … センサ1の値(CdSの測定値)を調べて,センサ1という変数へ格納する。
#2 もし~ならば … 「周囲が暗いとき」を条件式で書くとどうなるかな? → もし,センサ1>600ならば のように,不等号を使って書けるよ。この600という値は,人によって異なるから,自分でちょうどよい値を決めてみよう。
#3,#4 … それぞれ「周囲が暗いときの処理」と「周囲が明るいときの処理」を書くよ。どちらに,どんな処理があると,目的の動作になるかな?
#5 0.5秒待つ … プログラムの動作を意図的にゆっくりにしているよ。
#6 LEDオフ … 反復(10回~ここまで)が終わった後に,LEDオフという命令を入れているよ。どうしてだろう?
プログラムを作ったら,お手本と比べてみよう
10回 センサ1測定。 センサ1を表示。 もし,センサ1>600ならば // #3 暗いときの処理 LEDオン。 違えば // #4 明るいときの処理 LEDオフ。 ここまで。 0.5秒待機。 ここまで。 LEDオフ。
(3) チャレンジ! 冷蔵庫の動作を再現してみよう!
(2)のプログラムを改良・応用して,次のような冷蔵庫の動作を再現してみよう。自分で考えて,プログラムを作ってみよう!
自分でプログラムを考えてみよう!
ひな形の5行目から入力してね!
- ①【技能】
- 冷蔵庫は,扉を開けると庫内が明るくなりますよね。それと同じように,明るいときは「LEDオン」で,暗いときは「LEDオフ」に改良してみよう。
- ②【思考】
- 扉が開いているときにブザー音が鳴っていれば,閉め忘れを防ぐことができます。明るいときは「LEDオン」で「音が鳴る」ように改良してみよう。
7-8. 衝突防止アラームを作ってみよう!
なでしこボードは別の種類のセンサも使えますが,CdSが一番単純で分かりやすいので,これを応用して,自動車の衝突防止アラームを作ってみよう。
2台の車が離れているかどうかは,実際には距離センサなどで測りますが,今回はCdSで代用しましょう。
(1) 動作を場合分けして考える
このようなプログラムを考えるときは,表を作って,動作を場合分けして考えます。次の表を使って,あなたが実現したい動作を考えてみよう。
(2) プログラムの大まかな流れを考える
場合分けしたときは…,そう! もし~ならば~違えばもし~違えば~ここまでを使って,プログラムを書いていきます。
上の表に従って,プログラムの大まかな流れを考えてみよう。
大まかな流れを考えよう
(3) センサ1の値を使って,条件式を考えよう
そして,上の大まかな流れの中で,①の場合や②の場合と書かれているところには,センサ1の値を使った条件式が入るよ。どんな式になるか,自分で考えてみよう!
- ①の場合 … つまり2台の車が離れているとき = CdSに何も近づけないとき = CdSは明るい というふうに考えよう。センサ1の値は,0からいくつ(***)の間になるかな?
プログラムの条件式は,次の書き方をヒントにして考えてみよう。
もし,センサ1<***ならば // ①のときの処理 違えばもし,センサ1<xxxならば // ②のときの処理 違えば // ③のときの処理 ここまで。
- ③の場合 … つまり2台の車がとても近いとき = CdSを真っ暗にしたとき というふうに考えよう。センサ1の値は,いくつ(xxx)から1023の間になるかな?
- ②の場合 … ①と③の間のときだよね。センサ1の値は,いくつ(***)からいくつ(xxx)までになればいいかな。
(4) ①~③のそれぞれの処理を考えよう
条件式が決まったら,次はそれぞれの場合の処理を考えてみよう。
- 「音が鳴る」ようにしたいときは … ブザーを鳴らす命令 aをn秒発音 を使ってみよう。
- 「LEDが光る」ようにしたいときは … LEDオンやLEDオフ,出力1オンや出力1オフ を使ってみよう。
- ①の場合 … 何もしない…と思っていませんか? ブザーも鳴らないし,LEDも光らないなら,どんな命令を入れたらいいかな。n秒待つを上手に使ってみよう。
(5) とにかく,何度も実行して,何度も直してみよう!
このプログラムは,全員が同じプログラムになる分けではなく,一人一人が異なるプログラムを完成させると思います。だからこそ,自分で何度もプログラムを書いて,何度も実行してみよう。エラーが出たら,どこが間違っているかを見つけて,直してみよう。
他の人にプログラムを見てもらうと,よりよい動作に近づけるよ! あきらめずに,粘り強く頑張ろう!
【応用編】作り込んでいくと,こんなふうになるよ!
作り込んだプログラムの例はこちら。
7-9. さらに発展させたい人は…
なでしこボードには,CdSの他にも様々なセンサを取り付けることができるよ。
- 1つではなく,2つのセンサを使うことができるよ。
- また,赤色LEDの他にも様々な部品を取り付けることができるよ。
- 自分が作った電気回路を,出力2に取りつけることもできるよ!
他にも色々なことができるから,興味がある人は試してみよう!
使える命令一覧
なでしこボードで使える主な命令
- センサ1測定
- センサ2測定
- LEDオン,LEDオフ
- 出力1オン,出力1オフ
- 出力2オン,出力2オフ
- 発音,n秒発音,aをn秒発音 … aは音の高さ(0~22),nはブザーが鳴る長さ(0~2秒)
- n秒待つ
7-10. 分かったかな?
ここまで上手くいったか,プログラムを実行して確かめてみましょう。
- 基板のLEDを点灯・消灯できたかな。
- 取りつけた赤色LEDを点灯・消灯できたかな。
- ブザーを鳴らすことができたかな。
- センサ(CdS)を取りつけて,明るさを測定することができたかな。
- 測定した値(センサ1の値)を利用して,センサーライトのプログラムを作ることができたかな。
- 冷蔵庫の開けっぱなしを防ぐプログラムを作ることができたかな。
- 自動車の衝突防止アラームのプログラムを作ることができたかな。
上手くいかなかった人は,お手本を開いて試してみよう。
- CdSの取り付け方,センサ1測定,センサ1という変数の使い方 が分かったかな。
- LEDオン,LEDオフの使い方 が分かったかな。
- 赤色LEDの取り付け方,出力1オン,出力1オフの使い方 が分かったかな。
- ブザーを鳴らす命令 発音 の使い方が分かったかな。
- もし,センサ1>***ならば~ の考え方が分かったかな。