【Arduino】世界一有名(?)なスケッチ「blink.ino」を徹底解説

アイキャッチ-Arduino Arduino
この記事は約5分で読めます。

Arduinoを触り始めて一番最初に触れるスケッチは通称「Lチカ」、サンプルスケッチの「blink.ino」ではないでしょうか。
同時に世界一有名で、世界一たくさん実行されてるスケッチかもしれませんね。(だってみんな最初に試すもん…)
このblink.inoについて、処理の中身や実際の動作の様子を詳しく見ていきたいと思います。

ポイントは、「電子回路から見た見たArduino」「プログラミングからで見たArduino」を理解することだと考えています。
電気とプログラミングの両方を理解する必要があることがポイントであり、特に初心者にとってのつまづきポイントではないかと思います。

後日それぞれまとめてみたいと思います。
今はこのまま、

改めて「blink.ino」を見てみる

ということで、blink.inoの全文を載せてみます。

ArduinoIDEでの表示と色が違いますが、なんか気づきません?

実は半分以上「コメント」じゃね?

そう。このプログラム、半分以上コメントなんです(笑)

まず冒頭の「/*」から「*/」で囲まれた部分(1~23行目)は、すべてコメントです、実際のプログラムの動作には影響しない部分です。
ここではスケッチの動作内容についての説明やスケッチの変更履歴が書かれています。

ざっくり和訳するとこんな感じですかね。↓

このスケッチを利用する上で重要なメモ書きですが、スケッチの動作そのものには影響しません。

Arduinoのコメントの書き方にはもう一つあります。「//」(スラッシュ2回)と記入すると、その行の「//」以降がすべてコメントになります。

1行目は行の頭に「//」があるので1行丸ごとコメント、3~6行目は途中に「//」があるのでそれ以降がすべてコメントです。

コメントについては以前エントリにまとめているのでそちらも時間のある時に読んでみてください。
コメントを制する者はプログラミングを制す?【コメントをガンガン使おう】

あ、ちなみにコメントには日本語(2バイトコード)を入力することもできますが、しょーもないミスを招くことがあるのでご注意を。
これを防ぐ意味も込めて、私はコメントは雰囲気英語で書くことが多いです。

スケッチの実行順

スケッチに書かれた命令は基本的に「上から順番に」実行されます。

setup()はArduinoの電源を入れた直後やリセットをかけた直後に1回だけ実行し、その後はloop()を無限ループで実行します。

電源を入れると、
setup()を上から→loop()を上から→loop()を上から→loop()を上から→loop()を上から→…
という順番で命令が実行されていきます。

順番に見ていきましょう。

setup()部分

1行目は先頭に「//」があるのですべてコメントですね。
ちなみに和訳すると「setup関数はリセットボタンを押した時や電源を入れたときに1度だけ実行します」という意味です。

2行目はここからsetup()部分とするという命令で、5行目の「} (閉じカッコ)」までがsetup()の内容になります。

3行目も丸ごとコメントになっています。和訳すると「LED_BUILDIN のピンを出力モードで初期化します」。

そして4行目でpinMode命令を実行し、LED_BUILTINのピン(ここではD13ピン)を出力に設定します。

 

setup()部分ではこれだけのことを行っています。
そして、コメントの通りリセットボタンを押した時や電源を入れたときに1度だけ実行します。

loop()部分

つづいてloop()部分を見ていきましょう。

こちらも1行目はいきなりコメントです。「loop関数は永遠に実行し続けます」。
永遠にとか言ってますが電源切ったらそこまでです(笑)

2行目はここからloop()部分とするという命令で、7行目の「} (閉じカッコ)」までがloop()の内容になります。

そして3行目が「digitalWrite(LED_BUILDIN,HIGH);」。コメント通り、LEDのつながっている(ArduinoUNOではD13)ピンにHIGHを出力し、LEDを光らせます。

4行目は「delay(1000);」。1000ミリ秒(=1秒)の間、スケッチの実行を止めて待ちなさいという意味です。

その後、5行目で「digitalWrite(LED_BUILDIN,LOW);」。LEDのつながっている(ArduinoUNOではD13)ピンにLOWを出力し、LEDを消灯します。

6行目は4行目と同じで1000ミリ秒間、スケッチの実行を止めて待ちます。

6行目の時間待ちが終わったらこれでloopの終わりまで来ましたので、またloop部分の先頭に戻って同じことを繰り返します。

結果的に、
LED点灯→1000ミリ秒待つ→LED消灯→1000ミリ秒待つ→LED点灯→1000ミリ秒待つ→LED消灯→1000ミリ秒待つ→LED点灯→…
という動作を繰り返します。

動画で確認

以上を、動画で確認してみましょう。
delay命令の数字(スケッチの動作を止めて待っている時間)を変えるとどうなるのか、についても実験をしています。
(後日追加します(o_ _)o)))

「blink.ino」を動かしてみる【Arduino】

自分でやってみよう

Arduinoや部品、スターターキットを持っている方はぜひ自分で確かめてみてください。

コメント

タイトルとURLをコピーしました