コンピュータ  システムを  作つくっちゃおう!

目的もくてき・  ねらい

パソコンとは  違ちがう  小ちいさな  システムを  自分じぶんで  組くみ上あげる  体験たいけんを  通とおして、  ハードウェアに  対たいする  理解りかいを  深ふかめると  ともに、  身みの回まわりの  システムに  興味きょうみを  もって  欲ほしいと  考かんがえて  います。  プログラムを  すべて  理解りかい  させるのでは  なく、  特とくに  初心しょしん者しゃに  対たいしては  数値すうちを  変かえたら  動うごきが  変かわった、  と  いう  体験たいけんを  させる  ことに  重点じゅうてんを  置おいて  ください。  上級じょうきゅう者しゃに  対たいしては、  自分じぶんで  どんどん  変かえさせて  構かまいません。  初心しょしん者しゃには  成功せいこう  体験たいけんが、  上級じょうきゅう者しゃには  トライ  &  エラーが  大事だいじです。

  

実施じっし  内容ないようの  概要がいよう

Arduino(アルデュイーノ)と  いう  小ちいさな  コンピュータを  使つかって、  音おとを  鳴ならす・  音おとの  高たかさを  変かえる・  サーボ  モーターを  回まわす・  距離きょりセンサーを  使つかう、  と  いった  ことを  体験たいけん  しながら  プログラムの  動作どうさを  理解りかい  し、  パソコンとは  違ちがう  小ちいさな  コンピュータの  世界せかいに  触ふれます。

  

講師こうし用ようの  実施じっし  手順てじゅんの  詳細しょうさい

準備じゅんび  する  ことがら、  物品ぶっぴんなど

・ 作業さぎょう  しやすいように  バナナジャック化か  された  Arduinoボードと  周辺しゅうへん  機器ききを  使つかいます。

・ 使つかう  コンピュータでは  Arduino.exeと  メモ帳ちょうを  タスクバーに  登録とうろく  して  おきます。  Windows+1,  Windows+2などで  起き動どう  させると  無駄むだな  時間じかんを  とりません  (Windows10の  場合ばあい)。

・ Arduinoは  Java Accessibility Switchが  ONに  なって  いないと  音おん声せい  出力しゅつりょく  しないので、  java¥bin  ディレクトリ  にて  「jabswitch -enable」を  実行じっこう  して  おきます。  (ただし  違ちがう  Javaを  読よみ込こむような  PATHの  設定せっていだと  うまく  いかない  ことが  あります。)  スクリーン  リーダーには  NVDAを  用もちいます。

・ メモ帳ちょうや  エディタでの  編集へんしゅうには、  使つかい慣なれた  スクリーン  リーダーを  使つかわせる  方ほうが  よいかも  しれません。  その  際さいは、  Arduinoの  音おと声せい  出力しゅつりょくを  あきらめて  ショートカットだけの  操作そうさを  する、  もしくは  そこの  操作そうさは  補助ほじょ者しゃが  やって  しまう、  と  いう  選択肢せんたくしも  あります。  いずれに  せよ  プログラムを  音おん声せいで  確認かくにん  する  場合ばあいに、  中ちゅうカッコなどの  記号きごうを  きちんと  読よむように  調整ちょうせい  して  おく  ことが  大事だいじです。

・ ツール  メニュー  以下いかの  シリアル  ポートや  ボードの  種類しゅるいを  設定せってい  して  おきます。

・ サンプル  プログラムを  ドキュメント  フォルダ  >  Arduino  フォルダ内ないに  おいて  おきます。  Altメニューの  ファイル⇒スケッチから  開ひらかせます。  動作どうさ  確認かくにんも  して  おきます。  最初さいしょに  接続せつぞく  した  際さいに  音おとが  鳴ならないよう、  空からの  スケッチを  最後さいごに  入いれて  おきます。

  

実施じっし  手順てじゅんの  詳細しょうさい

導入どうにゅう  部分ぶぶん

  概要がいようを  説明せつめい  し、  以下いかの  用語ようご  説明せつめいを  します。

・ 「Arduino」とは  今日きょう  使つかう  小ちいさな  コンピュータで  ある。

・ 「スケッチ」とは  Arduinoを  動うごかす  プログラムで  ある。

・ スケッチ(プログラム)を  作つくる  ための  プログラム=ソフトウェアが  ある。

・ その  ソフトウェアの  名前なまえも  Arduino(.exe)で  ある。

・ アナログは  連続れんぞく  する(=つながって  いる)  量りょう、  温度おんどや  角度かくどなど  実じっ世界せかいに  存在そんざい  する  量りょう。

