Arduino言語の条件分岐のやり方
Arduino言語(C/C++ベース)では、条件分岐を主にif
、else if
、else
文やswitch
文を使って実現します。
if
条件が真(true)の場合に特定のコードを実行します。
構文
if (条件) {
// 条件が真の場合に実行されるコード
}
例
int sensorValue = analogRead(A0);
if (sensorValue > 500) {
digitalWrite(LED_BUILTIN, HIGH); // LEDを点灯
}
センサーの値が500を超えると、LEDが点灯します。
if-else
条件が真でない場合に別のコードを実行します。
構文
if (条件) {
// 条件が真の場合に実行されるコード
} else {
// 条件が偽の場合に実行されるコード
}
例
int sensorValue = analogRead(A0);
if (sensorValue > 500) {
digitalWrite(LED_BUILTIN, HIGH); // LEDを点灯
} else {
digitalWrite(LED_BUILTIN, LOW); // LEDを消灯
}
センサーの値が500を超えるとLEDが点灯し、それ以外の場合は消灯します。
if-else if-else
複数の条件を順に評価します。
構文
if (条件1) {
// 条件1が真の場合に実行されるコード
} else if (条件2) {
// 条件2が真の場合に実行されるコード
} else {
// すべての条件が偽の場合に実行されるコード
}
例
int temperature = 25;
if (temperature < 15) {
Serial.println("寒い");
} else if (temperature <= 25) {
Serial.println("快適");
} else {
Serial.println("暑い");
}
温度に応じて異なるメッセージを出力します。
switch
特定の値に基づいて複数の分岐を処理します。多くの条件を扱う場合に便利です。
構文
switch (変数) {
case 値1:
// 変数が値1の場合に実行されるコード
break;
case 値2:
// 変数が値2の場合に実行されるコード
break;
default:
// どの値にも一致しない場合に実行されるコード
break;
}
例
int buttonState = 2;
switch (buttonState) {
case 1:
Serial.println("ボタン1が押されました");
break;
case 2:
Serial.println("ボタン2が押されました");
break;
default:
Serial.println("ボタンが押されていません");
break;
}
buttonStateの値に応じて異なるメッセージを出力します。なお、break
がないと次のcase
も実行されるので注意が必要です。
条件式で使える演算子
条件分岐では以下の演算子をよく使います。
- 比較演算子:
==
(等しい)、!=
(等しくない)、<
、>
、<=
、>=
- 論理演算子:
&&
(AND)、||
(OR)、!
(NOT)
例
int a = 10, b = 20;
if (a > 5 && b < 30) {
Serial.println("両方の条件が真");
}
注意点
- 条件式の書き方: 条件式はtrueまたはfalseを返す必要があります。
- ブロックの使用:
{}
で囲まれたブロックを使うことで、複数行のコードを条件分岐内に記述できます。 - ネスト: 条件分岐を入れ子にすることも可能ですが、コードの可読性を保つため、深すぎるネストは避けましょう。
まとめ
- 単純な条件分岐にはifやif-elseを使用。
- 複数の条件を扱う場合はelse ifやswitchを活用。
- 条件式には比較演算子や論理演算子を組み合わせて柔軟に対応。
- 実際のArduinoプロジェクトでは、センサー値や入力に基づいて条件分岐を活用して制御を行います。
コメント