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:
}
点滅しましたか?
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ミリ秒停止)
}
setup( )関数に、
pinMode(13,OUTPUT);
を残したのは、pinの操作モード設定は、
初期設定すれば(1度だけ行えば)良いからです。
loop( )関数に記述しても動作しますが、
Arduinoにしてみれば、繰り返じ実行する度に、
pinMode(13,OUTPUT);
と指示されても、既にOUTPUTに設定されていることになり、
無駄な処理になります。