・ デジタルは  バラバラの  量りょう、  コンピュータに  入はいると  デジタル化か  される。

  そして、  Arduinoは  パソコンが  なくても  「コンピュータと  して」  単体たんたいで  動うごく  ことも  説明せつめい  して  おきます。

  

 

ARDUINOの  概要がいよう  説明せつめい

  Arduinoボードの  右上みぎうえの  触覚しょっかく  手て掛がかり  シールなどを  使つかい、  同おなじ  方向ほうこうを  向むかせてから  触さわらせます。  触さわらせながら、  以下いかを  確認かくにん  させ、  説明せつめい  します。

・ USBコネクターの  位置いち。

・ USBケーブルを  通とおして  スケッチが  Arduinoに  書かき込こまれる  こと。

・ バナナジャックの  位置いちと  数かず、  そして  実際じっさいには  それらが  ケーブルを  通とおして  Arduinoの  コネクターに  接続せつぞく  されて  いる  こと。

・ 静電気せいでんき  破壊はかいの  恐おそれが  なければ  CPUの  チップや  水晶すいしょう  発はっ振しん器きなどを  説明せつめい  する。

・ アナログ  入力にゅうりょくを  する  端たん子しや  デジタルの  入出力にゅうしゅつりょくを  する  端たん子しが  ある  こと。

 これらの  触しょく察さつの  際さいは  ケガを  しないように、  また  ハードウェアを  壊こわして  しまわないように  ゆっくり  触さわるよう  指導しどう  します。  触さわらせる  方向ほうこうを  統一とういつ  して  おかないと  説明せつめいに  苦労くろう  するので、  向むきを  変かえないように  伝つたえて  おきます。

 

視覚しかく障害者しょうがいしゃ向むけに  バナナジャックを  装備そうび  した  Arduinoボード

写真

 

  アナログ  入力にゅうりょくに  ついては  「電圧でんあつの  高たかさを  検けん出しゅつ  する」と  いう  程度ていどの  説明せつめいを  します。  デジタルの  方ほうは  5Vか  0Vかを  判断はんだん  したり  出力しゅつりょく  したり  すると  いう  説明せつめいを  します。  (高学年こうがくねんの  場合ばあいには、  5Vと  いっても  「だいたい  5Vくらい」と  いう  話はなしを  盛もり込こむのも  良よいかも  しれません。)

  

 

ARDUINO.EXEの  起き動どうと  使つかい方かたの  説明せつめい

  コンピュータを  起き動どう  し、  Windows+1で  Arduino.exeを、  必要ひつようで  あれば  Windows+2で  メモ帳ちょうや  エディタを  起き動どう  します。  メモ帳ちょうや  エディタを  使つかう  場合ばあいは  Alt+Tabでの  アプリケーション  切きり替かえが  できる  ことを  確認かくにん  して  ください。プログラムの  編集へんしゅうは  Arduino.exeが  うまく  読よむ  場合ばあいには、  そのまま  使つかう  ことも  可能かのうですが、  音おん声せい化かが  うまく  いかなかったり、  編集へんしゅうに  困難こんなんが  あったり  するような  場合ばあいは  メモ帳ちょう  などを  使つかわせて  ください。  Ctrl+A、  Ctrl+C、  Alt+Tab、  Ctrl+A、  Ctrl+V、  の  一連いちれんの  シーケンスで  コピー  &  ペースト  する  ことなどを  説明せつめい  し、  操作そうさに  ついて  確認かくにん  します。  作業さぎょうに  慣なれて  いる  生徒せいとなら  問題もんだい  ないのですが、  作業さぎょうの  速度そくど差さが  出でて  しまう  場合ばあいが  あります。  適てき宜ぎ  補助ほじょ  して、  プログラムの  内容ないようを  読よませ  理解りかい  させる  ことに  時間じかんを  使つかうように  流ながれを  コントロール  して  ください。

 

Arduino.exeを  起き動どう  した  様子ようす

画像

 

  スケッチを  Arduinoへ  アップロード  する  ショートカットキーは  Ctrl+Uで  ある  ことを  ここで  説明せつめい  します。  適てき宜ぎ  自由じゆうに  メニューを  読よませて  ショートカットキーを  確認かくにん  させても  良よいです。  アップロードの  際さいには  確実かくじつに  Arduinoが  ケーブルで  接続せつぞく  されて  いる  ことを  確認かくにん  するよう  指導しどう  して  ください。  画面がめんが  見みえる  生徒せいとに  対たいしては、  ボタン  アイコンの  説明せつめいも  して  ください。  コンパイルは  Ctrl+Rですが、  かえって  混乱こんらん  させて  しまうようなら、  あえて  ワーク  ショップでは  説明せつめい  しなくても  良よいかと  思おもいます。  デバッグ  ペインへは、  F6で  移動いどう  できます。  F8での  移動いどうを  する  バージョンも  ありましたが、  現状げんじょうでは  F8は  境目さかいめの  バーへの  フォーカスの  移動いどうのようです。

 

  もし  プログラムに  詳くわしい  生徒せいとの  場合ばあいには、  setup()と  loop()の  2つの  セクションが  あり、  setup()は  最初さいしょの  一回いっかい、  loop()は  無限むげん  繰くり返かえしで  ある  ことなども  説明せつめい  すると  良よいでしょう。

    本ほん家けの  リファレンスは  以下いかに  なります。

    https://www.arduino.cc/en/Guide/HomePage

  

 

圧あつ電でん  スピーカーで  メロディ  作成さくせい

  最初さいしょに  圧あつ電でん  スピーカーを  使つかって  音楽おんがくを  鳴ならす  サンプルを  試ためします。  好このみの  メロディを  構築こうちく  させて  興味きょうみを  もって  もらうのが  目的もくてきです。  具体的ぐたいてきには  以下いかの  手順てじゅんで  進すすめます。

・ まず  ファイル  ⇒  スケッチ  ブックから  最初さいしょの  サンプル  スケッチを  開ひらかせます。  そのまま  読よむのが  困難こんなんな  場合ばあいは  メモ帳ちょうに  プログラムを  コピー  させます  (Ctrl+a、  Ctrl+c、  Alt+Tab、  Ctrl+vなど)。  生徒せいとが  分わかって  いる  場合ばあいには、  直接ちょくせつ  INOファイルを  編集へんしゅう  させるのも  良よいかも  しれません。  最初さいしょなので  適てき宜ぎ  手助てだすけ  して、  生徒せいと間かんの  ペースを  整ととのえます。

・ ファイルを  開ひらいた  後あとに  NVDAでも  読よませつつ  プログラムの  内容ないようを  順じゅんに  説明せつめい  します。

 > スラッシュが  2つ  続つづいた  後あとは  コメントで  プログラムには  影響えいきょう  しない  説明文せつめいぶんで  ある  ことを  伝つたえます。  この  説明文せつめいぶんを  コメントと  呼よぶ  ことや  「コメント  アウト」と  いう  言葉ことばなどを  教おしえるのも  良よいでしょう。

 > 定数名ていすうめいが  数値すうちを  意味いみ  する  ことを  理解りかい  して  いるか  確認かくにん  しつつ  進すすめます。  プログラムの  基本きほんと  しての  「定数ていすう」  「変数へんすう」の  話はなしが  したく  なる  ところですが、  難むずかしい  ことは  言いわずに  「文字もじが  数字すうじの  値あたいを  意味いみ  する」のような  説明せつめいに  とどめて  おきます。  変数へんすうは  次つぎの  サンプルで  出でて  きます。

 > tone()は  音おとを  鳴ならす  命令めいれいで、  その  後あとに  delay()と  いう  命令めいれいが  必要ひつような  ことを  教おしえます。  適てき宜ぎ  英語えいごの  意味いみなども  説明せつめいに  入いれると  良よいでしょう。  生徒せいとの  様子ようすを  見みて  難むずかしく  感かんじて  しまいそうならば、  これらの  命令めいれいで  1つの  音おとを  鳴ならす、  と  いった  程度ていどの  説明せつめいでも  構かまいません。  これらの  編集へんしゅうを  後のちほど  して  もらう  ことも  伝つたえます。

・ Arduinoの  ボードに  圧あつ電でん  スピーカーを  接続せつぞく  させます。  赤あかを  デジタル  10番ばんに、  黒くろを  GNDに  接続せつぞく  させます。  ここは  「自分じぶんで  挿さす」  ことに  重点じゅうてんを  置おいて  ください。  ただし、乱暴らんぼうに  扱あつかって  壊こわして  しまわないよう、  ゆっくり  触さわるよう、  分わからない  ことが  あったら  聞きくよう  指導しどう  して  ください。  「高価こうかな  もので  ある」と  最初さいしょに  伝つたえて  おく  ことも  重要じゅうようです。

・ 接続せつぞくが  終おわったら、  Ctrl+Uを  押おさせ、  サンプル  スケッチを  コンパイル  &  アップロード  します。

・ モバイル  バッテリーなどが  あれば、  コンピュータから  外はずして  単体たんたいで  実行じっこう  して  みます。  単純たんじゅんな  オルゴール的てきな  ものですが、  プログラムが  転送てんそう  されて  中なかで  動うごいて  いる  ことを  実感じっかん  して  もらいます。

・ サンプル  プログラムが  動うごいたら、  音おん階かいを  自由じゆうに  組くみ合あわせて  自由じゆうに  メロディを  作つくって  もらいます。  ここで  比較的ひかくてき  多おおくの  時間じかんを  割さいて、  成功せいこう  体験たいけんを  して  もらいます。  この  作業さぎょうは  最後さいごに  持もって  くる  構成こうせいも  良よいと  思おもいます。

・ 音楽おんがくの  才能さいのうの  ある  生徒せいとさんには、  何なにか  課題かだい曲きょくを  与あたえても  良よいでしょう。

・ 進しん度どの  早はやい  生徒せいとさんや  音楽おんがくの  素そ養ようの  ある  生徒せいとさんには  音おとの  長ながさも  変かえさせます。  delayの  値あたいを  調整ちょうせい  して  「間ま」を  作つくる  ことも  試ためして  もらいます。

 

  スピーカーの  接続せつぞくの  際さいには、  「USBコネクターを  上うえに  向むけて  置おいて、  右側みぎがわの  一番いちばん  上うえの  バナナジャックが  デジタルの  10番ばん  ピンです」  「その  下したが  GNDです」と  いった  声こえ掛かけで  説明せつめい  します。

  プログラムの  説明せつめい時じ、  tone()  メソッドは  3つの  引数ひきすうを  持もつ  ことを  生徒せいとに  合あった  言葉ことばで  説明せつめい  します。  「カッコの  中なかに  3種類しゅるいの  値あたいを  カンマで  区切くぎって  書かく」  「1番目ばんめの  値あたいは  ピン番号ばんごう、  これは  すべて  同おなじなので  2行目ぎょうめで  10(番ばん)に  なるように  して  ある」  「2番目ばんめの  値あたいが  周波数しゅうはすう、  数字すうじが  大おおきいほど  高たかい  音おと」  「3番目ばんめの  値あたいは  音おとの  長ながさ、  これも  サンプルでは  同おなじ  値あたいに  して  ある」など  適てき宜ぎ  かみ砕くだきながら  説明せつめい  します。

  

 

 

// 音おとの  長ながさを  300ミリ秒びょうに  設定せってい  します。

#define DURATION 300

// スピーカーの  ピンを  デジタル  10番ばんと  します。

#define SPEAKER_PIN 10

// プログラムには  関数かんすうと  いう  命令めいれいの  まとまりが  あります。  中ちゅうカッコで  区切くぎられて  います。

// setup()と  いう  関数かんすうは  最初さいしょに  実行じっこう  されます。  しかし  今回こんかいは  何なにも  書かきません。

void setup() {

// 中身なかみは  カラです。

}

// loop()と  いう  関数かんすうは  無限むげんに  繰くり返かえされます。

void loop() {

  // ドの  周波数しゅうはすうを  300ミリ秒びょう  鳴ならします。  delayと  いう  命令めいれいで  次つぎの  命令めいれいまで  待まちます。

  tone(SPEAKER_PIN,262,DURATION); delay(DURATION);

  // レ

  tone(SPEAKER_PIN,294,DURATION); delay(DURATION);

  // ミ

  tone(SPEAKER_PIN,330,DURATION); delay(DURATION);

  // ファ

  tone(SPEAKER_PIN,349,DURATION); delay(DURATION);

  // ソ

  tone(SPEAKER_PIN,392,DURATION); delay(DURATION);

  // ラ

  tone(SPEAKER_PIN,440,DURATION); delay(DURATION);

  // シ

  tone(SPEAKER_PIN,494,DURATION); delay(DURATION);

  // ド

  tone(SPEAKER_PIN,523,DURATION);

  // 3秒びょう  待まつ

  delay(3000);

}

  

 

可か変へん  抵抗ていこう器きに  よる  アナログ  入力にゅうりょく

  2番目ばんめの  スケッチは  アナログ  入力にゅうりょくを  学まなびます。  入力にゅうりょくに  よって  音おん階かいが  変化へんか  する  ことを  理解りかい  し、  手元てもとの  可か変へん  抵抗ていこう器きが  プログラムに  影響えいきょう  して  いる  ことを  感かんじて  もらいます。  「可か変へん  抵抗ていこう器き」と  いう  名称めいしょうは  親したしみが  ないかも  しれませんので、  「ボリュームの  つまみ」など  適てき宜ぎ  言いい方かたを  変かえて  みて  ください。  (つまみ、  も  死し語ごかも  しれませんが  …)

 

