[Arduino02]プログラムコードをScratchと見比べながら理解する

たかはしです。

たかはしです。 これから数回に分けて、Arduinoで電子工作を楽しむポイントをお伝えしていきます。 第一回は、基本ともいえるL...

無事Lチカできましたか?

こういう短いコードを書くだけで電子機器の制御ができるのがArduinoの魅力です。

では、Lチカのプログラムを少し解説してみましょう。Scratchの知識があることを前提として、Scratchのブロックで説明してみますね。

Lチカのプログラム

int led = 11;

void setup() {
  // put your setup code here, to run once:
  pinMode(led,OUTPUT);

}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(led,HIGH);
  delay(1000);
  digitalWrite(led,LOW);
  delay(1000);

}

こちらがLチカのプログラムです。

大きくわけて、

  • 変数定義部分
  • Setup()関数
  • loop()関数

の3つのブロックに分かれています。

変数を定義する

int led = 13;

が変数定義部分です。変数を使う場合、プログラム中でいきなり使うのではなく、あらかじめ定義しておきます。今回の例であれば、int型(整数)のledという名前の変数を用意し、初期値として13を代入しています。

関数の中で定義しても良いのですが、setup()やloop()の外、今回のようにプログラムの頭で定義しておくと、各関数の中でも使えます(グローバル変数といいます)。逆に、setup()関数等の中で定義することもできます。これはsetup()関数の中でしか使えません(ローカル変数といいます)。変数の定義を書く場所によって変数を参照できる/できないが変わります。これを変数のスコープといいます。

Arduinoピンへの入出力

次に、

pinMode(led,OUTPUT);
digitalWrite(led,HIGH);

を理解するための説明です。

Arduinoはアナログ、デジタルの入出力ピンを持っています。Arduino UNOの場合、デジタルはD0〜D13、アナログはA0〜A5まであります。PWMやSerial、I2Cなどの機能もありますが、そこは必要に応じて徐々に覚えていきましょう。

pinMode(ピン番号,モード);

で、各ピンの使い方を設定します。今回は、11番ピン(D11)に接続したLEDを光らせたい、つまり、Arduinoから見ると制御信号を「出す」使い方をするので、OUTPUTを使います。逆に、ボタンやスイッチなどの状態をArduinoに「入力」する使い方の場合、INPUTを使います。

digitalWrite(ピン番号,出力値);

で、ピンに対して信号を書き出します。出力値は、HIGH/LOWで設定します。HIGHはON(電流が流れる:5V)、LOWはOFF(電流が流れない:0V)として一旦理解しておきましょう。今回の場合、11番ピン(D11)に接続したLEDに対し、HIGHとLOWの信号を交互に出力することで点けたり消したりしています。

ちなみにピン番号はすでに定義している変数led(中身は11です)を使っています。直接11と書いてももちろん動作します。

○秒待つための制御

最後に、

delay(1000);

です。こちらはシンプルに。Scratchでいうところの「待つ」ですね。秒ではなく、ミリ秒(1/1000秒)で書かれているため、秒を1000倍して書いてください。

Lチカのプログラムを理解できましたか?

こうして見てみると、Scratchも立派な言語ですね。Scratchの考え方を理解することによって他の言語を習得する際に役立ちますね。簡単でしょ?