UNO本体 13番PINのLEDを点滅させてみる(Arduino)

今回は、スケッチを記述して、
Arduino UNO本体の13番PINのLEDを点滅させてみます。

では、実際にIDEで記述してみます。
ArduinoIDEを起動すると、前回のプログラムが表示されています。
このプログラムを書き換えても良いのですが、
新しいシートを用意します。
メニュー「ファイル」→「新規ファイル (Ctrl+N)」で準備します。

検証(コンパイル)は、スケッチファイルが保存されている必要があります。
そのため、文法確認のため検証アイコンや
マイコンボートに書き込むため、マイコンボードに書き込むアイコンをクリックすると、
その時タブに表示されている名前で自動的に保存されます。
この名前は、は日付ベースで自動的に割り付けられるため、
あとで探しにくい場合もあります。
しにため、メニューの「ファイル」→「名前を付けて保存 (Ctrl+Shift+S)」で
適切な名前を付けて保存してから検証、マイコンボードへ書き込みされるとよいです。

では、13番Pinのを点滅させるスケッチです。

下記の記述で、
void setup() {
  // put your setup code here, to run once:
  pinMode(13,OUTPUT); // デジタルPIN(13)を出力用として設定
  digitalWrite(13,HIGH); // デジタルPIN(13)へ5Vを出力
}
LEDが点灯するようになったと思います。

続いて点滅させてみます。
条件を決めます。
1秒点灯→1秒消灯→1秒点灯→1秒消灯
として考えてみます。
点灯させるのは、
 digitalWrite(13,HIGH);
で可能でした。
消灯させるには、
 digitalWrite(13,LOW);
とすれば可能です。
ですが、この2つの動作の間に1秒のブランク(間隔)が必要になります。
ある時間停止(待機)させる関数を使ってみます。
delay( )関数です。
 書式は、delay(マイクロ秒)
 この関数は、引数で設定したマイクロ秒だけそこで停止(待機)する
 というもです。
 1秒(1000マイクロ秒)停止したいので、
 delay(1000)となります。

決めた条件を満たすプログラムは、
 pinMode(13,OUTPUT);
 digitalWrite(13,HIGH);
 delay(1000);
 digitalWrite(13,LOW);
 delay(1000);
 digitalWrite(13,HIGH);
 delay(1000);
 digitalWrite(13,LOW);
となります。

では、IDEで記述してみます。

void setup() {
   // put your setup code here, to run once:
   pinMode(13,OUTPUT);
   digitalWrite(13,HIGH);
   delay(1000);
   digitalWrite(13,LOW);
   delay(1000);
   digitalWrite(13,HIGH);
   delay(1000);
   digitalWrite(13,LOW);
}
 void loop() {
   // put your main code here, to run repeatedly:
}
setup( ) 関数の利用
setup( ) 関数の利用

点滅しましたか?
2回だけ!

そう、点灯、消灯を2回繰り返しただけでした。
これを、電源が入っている間繰り返したいとなると、
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
の組み合わせを何回記述すれば良いのだろう?
コピーすればかなりの数、書くことはできるが、
動作時間が分からなければ無理ですね。

そこで登場するのが、この関数ブロックです。
void loop() {
  // put your main code here, to run repeatedly:
}
この関数に書かれた内容は、
電源が供給されている間、永遠に繰り返されることになっています。
では、
void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(13,HIGH);   ---①
  delay(1000);       ---②
  digitalWrite(13,LOW);   ---③
  delay(1000);       ---④
}
これで、
①→②→③→④→①→②→③→④→①・・・・
と繰り返される。
では、記述を修正してみることにします。

void setup() {
   pinMode(13,OUTPUT); // デジタルPIN(13)を出力用として設定
 }
 void loop() {
   // put your main code here, to run repeatedly:
   digitalWrite(13,HIGH);  // デジタルPIN(13)へ5Vを出力
   delay(1000);            // 1秒停止(1000ミリ秒停止)
   digitalWrite(13,LOW);   // デジタルPIN(13)へ0Vを出力
   delay(1000);            // 1秒停止(1000ミリ秒停止)
}
loop( )関数の利用
loop( ) 関数の利用

setup( )関数に、
pinMode(13,OUTPUT);
を残したのは、pinの操作モード設定は、
初期設定すれば(1度だけ行えば)良いからです。
loop( )関数に記述しても動作しますが、
Arduinoにしてみれば、繰り返じ実行する度に、
pinMode(13,OUTPUT);
と指示されても、既にOUTPUTに設定されていることになり、
無駄な処理になります。