可か変へん  抵抗ていこう器き

写真

 

・ ファイル  ⇒  スケッチ  ブックから  スケッチを  開ひらかせます。

 > 3つの  定数ていすうの  宣言文せんげんぶんを  解説かいせつ  します。  ここまでは  スピーカーの  サンプルと  同おなじです。

 > 変数へんすう  宣言せんげんが  出でて  きました。  ここで  定数ていすうは  その  名なの  通とおり  値あたいが  変かわらない  もの、  変数へんすうは  プログラム中ちゅうで  変化へんか  する  入いれ物もの、  と  いう  ことを  説明せつめい  します。  また、  intに  ついては  整数せいすう  (integer)で  ある  ことも  説明せつめい  して  おきます。

 > setupは  今回こんかいも  何なにも  ないので  飛とばします。  もとより  カット  して  おくのも  一案いちあんです。

 > analogRead()  と  いう  メソッド(命令めいれい)で  指定してい  された  ポートの  電圧でんあつを  測はかる  ことを  教おしえます。

 > 圧あつ電でん  スピーカーの  周波数しゅうはすうと  して  値あたいが  与あたえられ、  出力しゅつりょく  される  ことを  説明せつめい  します。

・ Arduinoから  スピーカーの  片方かたほうの  プラグを  抜ぬき、  音おとが  鳴ならないように  してから  Ctrl+Uで  スケッチの  コンパイルと  アップロードを  実施じっし  します。

・ USBケーブルを  抜ぬいた  後あとに  Arduinoの  ボードに  可か変へん  抵抗ていこう器きを  接続せつぞく  させます。  赤あかい  ケーブルを  5Vに、  黒くろい  ケーブルを  GNDに、  黄色きいろい  ケーブルを  アナログの  0番ばんに  接続せつぞく  します。  スピーカーも  再度さいど  接続せつぞく  します。

・ 可か変へん  抵抗ていこう器きの  黄色きいろい  ケーブルの  電圧でんあつは、  つまみを  捻ひねると  0から  5Vに  変かわる  こと、  アナログ  入力にゅうりょく  端たん子し  では、  0Vから  5Vまでの  間あいだの  電圧でんあつ値ちが  0から  1023に  なる  ことを  説明せつめい  して  おきます。  可か変へん  抵抗ていこう器きの  各かく  端たん子しの  意味いみと  仕組しくみ、  電圧でんあつが  変かわる  原理げんりなども  時間じかんに  応おうじて  説明せつめい  すると  良よいでしょう。

・ USBケーブルを  電源でんげん  もしくは  PCに  つなぎます。

・ サンプルが  動うごいたら、  プログラムを  自分じぶんで  変かえさせます。  例たとえば  sensorValueの  値あたいを  sensorValue*2  に  したり  1023-sensorValue に  したり  させて  その  変化へんかを  予想よそう  させ、  実験じっけん  します。  変数へんすうに  代入だいにゅう  する  タイミングで  変かえても  toneを  呼よび出だす  タイミングで  変かえても  同おなじと  いう  ことを  示しめす  ことで、  「プログラムの  正解せいかいは  ひとつでは  ない」  ことを  理解りかい  して  もらうと  良よいでしょう。

 

・ analogRead()  の  解説かいせつは  以下いかの  ページに  あります。

  http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=2113

  

 

 

//音おとの  長ながさを  定義ていぎ  します。

#define DURATION 50

// スピーカーの  ピンを  デジタル  10番ばんと  します。

#define SPEAKER_PIN 10

// 可か変へん  抵抗ていこうから  取得しゅとく  する  ピンを  アナログ  0番ばんと  します。

#define RESISTOR_PIN A0

// 可か変へん  抵抗ていこう器きからの  値あたいを  入いれる  変数へんすう  sensorValueを  宣言せんげん  して  初期化しょきか  します。

int sensorValue = 0;

 

void setup() {

  // 今回こんかいも  何なにも  書かきません。

}

 

void loop() {

  //analogRead  命令めいれいで  アナログ  0番ばんから  値あたいを  読よみ込こんで、  sensorValueに  代入だいにゅう  します。

  sensorValue = analogRead(RESISTOR_PIN);  

  //sensorValueの  周波数しゅうはすうの  音おとを  50ミリ秒びょう  鳴ならします。

  tone(SPEAKER_PIN, sensorValue, DURATION); delay(DURATION);

}

  

 

