b-1)プログラムの作法

パソコンとマイコンの違いってわかりますか?

パソコンは机の上にどーんと鎮座していたり、おしゃれなカフェのテーブルで使っている人も多いので、今の時代、「パソコンを見たことない」という人は少ないと思います。

パソコンを使えば、インターネットに繋いでYahooを見たり、Googleで調べ物をしたり、メールもできますね。
また、WORDやEXCELを使って文書や請求書を作成したりすることもできます。
膨大なデータ処理を行うのにパソコンがない生活というのはもう考えられませんね。

それに対し、「家の中でマイコンを見かけたことがある」という人はすごく少ないと思います。
しかし、マイコンは、家の中にあるたくさんの家電製品に組み込まれています。

なぜかというと、マイコンはパソコンのように膨大なデータ処理を行うことはできませんが、その代わりに様々なものをコントロール(制御)するのが得意なのです。

人間で言えば、大脳がパソコンで小脳がマイコンの役割になると思います。


・Arduinoについての説明

Arduino(アルディーノと呼びます)は世界でもっとも使われているマイコンボードの1つです。
その理由はマイコンボードの回路や使用部品、プログラムなど「誰でも自由に使っていいよ」と公開(オープンハードウェア・オープンソースといいます)しているので、新規にArduinoを作って商売しようという人がいた時に、敷居が低いことがあげられると思います。
実際に、amazonなどでarduinoと検索すると500円程度で販売されているArduino(互換機)が売られています。
互換機ではないArduinoは3000円以上もするので、とても安いですね!

さらに、Arduinoのプログラムを作るソフトウェアが無料です。
なので少ないお金でマイコンの開発が行えてしかもそれを自由に販売することもできるのです。

そしてArduinoにはたくさんの種類があります。
500円玉くらいのものから、スマホくらいの大きさのもの。
たくさんの信号を処理できるもの、高速なもの、消費電力の少ないものなどなど・・・・。

作りたいものに合わせた異なるArduinoを選んでも、使い方もプログラムの仕方も同じなのでまた一からプログラムを覚え直す手間がかかりません。

また、マイコンは色々なセンサーや出力装置と繋いで使いますが、その場合にも簡単に使えるようにプログラムが用意されています。
今回のセミナーでは「GROVE(グローブ)」というキットを使いますが、このキットは昔のマイコンのキットのように配線の半田付けや使う部品の信号を調べたりしなくても、コネクタを差し込むことで回路を作ることができます。

マイコンの学習を行う時に一番面倒なのが配線などの作業ですので、ここを簡略化できると学習もはかどりますね。


・マイコンが扱える電圧

マイコンはパソコンと違って「ものをコントロールするのが得意」と最初に書きましたが、コントロールするためには、相手に電気信号を送らなければいけません。
電気信号には電圧があります。

小学校の理科で習った豆電球をつける回路を思い出して見ましょう。

乾電池があって、そこから伸びる電線が2本。プラスとマイナスですね。
そして、プラスの電線が豆電球につながり、豆電球からの線がスイッチにつながり、スイッチのもう片方の線が乾電池のマイナスの線に繋がっています。

スイッチを押すと電気が流れて豆電球がつきます。

乾電池は1.5Vなので、この時の電気信号は1.5Vの電気信号で豆電球が点いたことになりますね。

この乾電池を2本直列につないでみると電圧は3Vになります。
その状態でスイッチを押すと豆電球は乾電池が1本の時よりも明るく点きますね。
これは電圧が1.5Vの時よりも3Vのほうが多く電気が流れるので明るくなるのです。

では、乾電池ではなく、コンセントに繋いだらどうでしょうか?

私は実際に小学生の頃、実験したことがありました。
とてつもなく明るく点くかな?と思ってドキドキしながらコンセントを差し込んでみると豆電球は点きませんでした。
どうしてかな?と思って豆電球を見て見たら中のフィラメントが切れてました。
高すぎる電圧に耐えられなくて一瞬で切れてしまったのだと思います。

マイコンには、決められた信号電圧があります。
大抵は自分自身の電源電圧と同じで5Vのマイコンなら信号も5V、3.3Vのマイコンなら信号も3.3Vのものが多いです。
この電圧は必ず守る必要があります。

ではマイコンはどのようにして家電を制御しているのでしょうか?
家電は大抵100Vで動作していますよね?

それは、5Vの電気信号を100Vやその他の電圧に変換してくれる部品を使って制御しています。

※実際には扱える電圧とともに、「電流」のことも考えなければいけません。
その話は後ほどのセミナーで解説いたします。


・アナログとデジタル

マイコンが扱う電気信号は2種類あり、アナログとデジタルになります。

みなさんの生活の中で身近なものはアナログになります。
例えば、部屋の明るさ。
窓から差し込む日の光で明るさが無段階に変わりますね。
テレビから出てくる音などもそうです。

マイコンの信号電圧は5Vなので、この無段階の量の変化を0V〜5Vの電圧の変化として扱うことができます。
音の変化をマイコンに入力するのなら「アナログ入力」、光の明るさの変化としてマイコンからランプに出力するのなら「アナログ出力」になります。

Arduinoでは0V〜5Vの電圧の変化を1024段階の数値の変化として取り入れることができます。
アナログ電圧の変化は無段階に行われますが、あまり細かく取り込んでしまうと(例えば1兆段階とか)扱うデータが大きくなったり、マイコンがアナログ電圧を取り込むときに処理が間に合わなくて情報を取りこぼしたりします。
なのでこの1024段階というのは、そこそこ細かかくて扱いやすい範囲になります。

さて、1024段階で0V〜5Vまで変化するアナログ電圧を取り込むと一番最小単位はどのくらいの電圧を測ることができるのでしょうか?

