注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ ここ]をクリックして今すぐ参加しましょう!
スケッチの記述ルール
友人に「電気をつけて」と頼む時、「電気をつけてください」とも「ライトオン、ブロ」とも言えます。どんな口調でも構いません。
しかし、Arduinoボードに何かをさせたい場合は、Arduinoプログラムの記述ルールに従ってコマンドを入力する必要があります。
この章では、Arduino言語の基本ルールについて説明し、自然言語をコードに翻訳する方法を理解するのに役立ちます。
もちろん、これは慣れるまで時間がかかるプロセスであり、初心者にとっては最もエラーが発生しやすい部分ですので、何度も間違えることがあっても大丈夫です。何度か試してみてください。
セミコロン ;
手紙を書く時、文の終わりにピリオドを打つように、Arduino言語では ; を使ってボードにコマンドの終わりを伝える必要があります。
よく知られている「onboard LED blinking」の例を見てみましょう。正常なスケッチは以下のようになります。
例:
void setup() {
// put your setup code here, to run once:
pinMode(13,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
次に、以下の2つのスケッチを見て、実行する前にArduinoが正しく認識できるかどうかを推測してみましょう。
スケッチA:
void setup() {
// put your setup code here, to run once:
pinMode(13,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13,HIGH)
delay(500)
digitalWrite(13,LOW)
delay(500)
}
スケッチB:
void setup() {
// put your setup code here, to run once:
pinMode(13,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13,
HIGH); delay
(500
);
digitalWrite(13,
LOW);
delay(500)
;
}
結果は、 スケッチA がエラーを報告し、 スケッチB が実行されます。
スケッチA のエラーは
;がなく、見た目は正常ですが、Arduinoは読み取れません。スケッチB は人間に反するように見えますが、実際にはArduinoプログラムではインデント、改行、空白は存在しないため、Arduinoコンパイラには例と同じように見えます。
しかし、 スケッチB のようにコードを書かないでください。通常、コードを書いて見るのは自然な人間ですので、自分自身を困らせないでください。
中括弧 {}
{} はArduinoプログラミング言語の主要な構成要素であり、必ずペアで現れる必要があります。
より良いプログラミングの慣習は、左の中括弧をタイプした直後に右の中括弧を挿入し、カーソルを中括弧の間に移動して文を挿入することです。
コメント //
コメントはコンパイラが無視するスケッチの部分です。通常、プログラムの動作を他の人に伝えるために使用されます。
コードの行に隣接するスラッシュを2つ書くと、その行の終わりまでのすべてがコンパイラによって無視されます。
新しいスケッチを作成すると、2つのコメントが付いてきますが、これらのコメントを削除しても、スケッチには何の影響もありません。
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
プログラミングではコメントが非常に役立ちます。以下にその一般的な使用例を挙げます。
使用例A:自分自身や他人に、このコードのセクションが何をするかを伝えます。
void setup() {
pinMode(13,OUTPUT); //Set pin 13 to output mode, it controls the onboard LED
}
void loop() {
digitalWrite(13,HIGH); // Activate the onboard LED by setting pin 13 high
delay(500); // Status quo for 500 ms
digitalWrite(13,LOW); // Turn off the onboard LED
delay(500);// Status quo for 500 ms
}
使用例B:いくつかの文を一時的に無効にする(削除せずに)し、使用する際にコメントを外します。これにより、再度書く必要がなくなります。これはコードのデバッグやプログラムのエラーを特定する際に非常に便利です。
void setup() {
pinMode(13,OUTPUT);
// digitalWrite(13,HIGH);
// delay(1000);
// digitalWrite(13,LOW);
// delay(1000);
}
void loop() {
digitalWrite(13,HIGH);
delay(200);
digitalWrite(13,LOW);
delay(200);
}
注釈
ショートカットキー Ctrl+/ を使用して、コードのコメントの付け外しを迅速に行うことができます。
コメント /**/
// と同様のコメントです。このタイプのコメントは複数行にわたることができ、コンパイラが /* を読み込むと、 */ に遭遇するまで続くすべてを無視します。
例1:
/* Blink */
void setup() {
pinMode(13,OUTPUT);
}
void loop() {
/*
The following code will blink the onboard LED
You can modify the number in delay() to change the blinking frequency
*/
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
#define
これはC++での便利なツールです。
#define identifier token-string
コンパイラは identifier を読み込むときに自動的に token-string に置き換えます。これは通常、定数の定義に使用されます。
例として、defineを使用したスケッチを以下に示します。これによりコードの可読性が向上します。
#define ONBOARD_LED 13
#define DELAY_TIME 500
void setup() {
pinMode(ONBOARD_LED,OUTPUT);
}
void loop() {
digitalWrite(ONBOARD_LED,HIGH);
delay(DELAY_TIME);
digitalWrite(ONBOARD_LED,LOW);
delay(DELAY_TIME);
}
コンパイラにとって、実際は以下のように見えます。
void setup() {
pinMode(13,OUTPUT);
}
void loop() {
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
identifier は置き換えられてプログラム内には存在しません。
したがって、使用する際にはいくつかの注意点があります。
token-stringは手動でのみ変更でき、プログラム内の算術で他の値に変換することはできません。;などの記号の使用を避けること。例えば、
#define ONBOARD_LED 13;
void setup() {
pinMode(ONBOARD_LED,OUTPUT);
}
void loop() {
digitalWrite(ONBOARD_LED,HIGH);
}
コンパイラは以下のように認識し、エラーが報告されます。
void setup() {
pinMode(13;,OUTPUT);
}
void loop() {
digitalWrite(13;,HIGH);
}
注釈
#define の命名規則としては、変数との混同を避けるために identifier を大文字にすることが一般的です。