サーボ  モーターで  ループを  学まなぶ

  3番目ばんめの  スケッチは  サーボ  モーターを  使つかいます。  サンプル  スケッチの  確認かくにん、  スケッチの  アップロード、  サーボ  モーターの  接続せつぞく、  実行じっこう、  の  順じゅんに  進すすめます。  (サーボ  モーターが  接続せつぞく  されて  いると  USBの  電流でんりゅうが  吸すわれて  うまく  書かき込こめない  場合ばあいが  あります)

 

サーボ  モーター

写真

 

・ ファイル  ⇒  スケッチ  ブックから  スケッチを  開ひらかせます。

・ ヘッダ  ファイルの  インクルードに  ついては  「おまじない」と  いう  言いい方かたは  避さけ、  「サーボへの  命令めいれいを  記述きじゅつ  する  ために  必要ひつような  コード」と  伝つたえます。

・ forループに  ついての  書式しょしきを  学まなびます。  「for()の  中なかには  セミコロンで  区切くぎられて  3つの  領域りょういきが  あり、  最初さいしょの  領域りょういきで  変化へんか  する  変数へんすうの  初期値しょきち  (最初さいしょの  値あたい)を、  2番目ばんめの  領域りょういきで  終おわる  条件じょうけんを、  3番目ばんめの  領域りょういきで  変化へんかの  仕方しかたを  指定してい  する」  「中ちゅうカッコで  囲かこまれた  部分ぶぶんが  指定してい  回数かいすうだけ  回まわる、  そして  変数へんすうの  中身なかみも  変化へんか  する」と  いう  ことを  説明せつめい  します。  ここでは  posが  0から  180まで  変化へんか  する  ことを  理解りかい  して  もらいます。  難むずかしい  様子ようすでしたら、  すべて  理解りかい  させなくて  構かまいません。  どこを  変かえたら  角度かくどが  変かわるか、  を  教おしえて  自由じゆう  課題かだいでは  そこを  編集へんしゅう  させて  ください。

・ Ctrl+Uで  コンパイル、  アップロードを  実施じっし  します。

・ サーボの  電源でんげんと  PWM端たん子しを  接続せつぞく  します。

・ 自分じぶんたちで  角度かくどの  指定していを  変かえさせたり、  ステップ  (=速度そくど)を  変かえさせたり  して  動うごきの  変化へんかを  楽たのしんで  もらいます。

  

 

 

// サーボを  使つかう  ための  ヘッダ  ファイル  (宣言せんげん  ファイル)を  読よみ込こみます。

#include <Servo.h>

// サーボ  オブジェクトを  作つくります。

Servo myservo;

// サーボ  モーターの  角度かくどを  記憶きおく  して  おく  変数へんすう  posを  宣言せんげん  して  ゼロで  初期化しょきか

int pos = 0;

void setup() {

  // 0番ばん  ピンを  サーボ  モーターと  関連かんれんづけます。

  myservo.attach(0);

}

void loop() {

  // 指定してい  回数かいすう  まわす  forループです。  posの  中身なかみは  0から  180まで  1ずつ  増ふえます。

  for(pos = 0; pos <= 180; pos += 1){

    // サーボを  posの  角度かくどに  変更へんこう  して  10ミリ秒びょう  待まちます。

    myservo.write(pos); delay(10);

  }

  // 1秒びょう  待まちます。

  delay(1000);

  // 次つぎに  また  forループで  posの  値あたいを  180から  0まで  減へらします。

  for(pos = 180; pos >= 0; pos -= 1){ 

    myservo.write(pos); delay(10);

  }

  // 1秒びょう  待まちます。

  delay(1000);

}

  

 

可か変へん  抵抗ていこう器きの  アナログ  入力にゅうりょくと  サーボ  モーターを  組くみ合あわせて  みる

  可か変へん  抵抗ていこう器きからの  入力にゅうりょくの  仕方しかたと  サーボ  モーターへの  出力しゅつりょくの  仕方しかたが  分わかったので、  それらを  組くみ合あわせて  「可か変へん  抵抗ていこう器きを  ねじると  サーボが  動うごく」と  いう  サンプルを  動うごかして  みます。

・ ファイル  ⇒  スケッチ  ブックから  スケッチを  開ひらかせます。

・ 先さきほど  学まなんだ  2つの  プログラムが  組くみ合あわさって  いる  ことを  理解りかい  させます。  どの  コードが  どちらの  もので  あったかなどを  答こたえさせても  良よいでしょう。

・ サンプルが  動うごいたら、  可か変へん  抵抗ていこう器きの  向むきと  逆ぎゃく向むきに  動うごかすには、  角度かくどを  90度どまでに  するには、  と  いった  課題かだいを  出だして  みます。

