在Arduino编程中,当代码的执行被一些条件语句所控制时,就会用到控制语句。这些控制语句可以通过不同的语句实现,如if语句、if-else语句和switch-case语句。这些语句在现实生活中是非常有用的,比如我们可以控制路灯的运行;当白天的时候,灯应该被关掉,否则就打开。同样,如果电机的温度比环境温度高,为了保护电机,应该关闭电机的电源。
在这篇文章中,这些控制语句将通过流程图的演示以及简单的例子来解释。
Arduino中不同类型的控制语句是什么?
有不同类型的控制语句,将逐一进行详细解释。
if 语句:if语句 "是控制语句的最简单形式,其中的语句被写在 "if语句 "的主体中,只有当条件为真时,主体中的语句才会被执行,否则编译器就会执行下一个语句。if语句 "用于在满足单一条件的情况下执行操作。使用 "if 语句 "的流程图是。

在流程图中,很明显,如果条件为真,那么它将执行正文中的语句,如果条件为假,它将简单地跳过这些语句,转到下一个语句并执行它们。考虑一个例子,如果我们想在变量 "a "的值为4时,使用if语句打印 "Welcome to LinuxHint",代码将是。
int a=4;
void setup(){
Serial.begin(9600);
if (a==4){
Serial.println(“Welcome to LinuxHint”);}
}
void loop(){
}

输出结果将是:

如果我们将变量a的值从4改为3,输出将为空。
解释一下:在第一段代码中,我们声明一个变量 "a "的值为4,并应用一个if条件,如果a==4,就打印 "欢迎来到LinuxHint"。在第一段代码中,条件为真,所以它在串行输出显示器上打印了输出。
if-else语句:if-else语句 "是另一种类型的控制语句,也是 "if语句 "的高级形式,其工作方式是 "非此即彼",即如果一种情况为假,就会执行另一种情况。大多数情况下,它被用于通过使用检查来控制操作。例如,如果一个房间的温度低于30度,打开绿色LED,这意味着温度是正常的,或者打开红色LED,这意味着温度高于30度。通过流程图展示了 "if-else语句 "的工作原理。

if-else语句的工作原理与if语句相似,它们之间唯一的区别是,在 "if语句 "中,当条件为假时,if语句的主体被跳过,而在if-else语句中,如果if语句为假,它将执行 "else "的语句。而如果if语句的条件为真,它将跳过else语句。请考虑以下使用if-else语句的代码。
int a=3;
void setup(){
Serial.begin(9600);
if (a==4)
Serial.println("The if statement executed");
else
Serial.println("The else statement executed");
}
void loop(){
}

输出将是

现在,将变量 "a "的值从3改为4。
int a=4;
void setup(){
Serial.begin(9600);
if (a==4)
Serial.println("The if statement executed");
else
Serial.println("The else statement executed");
}
void loop(){
}

输出结果将是:

解释:在上述代码中,我们只是写了两条打印语句;一条在if语句的正文中,另一条在else语句的正文中。在第一段代码中,if语句的条件是假的,所以执行了else部分,而在第二段代码中,if语句是真的,所以写在if语句中的语句被执行,而不是else语句,输出结果以9600的波特率打印在串行输出显示器上。
切换大小写的语句:在Arduino的控制语句中,有一个是switch-case语句,通过它我们可以控制程序的流程。在switch-case语句中,声明了不同的情况,如果其中任何一个情况为真,其主体就会被执行,编译器就会中断并走出switch-case主体。
如果没有任何情况为真,那么默认的主体将被执行。例如,我们有两个LED的状态,要么是打开,要么是关闭,所以我们要做两个 "on "和 "off "的案例。如果LED灯是亮的,case 1将执行并显示LED灯是亮的,如果它们处于关闭状态,case 2将执行并显示LED灯是关闭的。如果这两种情况都不对,比如LED没有连接,它将显示默认部分,其中将显示 "无效状态"。switch-case语句的流程图是。

上面的流程图阐明了switch-case语句的工作原理。现在,请考虑以下代码。
int a=1;
void setup(){
Serial.begin(9600);
switch (a) {
case 1:
Serial.println("Case 1 executed");
break;
case 2:
Serial.println("Case 2 executed");
break;
default:
Serial.println("Default is executed");
}
}
void loop(){
}

输出结果是

将变量a的值从1改为2:
int a=2;
void setup(){
Serial.begin(9600);
switch (a) {
case 1:
Serial.println("Case 1 executed");
break;
case 2:
Serial.println("Case 2 executed");
break;
default:
Serial.println("Default is executed");
}
}
void loop(){
}

输出结果是

现在,给变量 "a "分配1和2以外的值。
int a=10;
void setup(){
Serial.begin(9600);
switch (a) {
case 1:
Serial.println("Case 1 executed");
break;
case 2:
Serial.println("Case 2 executed");
break;
default:
Serial.println("Default is executed");
}
}
void loop(){
}


输出结果将是

解释:如果变量 "a "的值为 "1",案例1将被执行,并打印 "案例1已执行";如果变量 "a "的值为 "2",案例2将被执行,并打印 "案例2已执行";如果 "a "中存储了除1和2以外的任何值,案例将被跳过,默认值将被执行,打印 "默认已执行"。
条件运算符:另一种控制语句是 "条件运算符",它使用三元符号"?"并根据条件决定哪一部分应该被执行。例如,如果电机处于运行状态,它将打开绿色LED,如果电机处于停止状态,它将打开黄色LED。条件语句的工作流程图将是。

如果条件值1为真,它将跳过值2;如果条件值1为假,它将跳过值1而执行值2。为了更好地理解条件语句的用法,在Arduino IDE中输入代码。
void setup(){
Serial.begin(9600);
int a=100, b=60, max;
max=(a>b)? a : b;
Serial.print(“The maximum number is: ”);
Serial.print(result);
}
void loop(){
}

输出结果是

解释:上面的代码用于显示最大数字。两个数字被存储在新声明的变量中,a和b。通过使用条件运算符,我们将 "a "的值与 "b "的值进行比较。如果 "a "的值大于 "b",它将把 "a "的值存储在变量 "max "中并显示在串行输出显示器上。否则,它将使用9600波特率的串行通信来打印 "b "的值。
结论
控制语句用于以一种有组织的方式执行Arduino的代码。它将根据某些条件来控制语句的执行。在这篇文章中,Arduino的控制语句在例子的帮助下被解释。控制语句的工作是在流程图的帮助下演示的。