Example Blinkのプログラムを調べる
今回は、前回テストしたBlinkのスケッチ(プログラム)をサンプルにして、スケッチの基本構成の説明を行います。
Sketch(スケッチ)
Arduino IDEでは、Arduinoのボードを動かすためのソフトウェアをSketch(スケッチ)と呼んでいます。原則、Arduino IDEで作成するソフトウェアをスケッチと呼びます。ただし、一般的なプログラムの側面から言及する場合には、プログラムと呼ぶ場合があるかもしれません。その場合は、同じものを異なった側面から話しているだけで、同じものを指しています。
最初のプログラム、Blinkのスケッチの中身
Blink のスケッチは、次の四つの部分より構成されています。原則、スケッチの構成はこのようになります。
1)スケッチの説明のコメント部分
/* から */ で囲まれた範囲はコメント(注釈)して、このスケッチの説明が記入されます。スケッチの機能としては必須ではありませんが、ソース・プログラムには詳細なコメントが必須ですので、後で確認する時に困らないようにできるだけ詳しいコメントをスケッチの頭に付記しておくことをお勧めします。
/* コメントの開始
* Blink スケッチ名が記入されています
* Arduinoの基本的な例題としてLEDを1秒間ごとに点滅します。
* 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
コメントの終了
*/
点滅の制御は、ディジタル・ポートの13番ピンを使用します。使用するボードによって、LEDの電流制限抵抗の状況が異なります。Arduino DuemilanoveまたはDiecimilaを使用するときは前回の例で示したようにブレッドボードで電流制限抵抗を経由してLEDに接続してください。このボードの内部の構成については、次回に詳しく説明する予定です。
1行から複数行にまたがるコメントは /* ~ */ で示しますが、2)~4)にある// は1行以内のコメントを示しています。 // から行末までがコメントになります。
電流制限抵抗:LEDはその発光する色やメーカ、品種によって、VFと呼ばれる電圧が異なります。また、IFと呼ばれる順方向電流という電流値も異なります。これらの値は、データシートに書かれていますが、適正な電圧や電流で利用するために、電源とLEDには直列に抵抗を入れます。たまたまこの抵抗を入れなくても、安全に点灯させることができる場合もありますが、ほとんどの場合、適正な抵抗値を計算して、その抵抗を入れて使います。
2)変数、定数の定義部
次の、int LedPin=13はスケッチの中で、LEDのオン/オフを行うポートの番号を定義しています。int は整数を定義します。スケッチの中で使用する変数、定数はこのように必ず定義してから使用します。定義せず使用するとエラーになります。いろんなタイプの変数、定数を定義できます。
int ledPin = 13; // LED connected to digital pin 13
整数:整数は、0、1、10などで、1.5とか3.143は実数です。マイコンでは、整数と文字を主に使います。
定数(じょうすう);プログラムの中では変化しない数値。変化するのは変数。
3)セットアップ部
void setup() でスケッチが起動されたとき、最初に一度だけ行う処理をこの記述の
{ から }
の間に記述します。void はseup() が結果を戻さない関数であることを示します。
void setup() // run once, when the sketch starts
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}
ここでは、pinModeと呼ばれる関数で、ledPinで示される13番のポートをOUTPUT、出力ポートとして設定します。
4)スケッチの処理部
loop()と呼ばれる関数がスケッチの処理部の本体で、{ から }の間に記述されている事項を先頭から順番に実行し、最後の行を実行したらまた先頭に戻りリセット、または電源を落とされるまで実行を繰り返します。void は loop() が値を戻さない関数であることを示しています。
void loop() // run over and over again
{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}
digitalWrite(ledPin, HIGH); は、ledPinで指定されるディジタル・ポート13の出力
をハイのデータを書き出します。前回の接続例では、
このポートをハイにするとLEDは点灯します。
digitalWrite(ledPin, LOW); では、ディジタル・ポート13をローにします。前回の接続例では、
この命令を実行するとledPinに接続されているLEDは消灯します。
delay(1000); では、()内に示された時間、待ち指定された時間が経過すると次に進みます。
上記の例では、ここで指定された時間だけLEDが点灯または消灯します。
点滅時間を変えてみる
このdelay(1000)の値を500、2000などと変更してスケッチをArduinoのボードにアップロードしてみて、LEDの点滅の状況がどのようになるか確認してください。
次回は、ハードウェアについて説明します。
<神崎康宏>





コメントする