・ 時間じかんを  持もて余あまして  いる  生徒せいとさん、  すでに  プログラミング  経験けいけんが  豊富ほうふな  生徒せいとさんには、  個別こべつに  条件じょうけん  分岐ぶんき  書式しょしきなどを  教おしえて  一定値いっていちを  超こえたら  サーボ  モーターが  振ふり切きれる  ものを  作つくれ、  などの  課題かだいを  与あたえても  良よいでしょう。

  

 

 

// サーボを  使つかう  ための  ヘッダ  ファイル  (宣言せんげん  ファイル)を  読よみ込こみます。

#include <Servo.h>

// 可か変へん  抵抗ていこうから  取得しゅとく  する  ピンを  アナログ  0番ばんと  します。

#define RESISTOR_PIN A0

// サーボ  オブジェクトを  作つくります。

Servo myservo;

// 可か変へん  抵抗ていこう器きからの  値あたいを  入いれる  変数へんすう  sensorValueを  宣言せんげん  して  初期化しょきか  します。

int sensorValue = 0;

void setup() {

  // 0番ばん  ピンを  サーボ  モーターと  関連かんれんづけます。

  myservo.attach(0);

}

 

void loop() {

  // analogRead  命令めいれいで  アナログ  0番ばんから  値あたいを  読よみ込こんで、  sensorValueに  代入だいにゅう  します。

  sensorValue = analogRead(RESISTOR_PIN);

  // 0-1023を  0-180に  変換へんかん  します。

  sensorValue = map(sensorValue, 0, 1023, 0, 180);

  // サーボを  posの  角度かくどまで  動うごかして  10ミリ秒びょう  待まちます。

  myservo.write(sensorValue); delay(10);

}

  

 

 

  分岐ぶんきの  例れい

 

void loop() {

  sensorValue = analogRead(RESISTOR_PIN);

  if(sensorValue > 500){

    myservo.write(100);

    delay(10);

  }else{

    myservo.write(0);

    delay(10);

  }

}

  

 

センサーを  使つかう

  最後さいごに  超音波ちょうおんぱ  距離きょり  センサーを  使つかって  みます。  まず  センサー  自体じたいの  説明せつめいを  してから  サンプルを  動うごかします。

 

超音波ちょうおんぱに  よる  距離きょり  センサー

写真

 

・ センサーには  電源でんげんの  プラスと  マイナス  (5Vと  GND)、  TRIGと  ECHOと  いう  4つの  端たん子しが  あります。  TRIG(トリガー)は、  Arduinoから  センサーへの  信しん号ごう線せん  です。  この  端たん子しに  タイミングの  指示しじが  あったら、  超音波ちょうおんぱを  発信はっしん  します。  ECHO(エコー)は  センサーから  Arduinoへの  信しん号ごう線せん  です。  超音波ちょうおんぱ  発信はっしんから  受じゅ信しんまで  どれくらいの  時間じかんが  経たったかを、  パルスの  長ながさで  戻もどして  くれます。

・ プログラムに  ある  pulseInと  いう  メソッドは  ECHOの  信しん号ごうを  マイクロ秒びょうで  答こたえて  くれます。

・ ファイル  ⇒  スケッチ  ブックから  スケッチを  開ひらかせます。

 > 宣言せんげん  部分ぶぶんの  定数ていすうを  確認かくにん  します。  同時どうじに  ボードの  バナナジャックの  対応たいおう  位置いちなども  説明せつめい  すると  良よいでしょう。

 > doubleと  いうのは  整数せいすうでは  なく  小数しょうすうを  表あらわす、  と  いう  程度ていどの  説明せつめいを  します。

 > デジタル  ポートの  入力にゅうりょく・  出力しゅつりょくの  方向ほうこうを  setupで  定さだめます。  同時どうじに  シリアル  ポートの  速度そくども  ここで  指定してい  して  いる  ことに  留意りゅうい  させて  ください。

 > パルスを  送おくり、  ECHOから  戻もどって  くる  値あたいで  距離きょりを  計算けいさん  します。

 > センチメートル  単位たんいに  して、  それを  もとに  音おん階かいを  出だす  ことを  説明せつめい  します。

 > 同時どうじに  シリアル  ポートを  通とおして  パソコンと  Arduinoが  通信つうしん  する  ことを  説明せつめい  します。  ただし  この  コードは  弱じゃく視し者しゃ・  晴せい眼がん者しゃの  確認かくにん用ようなので、  シリアル  モニタは  うまく  読よみ上あげません。

・ 弱じゃく視しの  生徒せいとの  場合ばあいは  動うごいて  いる  様子ようすを、  「シリアル  モニタ」で  確認かくにん  する  ことも  できます。  シリアル  モニタは  Ctrl+Shift+Mで  起き動どう  します。  ボーレートに  注意ちゅうい  して  ください。  9600に  設定せってい  します。

