しなぷすのハード製作記

「スケッチ」の解説

ツイート
シェア
このエントリーをはてなブックマークに追加
フォロー
2017年05月16日 更新。
用語:スケッチ
読み:スケッチ

概要

スケッチとは、Arduinoを制御するプログラムの事です。Arduinoは、芸術家などコンピュータに詳しくない人にでも、簡単に使える事を目指しているマイコンだという事もあり、プログラムの事を、スケッチという独特の用語で表わします。

簡単なスケッチの例として、シリアルポートに9600bpsで"Hello, world!"というメッセージを出力し続けるスケッチを、リスト1に示します。

リスト1、シリアルポートに9600bpsで"Hello, world!"と出力し続けるプログラム
void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println("Hello, World!");
}

Arduinoはプログラム言語としてはC++を使いますが、コンパイラにソースコードを渡す前に、独特の前処理をします。

例えば、基本的な型の宣言や入出力関数などのよく使うライブラリなどは、暗黙的にインクルードされます。そのため、#include指令が少なくなり、ソースコードが見やすくなります。

さらに、いくつかのオブジェクト変数は、暗黙的に宣言されます。リスト1のSerialという変数も、暗黙的に宣言されたオブジェクト変数です。Serial変数は、シリアルポートの操作をカプセル化したオブジェクト変数です。

また、C++では必須のmain関数を記述しません。その代わり、setup関数とloop関数を必ず記述する事になっています。

setup関数は、実行時に最初に1回だけ処理する内容を記述する関数です。

一方でloop関数は、setup関数が処理された後に、繰り返し処理する内容を記述する関数です。

つまり、リスト2に示す様なmain関数が暗黙的に宣言されていると考える事ができます。

リスト2、暗黙的に宣言されるmain関数
int main() {
  setup();
  while(1) {
    loop();
  }
}

また、使う関数の本体が、使う場所よりも後方で宣言されていても、その関数のプロトタイプ宣言をする必要はありません。前処理でプロトタイプ宣言が自動的に挿入されます。

例えば、リスト3のスケッチでは、dblという関数は、使用される場所よりも後方で宣言されていますが、プロトタイプ宣言を行っていません。

リスト3、プロトタイプ宣言なしに関数を使う例
void setup() {
  Serial.begin(9600);
  Serial.println(dbl(5)); // 10と表示される
}

void loop() {
}

int dbl(int n) { // 引数の倍を返す関数
  return 2*n;
}

もちろん、次の様なプロトタイプ宣言をsetup関数の前で行ってもエラーにはなりません。

int dbl(int);

ライブラリを使用する場合には、特定のヘッダファイルを明示的にインクルードする必要があります。例えばリスト4は、リスト1と同じ処理をソフトウェアシリアルによって実現するスケッチですが、冒頭でSoftwareSerial.hというヘッダファイルをインクルードしています。

リスト4、ソフトウェアシリアルライブラリを使用する例
#include <SoftwareSerial.h>

SoftwareSerial MySerial(0,1);

void setup() {
  MySerial.begin(9600);
}

void loop() {
  MySerial.println("Hello, World!");
}

SoftwareSerial.hをインクルードするだけで、ソフトウェアシリアルライブラリがリンクされる様になっているため、makeファイルを記述する必要が全くなくなっています。

以上の様な、暗黙的に行われる前処理のおかげで、Arduinoのスケッチは、標準的なC++でプログラムを記述する場合より、記述量が少なくなる傾向にあります。

ツイート
シェア
このエントリーをはてなブックマークに追加
フォロー

関連用語

このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。
こちらのページもおすすめです。
サイトマッププライバシーポリシーお問い合わせ用語集
しなぷすのハード製作記