Arduino Nano R4の活用 ③ LEDを点滅するスケッチ スケッチの説明<第1回>
●スケッチの構造
コンピュータはソース・プログラムをコンパイルして実行するコードを作り、コンピュータのメモリに転送してから動きます。昔から、電子工作などではコンピュータをマイコンと呼んでいます。
プログラムを書く(コーディングする)言語は世の中にたくさんありますが、C言語やC++言語はよく使われます。Arduinoのスケッチでは、Arduino特有の言語が用意されていますが、コンパイルすると何度か出てきましたが、矢印のアイコンをクリックすると、一度C++言語に変換され、C++のコンパイラで、実行できるコードになります。
C言語のルールと同じように、コメントは // 以降に書きます。/* と */ に挟むようにもコメントを書くことができます。
C言語ではmain()が必ずありますが、Arduinoでは隠されています。その代わりに、
- 一度だけ実行したい処理 setup()
- なんども繰り返したい処理 loop()
が用意されています。これで終わりですという処理は書きません。これはマイコン特有な理由からです。常に何かを繰り返し行うということをマイコンにやらせたいのが普通だからです。
Blink.inoのスケッチです。
●コンパイル
コンパイルのアイコンをクリックすると、コンパイル、リンク、実行プログラムのマイコンへの書き込みが行われます。
スケッチの下側の黒字の領域に、処理が行われている様子が表示されます。エラーが起こると途中で中断します。
●コメント
コメントとは注釈文で、プログラムには何も寄与しません。しかし、コメントは残しておくようにしないと、あとで見た時に、何をしていたかがわからないことがあります。昨日の自分は他人です。
●Blink.inoで出てきた命令
digitalWrite(LED_BUILTIN, HIGH);
LED_BUILTIN端子をHIGHにします。このマイコンでは5Vになります。
LED_BUILTIN端子をLOWにします。このマイコンでは0Vになります。
HIGHとLOWはArduino言語では最初から定義されている定数なので、大文字のつづりで使います。
HIGHを1、LOWを0と記述しても同じ処理になります。
ただHighやhighは未定義なので、コンパイル時にエラーになります。
利用したい場合は、自分で宣言します。
int high = 1; // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, high); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second
delay(1000); // wait for a second
コメントにあるように1秒待ちます。単位はmsです。0.5秒なら500ですね。
最初単位の1を指定してオシロスコープで観測します。
void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(D13, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(D13, HIGH); // turn the LED on (HIGH is the voltage level) delay(1); // wait for a second digitalWrite(D13, LOW); // turn the LED off by making the voltage LOW delay(1); // wait for a second }
1/1000単位で停止できる関数が、
delayMicroseconds(us)
です。
最小単位が1usですが、実行してみると、サイクルは2usではなく5.87usになりました。これは、