控制部分-Switch和Case条件语句2

If语句允许你根据条件的真假(真(TRUE)或假(FALSE))进行两个分支操作。当需要进行多个判断时,你就必须使用If嵌套。不过其实还有一种更为简洁的处理多条件判断的方法,那就是使用switch语句,switch语句允许你一次对多种情况进行区分。本例向你展示如何使用switch语句来根据串口收到的命令打开、关闭指定的LED。命令是一系列字符:a、b、c、d、e,分别对应5个LED。

硬件需求
Arduino板
5个LED
5个220Ω电阻
跳线
面包板
连接线

电路

5个LED分别串接一个220Ω电阻并且分别连接到2、3、4、5、6引脚。板子应该与电脑,并且确保Arduino 串口监视器已经打开。你可以发送a、b、c、d、e来点亮指定LED,发送其他任意字符关闭所有LED。

原理图

代码

 /*
Switch和Case条件语句2

展示switch语句的使用,switch语句让你能够一次对变量的多个可能值进行分支处理,这和使用一系列if语句嵌套的功效相同。但使用switch将使代码更加简洁。

为了看到效果,请打开串口监视器。发送a b c d e中的任意一个字符可以打开指定LED。发送其他字符关闭所有LED。

电路搭建:
* 5个LED串接220Ω电阻连接到2-6引脚

代码公开
*/

void setup() {
// 初始化串口通信:
Serial.begin(9600);
// 初始化LED引脚:
for (int thisPin = 2; thisPin < 7; thisPin++) {
pinMode(thisPin, OUTPUT);
}
}

void loop() {
// 读取传感器:
if (Serial.available() > 0) {
int inByte = Serial.read();
// 根据收到的字符进行不同处理:
// case后应紧跟符合的条件(某个字符)
// 下面代码使用了单引号来告诉单片机:给我ASCII值,比如
// 'a' = 97, 'b' = 98 以此类推

switch (inByte) {
case 'a':
digitalWrite(2, HIGH);
//译者注:这个break很重要。如果不加,那么程序就会在执行这个case之后一路执行下去。例如:如果这里不加break而inByte又是‘a’,则b也会被执行。由于b后面有break,所以switch case就结束了。如果b也没有。那么程序就会 a->b->c 以此类推。所以一般case最后都要有break。读者可以全部不加break,然后在每一个case中输出调试信息来亲身体会。
break;
case 'b':
digitalWrite(3, HIGH);
break;
case 'c':
digitalWrite(4, HIGH);
break;
case 'd':
digitalWrite(5, HIGH);
break;
case 'e':
digitalWrite(6, HIGH);
break;
default:
// 将所有LED关闭:
//如果所有的case都没有匹配上,default后面就会被执行
for (int thisPin = 2; thisPin < 7; thisPin++) {
digitalWrite(thisPin, LOW);
}
}
}
} 
0
分享到:

评论0

请先

本站资料配套硬件销售店铺:天猫店ultirobot.tmall.com 、三冠淘宝店zhongbest.taobao.com
没有账号? 忘记密码?