答えは、5÷1024=0.004Vになります。結構少ない電圧から測ることができますね。

実際にアナログ電圧を使う場合には、少しの外乱(温度や湿度で影響を受ける電気抵抗のわずかな変化)でも変化してしまい、あまり細かすぎると逆に使いづらかったもしますので、適当な数字になるように計算してまるめて使ったりします。

デジタルはアナログと違い、0Vか5Vしかありません。
例えば電源スイッチなどはONかOFFしか状態がないので、デジタル入力で処理ができます。
基本的に「〜スイッチ」と呼ばれるものはデジタル入力でいいと思います。


では、デジタル入力を実験してみましょう。

ケーブルや部品を入れ替える時は必ずUSBケーブルを必ず抜いてから行うのが基本なのですが、ここでは学習を容易にするために、USBケーブルをつないだままで作業してください。

・ボタンによる入力動作

写真を参考にしてD5にボタンをつないでください。

次に、パソコンのデスクトップにあるdigital_inputフォルダを開き、そこにあるdigital_input.inoをダブルクリックして開きます。

このような感じの画面になりますので、通信設定を確認して→ボタンをクリックして書き込んでください。

次に、虫眼鏡ボタンを押してシリアルモニタ画面を表示します。
正しく接続されている場合には画面に0が縦に表示されます。

その状態でarduinoにつないだボタンを押すと1に変わります。

何度か押したり離したりして数字が変わるのを確認してください。

数字の意味ですが0がOFF(入力がない)、1がON(入力がある状態)になります。
デジタル入力ではこのように入力があることを1か0で判断できます。

次にそのままの状態でボタンを外し、タッチスイッチを写真の様につないでください。

タッチスイッチはスマホの画面のように、人の指で押すと反応するスイッチです。
これもシリアルモニタ画面を見ながら指で触れたり離したりして入力を確認してください。

タッチスイッチは指以外で押しても反応しません。
そのため、人以外が操作することを防ぐことができます。

試しに、ペンの先などでタッチスイッチを押して反応しないことも確認してください。

ArduinoのGROVEシステムを使うと、このように同じプログラムで異なるスイッチへ簡単に変更することができます。


次はアナログ入力を実験してみましょう。
・ボリュームの接続

写真を参考にしてA0にボリュームを接続してください。

次にパソコンのデスクトップにあるanalog_inputフォルダを開き、そこにあるanalog_input.inoをダブルクリックして開きます。

このような感じの画面になりますので、通信設定を確認して→ボタンをクリックして書き込んでください。

次に、虫眼鏡ボタンを押してシリアルモニタ画面を表示します。
正しく接続されている場合には画面に数字が縦に表示されます。

アナログ入力の場合は、センサの読み取り値を電圧の変化として読み取ります。
前の章のマイコンと電圧の説明にあるように0〜5Vまでの電圧の変化を0〜1023の1024段階の値で表示します。
ボリュームを左右に絞ってみてください。
0〜1023の間で数字が変化していると思います。

ボリュームはつまみの角度で抵抗がかわり、それに比例して電圧が変わります。

つまり、

「角度を電圧に変換して入力するセンサー」

と言えますね。

次にボリュームを
・音センサ
・温度センサ
・光センサ
にそれぞれ変えて数字がどのように変化するか確認してください。

音センサに息を吹きかけると風切り音で数字が変わります。
(音の強さを電圧に変換します)

温度センサを手で温めたり、熱を出しているパソコンの排気口に当てたりしても数字が変わります。
(温度の変化を電圧に変換します)

光センサを手で隠すと暗くなり数字が変わります。
(光の変化を電圧に変換します)

このように、arduinoではアナログ的に変化する物理情報を電圧に変換して各種センサーを簡単に使うことができます。


さて、入力を確認したところで出力の確認をしてみましょう。
・ボタンとリレーの接続

写真を参考にしてD5にボタンをD6にリレーを繋いでください

次にパソコンのデスクトップにあるdigital_outputフォルダを開き、そこにあるdigital_output.inoをダブルクリックして開きます。

このような感じの画面になりますので、通信設定を確認して→ボタンをクリックして書き込んでください。

次にArduinoに繋いだボタンを押すとリレーが「カチっ」という音をして動作します。
合わせてリレーにつけられているランプも点灯します。

動作を確認したら、リレーを外し、
・LED
・ブザー
を繋いで動作を確認してください。

なお、LEDには差し込む方向がありますので注意してください。

また、ボタンを押しても点灯しない場合、暗い場合にはLEDの基板に付いているボリュームを回すと点灯する場合があります。
適宜、調整してみてください。


最後にアナログ出力の確認をします。
・LEDの明るさをボリュームで変更する

写真を参考にしてA0にボリューム、D6にLEDを繋いでください。

次にパソコンのデスクトップにあるanalog_outputフォルダを開き、そこにあるanalog_output.inoをダブルクリックして開きます。

このような感じの画面になりますので、通信設定を確認して→ボタンをクリックして書き込んでください。

ボリュームを操作するとLEDの明るさが変わると思います。
これはボリュームの値によって電圧を無段階に変化(アナログ的に)させているためです。

確認をしたらボリュームを、
・音センサ
・光センサ
に交換して、息を吹きかけたり手でセンサを覆ったりして動作を確認してください。


一回めのセミナーの内容はここまでとします。
マイコンの制御はセンサーからの入力をモーターやランプなどに出力することで行われています。
今回の講義内容は、マイコンがどのようにして入力を検出したり、出力を行ったりしているかを説明いたしました。

次回は、実際のプログラムの中身や命令語について説明をいたします。
それを踏まえて、今は前進と後退しかできないクローラーロボットを旋回動作もしたりできるようにしてみたいと思います。