Arduinoチュートリアル 基礎編


スケッチ

原文

「スケッチ」はArduinoにおけるプログラムのことです。Arduinoボードにアップロードして実行するひとまとまりのコードを意味します。

 まず、LEDを点滅させるスケッチ"Blink"をアップロードしてください。このチュートリアルでは、そのスケッチの各部の働きを説明します。

【コメント】

Blinkスケッチの最初の何行かはコメントです。

/*
 * Blink
 *
 * The basic Arduino example.  Turns on an LED on for one second,
 * then off for one second, and so on...  We use pin 13 because,
 * depending on your Arduino board, it has either a built-in LED
 * or a built-in resistor so that you need only an LED.
 *
 * http://www.arduino.cc/en/Tutorial/Blink
 */

/*と*/の間はすべてArduinoから無視されます(各行の先頭にある"*"は見やすくするために入れたもので、必要ではありません)。コネントはコードを解読しようとする人のために、プログラムがなにをし、どう働き、なぜそう書かれたかを説明する目的で存在します。スケッチにコメントを残すこと、そして、コードを修正したらコメントにもそれを反映させることは良い習慣といえるでしょう。そうすることで、他の人があなたのコードから学んだり、修正を加えることが容易になります。

1行だけのコメントをつけるときには、別のもっと短いスタイルがあります。//から行末まではコメントです。

int ledPin = 13;                // LED connected to digital pin 13

この例では、"LED connected to digital pin 13"の部分がコメントです。

【変数】

変数はデータを格納する場所です。名前、型(type)、そして値を持っています。たとえば、Blinkスケッチの冒頭で宣言されている変数は、ledPinという名前、intという型、13という値で、LEDがArduinoボードのどのピンにつながっているかを示しています。コードのなかでledPinが現れるときはいつでもこの値が引き出されます。この例では、プログラムの作者は変数ledPinを生成するかわりに、13というピン番号を使うこともできました。しかし、そうせずに変数を使う利点は、LEDを他のピンに移動することが簡単になるからです。変数に初期値を書き込んでいる上記の1行だけを修正すればいいわけです。

スケッチの実行中に変数の値が変化することはよくあります。入力端子から値を読み取って変数に格納するような場合です。さらに詳しい説明は、このチュートリアルの「変数」の項を参照してください。

【関数】

関数はスケッチの別の部分から利用される、名前がつけられたコードの塊です。プロシージャあるいはサブルーチンと呼ばれる場合もあります。次にBlinkスケッチのsetup()関数の定義を示します。

void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
}

1行目はこの関数の名前が"setup"である、という情報を提供しています。関数名の前後にある文字は、この関数の型とパラメータ(引数)を指定しています。波カッコ{}に挟まれたコードがこの関数の実体であり、実際に仕事をする部分です。
あなたのスケッチの中で、あるいは、あらかじめArduino言語によって定義された関数を呼び出すことができます。上の例のpinMode(ledPin, OUTPUT);という1行は、pinMode()関数を呼び、ledPinとOUTPUTという2つのパラメータを渡します。pinMode()関数はこれらのパラメータを使用して、どのピンをどう設定するか決定します。

【pinMode、digitalWrite、delay】

pinMode()関数はあるピンを入力か出力のどちらかに設定します。設定したいピンの番号と、INPUTまたはOUTPUTの定数を渡すことでそれができます。入力に設定した場合、そのピンはプッシュボタンのようなセンサの状態を検知することができます。出力に設定すると、LEDのようなアクチュエータを駆動できます。

digitalWrite()関数はピンに値を出力します。たとえば次の行はledPin(ピン13)をHIGH(5ボルト)にセットします。HIGHのかわりにLOWと書けば、ピンは0ボルトです。

digitalWrite(ledPin, HIGH);

delay()は次の行へ進む前にArduinoを指定したミリ秒だけ待機させます。1秒は1000ミリ秒です。

delay(1000);

この行は1秒間、Arduinoの動きを止めます。

【setupとloop】

Arduinoのスケッチは必ずsetup()とloop()という2つの特別な関数を持っています。setup()はスケッチがスタートしたときに1度だけ呼び出されます。ピンモードやライブラリの初期化といった処理をするのに都合がいい場所です。loop()関数はスケッチの心臓部であり、繰り返し実行されます。もし一方の関数が不要だとしても、スケッチには両方を書く必要があります。


[目次へ戻る]

Creative Commons Attribution-ShareAlike 3.0 License.
このドキュメントはArduino Teamにより執筆され、Takumi Funadaが翻訳し、一部加筆修正したものです
ご意見はtf at musashinodenpa.comまでお送りください [Arduino wiki]