・ 生徒せいとの  興味きょうみと  体力たいりょくが  あれば、  0.017と  いう  係数けいすうに  ついて  少すこし  詳くわしく  説明せつめい  します。(http://marupeke296.com/EL_Ard_No8_SuperSonic.htmlに  詳くわしく  書かいて あります)時間じかんと  速はやさと  距離きょりの  関係かんけいから、  距離きょり 時間じかん 速はやさ  です。  ここで  時間じかんとは、  pulseInで  得えられる  マイクロ秒びょう  単位たんいの  時間じかんです。  速はやさとは、  音速おんそくの   です。   単位たんいに  すると   です。  そして  マイクロ秒びょうを  秒びょうに  直なおすには   で  割われれば  よいので、  プログラムの  intervalと  いう  変数へんすうを  用もちいると、  interval interval  に  なります。  これが  往復おうふくの  距離きょりに  なるので、  その  半分はんぶん、  すなわち  interval  が  片かた道みちの  距離きょりと  いう  ことに  なります。

  

 

 

// 音おとの  長ながさ、  スピーカーピン、  トリガーピン、  エコーピンの  ナンバーを  宣言せんげん  します。

#define DURATION 100

#define BEEP_PIN 10

#define TRIG_PIN 2

#define ECHO_PIN 8

// intervalと  distanceを  宣言せんげん  します。

int interval = 0;

double distance = 0;

 

void setup() {

  // 入出力にゅうしゅつりょくの  方向ほうこうを  決きめて  シリアル  ポートを  開ひらきます。

  // 2番ばんが  出力しゅつりょく、  8番ばんが  入力にゅうりょくです。

  pinMode( 2, OUTPUT );

  pinMode( 8, INPUT );

  // Serial.begin( 9600 ); //PCと  通信つうしん  する  場合ばあい  シリアル  ポートを  開ひらきます。

}

 

void loop() {

  // 10マイクロ秒びょう  以上いじょうの  パルスを  送おくります。  HIGH、  LOWを  順番じゅんばんに  指示しじ  します。

  digitalWrite( TRIG_PIN, HIGH );

  delayMicroseconds( 100 );

  digitalWrite( TRIG_PIN, LOW );

  // pulseIn()で  ECHOピンの  HIGHで  ある  状態じょうたいが  どれくらい  長ながいのか  検出けんしゅつ  します。

  interval = pulseIn( ECHO_PIN, HIGH );

  // intervalの  値あたいから  センチメートルに  変換へんかん  します。

  distance = interval * 0.017;

  // 音おん階かいで  出力しゅつりょく  します。

  tone(BEEP_PIN, interval/10, DURATION); delay(DURATION);

  // PCで  状態じょうたいを  得える  場合ばあい  シリアル  通信つうしんを  します  (Ctrl+Shift+M)

  //Serial.print( interval, DEC );

  //Serial.print( "¥t" );

  //Serial.print( distance, 4 );

  //Serial.print( "¥n" );

}

  

注意ちゅうい  すべき  点てん

・ 直接ちょくせつ  ボードに  触ふれて  学習がくしゅう  するので、  冬ふゆの  場合ばあいは  特とくに  生徒せいとの  静電気せいでんきを  逃にがして  おきます。  服装ふくそうなども  注意ちゅうい  して、  場合ばあいに  よっては  薄うすい  手袋てぶくろ  などを  用意ようい  して  おくと  良よいでしょう。  部屋へやの  気温きおんが  寒さむいと  毛け糸いとの  上着うわぎなどを  脱ぬいで  もらうのが  申もうし訳わけ  ないので、  事前じぜんに  部屋へやを  暖あたためて  おくように  します。

  

到達とうたつ  目標もくひょう

・ コンピュータを  使つかった  システムの  基本きほん、  入力にゅうりょく  →  演算えんざん  →  出力しゅつりょくと  いう  一連いちれんの  流ながれを  理解りかい  する。

・ アナログ量りょうを  数値化すうちか  して  プログラムに  利用りよう  して  いる  ことを  理解りかい  する。

・ 世よの中なかに  ある  様さま々ざまな  センサーに  ついて  興味きょうみを  持もつ。

  

生徒せいと用よう  資料しりょう

  生徒せいと用ようには、  サンプル  プログラムを  あらかじめ  コンピュータに  入いれて  おきます。  その  ほか  実際じっさいに  触さわる  Arduinoは  自分じぶんで  組くめるように  大型化おおがたか  した  ものを  準備じゅんび  します。