⑧Arduinoで楽しもう!
≪今回の記事はモジュール関数(コードの集合)についてです≫
見出しにあるような、『関数』と聞くと、まっ先に 数学などの三角関数や1次関数、2次関数などを思い浮かべるのではないでしょうか?
もちろんそれらの、数学的な関数
三角関数 sin(rad) cos(rad) tan(rad) などもありますが。実はプログラミングにもあります。
『関数』は、ある「変数」を入れると、それによって決まる「値」や「式」とイメージしてください。
例えば
f(x) = x + 20 でこの関数f は、変数xによって値が決まります。
例として xが15ならば f(15) = 35 になります。
Arduino関数も、考え方は似てますが、計算処理以外にもいろいろなことが可能になります。
機能ごとに分割して特定の仕事をこなすことが可能で、このモジュール単位を『関数(function)』と呼びます。
プロシージャあるいはサブルーチンと呼ばれる場合もあります。
■コードを関数化(モジュール)することのメリットはいくつもあります。
1.関数は、プログラムをコンパイルするときに、
エラーが出にくく、出たとしてもデバックが容易
2.関数は、同じ処理を同じ場所にまとめてくれるので、
コーダーが何度も考えたり、繰り返し修正する必要が少なくなる。
3.関数は、スケッチのサイズを小さくします。
メモリ容量に優しい。それにより使用効率がよくなります。
4.関数は、コードを他のプログラムで再利用することが容易になります。 5.関数は、とても秩序立ったプログラムの状態を保てます。
■モジュール化イメージ図
■構造化思考
関数の組み合わせで、単純な処理から、複雑な処理にできるようになります。もし関数がないと、とても長いスケッチになってしまい、他人が見てわからないだけでなく本人も読み返したときに分からなくなる可能性があります。
そういうときに意味のあるかたまりごとに処理をひとまとめにして、サブアッシー部品のようにすることで頭の中が整理されます。
その意味のある塊のモジュール関数を、つなぎ合わせて「スケッチ」の全体をつなぎ合わせることで大きな部品を作ることが可能です。
部品の部分が1回書いておけば何度も再利用ができます。
そしてなによりも、省力化・効率化が可能です。
■具体的なやり方
下図のように、画面上部メニューを選択します
ライブラリ内の関数をスケッチで使いたいときは、ヘッダーファイルの宣言が必要です。呼び出し方はメニューの「スケッチ」タブ→「ライブラリをインクルード」をクリックします。
ZIPファイルは、PCの管理しやすいパスで管理しておきます
下の↓ この例では、サーボモータを制御するために利用されるServoライブラリをインクルードします
#include <Servo.h>
Servo myservo; // create servo object to control a servo
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
for (int pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for (int pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}
■モジュール関数 ライブラリについて
Arduinoの考え方のオープンソースな世界では、自前のモジュール関数をサイトで公開しており、それを利用することもできます。
公開されているモジュール関数も、モーター制御やインターネット接続など沢山あるので必要なときに使えます
日々世界中で新たな関数がつくられ、公開されております
その中でも大別して、標準ライブラリ・寄贈ライブラリ・非公式ライブラリなどがありますが、標準ライブラリは、Arduinoインストールと同時に一緒に入ってきます。下記参考までに。
https://www.arduino.cc/en/Guide/Libraries
話しはかわりますが、私はプログラムというかノートPCソフトを使う時、下図のようないずれかのスタンドを使います。疲れ防止です。かなりお薦めです!
ここまで読んで頂き、ありがとうございます!
今回の記事はここまでになります。
もしよろしければ、フォロー・いいね頂けると嬉しいです!
次回は、プログラムをわかりやすく、思考を体系化する「フローチャート」
について投稿予定です。それでは 次回の記事でお会いしましょう!