多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## **Switch和Case条件语句2** If语句允许你根据条件的真假(真(TRUE)或假(FALSE))进行两个分支操作。当需要进行多个判断时,你就必须使用If嵌套。不过其实还有一种更为简洁的处理多条件判断的方法,那就是使用switch语句,switch语句允许你一次对多种情况进行区分。本例向你展示如何使用switch语句来根据串口收到的命令打开、关闭指定的LED。命令是一系列字符:a、b、c、d、e,分别对应5个LED。 ### **所需硬件** * Arduino或Genuino板 * 5个LED * 5个220Ω电阻 * 跳线 * 面包板 * 连接线 ### **电路** ![图片来自官网](http://img.blog.csdn.net/20160531125408452)  5个LED分别串接一个220Ω电阻并且分别连接到**2**、**3**、**4**、**5**、**6**引脚。板子应该与电脑,并且确保Arduino 串口监视器已经打开。你可以发送**a**、**b**、**c**、**d**、**e**来点亮指定LED,发送其他任意字符关闭所有LED。 ### **原理图** ![图片来自官网](http://img.blog.csdn.net/20160531125353280) ### **代码** ~~~ /* 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); } } } } ~~~ ### **相关资料** [serial.begin()](https://www.arduino.cc/en/Serial/Begin)  [serial.read()](https://www.arduino.cc/en/Serial/Read)  [serial.available()](https://www.arduino.cc/en/Serial/Available)  [switch() case](https://www.arduino.cc/en/Reference/SwitchCase)  [digitalWrite()](https://www.arduino.cc/en/Reference/DigitalWrite)  [原文连接](http://www.arduino.cc/en/Tutorial/SwitchCase2)