Arduinoのスケッチ

スケッチがどのように動作し、Arduinoにアップロードされるのか理解します。


LAST REVISION: 2022/08/19 17:23


Arduinoを始めるためのガイド(WindowsMacOSLinux)では、LEDを点滅させるスケッチをアップロードしました。子のチュートリアルでは、スケッチの各部がどのように動作するかを学びます。

Arduinoで使うプログラムをスケッチと呼びます。Arduinoにアップロードし、実行するコードの単位です。

コメント

Blinkの最初の数行はコメントです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
/*

 * 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"というメッセージがコメントです。

変数

変数はデータを格納するための場所です。名前と型、値を持ちます。例えば、上記のBlinkのスケッチでは、ledPinという名前で、int型、初期値が13の変数を宣言しています。ArduinoのどのピンがLEDに接続しているのかを示すために使われています。コードでledPinという現れるたびに、その値が取得されます。この場合、プログラムを書く人はledPinという変数を作成せずにピン番号を指定する全ての場所で13と書くこともできました。変数を利用する利点は、LEDを他のピンに接続することが簡単になることです。変数の初期値を設定する1行だけを編集するだけで済みます。

しかし、変数の値がスケッチの動作中に変化することはよくあります。例えば、入力から読み取った値を変数に格納することができます。スケッチで変数を利用するにより多くの情報があります。

関数

関数(プロシージャやサブルーチンとも呼ばれます)は、スケッチのどこからでも利用できる、名前を持つコードの集まりです。例えば、Blinkの例にあるsetup()関数の定義を以下に示します。

1
2
3
4
5
void setup()
{

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

1行目は、“setup"というような名前等の関数に関する情報を提供します。名前の前後の文字列は戻り値の型とパラメータを示します。これらについては後で説明します。{}の間のコードは関数のボディと呼ばれます。関数が何をするのかを表します。

既に定義されている関数(スケッチ内やArduino言語)を呼び出すことができます。例えば、pinMode(ledPin, OUTPUT);は、ledPinOUTPUTという二つのパラメータを渡し、pinMode()という関数を呼び出します。これらのパラメータは、どのピンをどのモードに設定するのかを決定するために、pinMode()関数で利用されます。

pinMode()、digitalWrite()、digitalRead()

pinMode()関数はピンを入力か出力に設定します。利用するには、設定するピンの番号と定数のINPUTもしくはOUTPUTを渡します。入力として設定した場合、ピンは押しボタンのようなセンサーの状態を検出することができます。これは、digitalRead Serial Tutorialで説明されています。出力のときは、LEDのようなアクチュエータを制御することができます。

digitalWrite()関数はピンに値を出力します。例えば、以下の行は、

1
digitalWrite(ledPin, HIGH);

ledPin(13番ピン)をHIGHもしくは5Vを出力します。LOWを書くと、ピンを接地もしくは0Vにします。

delay()は次の行に進む前に、指定した値(ミリ秒)だけArduinoを待たせます。1秒は1000ミリ秒なので、以下の行は、

1
delay(1000);

1秒間の遅延を起こします。

setup()とloop()

全てのArduinoのスケッチには、setup()loop()という二つの特別な関数がそんざいします。setup()はスケッチが開始したときに一度だけ呼ばれます。ピンのモードの設定やライブラリの初期化を行うのに適した場所です。loop()はスケッチの心臓部で、繰り返し呼ばれます。それぞれの関数で何もしない場合でも、スケッチには両方の関数を含める必要があります。

演習

  1. LEDが100ミリ秒点灯、1000ミリ秒消灯するようにコードを修正しなさい。
  2. スケッチが開始したときにLEDが点灯し、その後点灯したままになるようにコードを修正しなさい。

参照

オリジナルのページ

https://docs.arduino.cc/learn/programming/sketches

最終更新日

October 23, 2022

inserted by FC2 system