Arduinoのスケッチ

前回、回路とプログラムの作成を駆け足で行いました。
今回はプログラムの作成を少し掘り下げてみようと思います。

LEDを光らせたプログラムの動きと流れを掴む

下記にあるのは前回までに作成した、LEDを光らせるためのプログラムコードです。

// setup - Arduinoを起動した際に最初に呼ばれる処理
void setup() {
    // Arduinoに13番ピンを出力用として設定する
    pinMode(13, OUTPUT);
}
// loop - setupの処理が終わった後、電源が切れるまでloop内の処理を繰り返す
void loop() {
    digitalWrite(13, HIGH); //13番ピンの出力する
    delay(1000); //1000ミリ秒 = 1秒待つ
    digitalWrite(13, LOW); //13番ピンの出力をしない
    delay(1000); //1000ミリ秒 = 1秒待つ
}

プログラミングが初めての方は取っ付きにくいかもしれませんが、一つ一つ調べていくうちに慣れてきます。
プログラミング「言語」というくらいなので、それぞれの言語に文法があり、
その文法に従ってコンピューターに命令をしていきます。
コンピューターに対して順を追って命令をしていくことで、
プログラミングを通してコンピューターに目的を達成してもらいます。
プログラムで命令した事しかコンピューターはやってくれません。
Arduinoはプログラミングする事を「スケッチ」と呼ぶくらいシンプルにできているようです。
ある一つの動作をさせたい場合、コンピューターの細かい挙動まで命令する必要があるプログラム言語が多いですが
Arduinoはとても簡単にそれらの操作を記述することができます。

Arduinoの基本構造:setupとloop

Arduinoのプログラムは、基本的にsetup()loop()の二つの構造で動いています。

setup()関数

// setup - Arduinoを起動した際に最初に呼ばれる処理
void setup() {
    // Arduinoに13番ピンを出力用として設定する
    pinMode(13, OUTPUT);
}

setup()関数は、Arduinoに電源が入って起動した時に
一番最初に一回だけ呼ばれる処理です。
ここではピンの状態を設定したりするのに利用します。

setup() – Arduinoを起動した時に一番最初に呼ばれる

LEDを光らせるプログラムでは、pinMode()という命令を記述しています。
このpinMode()というのは、Arduinoの数あるピンの中でどのピンをどうやって利用するか設定する命令です。
pinMode(13,OUTPUT);なら、13番ピンを出力として利用すると宣言しています。
pinMode(13,INPUT);と宣言すると、
13番ピンに接続した線からArduino本体に電流が流れた時に、
13番ピンはその値をArduino本体へ入力命令として利用することができます。

loop()関数

// loop - setupの処理が終わった後、電源が切れるまでloop内の処理を繰り返す
void loop() {
    digitalWrite(13, HIGH); //13番ピンの出力する
    delay(1000); //1000ミリ秒 = 1秒待つ
    digitalWrite(13, LOW); //13番ピンの出力をしない
    delay(1000); //1000ミリ秒 = 1秒待つ
}

Arduinoではこのloop()部分がプログラミングのメインとなります。
このloop()関数はArduinoが起動して、setup()の処理が終わった後に
Arduinoの電源が切れるまでずっとこのloop内の処理を行います。

loop() – setup()の後に開始しArduinoの電源が切れるまでずっと繰り返される

具体的にloop()関数の中身をみていきましょう。

    digitalWrite(13, HIGH); //13番ピンの出力する

このdigitalWrite()関数は、指定したピン番号に対して
電流を出力する時に利用します。出力は基本5Vとなります。

    delay(1000); //1000ミリ秒 = 1秒待つ

次にdelay()関数が記述されています。
この関数はArduinoを指定した時間待機させる命令となります。
ここでは、LEDを光らせたままの状態で1秒待っています。

    digitalWrite(13, LOW); //13番ピンの出力をしない
    delay(1000); //1000ミリ秒 = 1秒待つ

その後すぐに今度はdigitalWrite関数を利用して、
出力をLOW(0V)にしてLEDを消した状態で、再度delayで1秒待っています。

この一連の流れを整理すると、

  1. loop()関数内で処理がスタート
  2. 13番ピンに5V出力:LEDの点灯-digitalWrite(13,HIGH);
  3. 1秒待機:delay(1000);
  4. 13番ピンに0V出力:LEDの消灯-digitalWrite(13,LOW);
  5. 1秒待機:delay(1000);
  6. loop()関数の先頭から処理を継続

となり、これがLEDを1秒おきに点滅させるプログラムになります。

  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA