このパートでは,なでしこパッドを使ってかんたんなマイコンボードを制御してみよう!

作りながら,センサで測定する方法や,機器を制御する方法,計測・制御のしくみを覚えよう。


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) プログラムの大まかな流れを考える

場合分けしたときは…,そう! もし~ならば~違えばもし~違えば~ここまでを使って,プログラムを書いていきます。

上の表に従って,プログラムの大まかな流れを考えてみよう。

大まかな流れを考えよう

例えば,こんなふうに書けるよ。

30回
  センサ1測定。
  センサ1を表示。

  もし,(①の場合)ならば
    // ①離れているときの処理

  違えばもし,(②の場合)ならば
    // ②近いときの処理

  違えば
    // ③とても近いときの処理

  ここまで。

  0.5秒待つ。
ここまで。

// 終わったときの処理
LEDオフ。    

このプログラムを開きたいときは,ネコをクリック! → クリック

(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>***ならば~ の考え方が分かったかな。

目次にもどる