说明
就像if语句,switch…case允许Arduino根据不同的条件运行不同的的程序代码。switch语句通过对一个变量的值与case语句中指定的值进行比较。当一个case语句中的指定值与switch语句中的变量相匹配。就会运行这个case语句下的代码。
通过break关键字,Arduino可以中止并跳出switch语句段,break关键字常常用于每个case语句的最后面。如果没有break语句,switch语句将继续执行下面的表达式(“持续下降”)直到遇到break,或者是到达switch语句的末尾。
Arduino编程语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况。
结构
1 2 3 4 5 6 7 8 9 10 11 12 |
switch (var) { case 1: //当var等于1时执行这里的程序 break; case 2: //当var等于2时执行这里的程序 break; default: // 如果var的值与以上case中的值都不匹配 // 则执行这里的程序 break; } |
需要注意的几点内容:
1) 在以上结构示例代码中,当变量var
和某个case
后面的数值匹配成功后,如果没有break
, Arduino会执行该分支以及后面所有分支的语句。
2) case
后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。
3) case
后面不能使用字符串,但可以使用字符,使用字符时需要用单引号把字符括起来,如: case: 'b'
。
4) default
不是必须的。当没有 default
时,如果所有 case
都匹配失败,那么就什么都不执行。
switch…case语句示例
通过本示例程序,用户可使用Arduino IDE的串口监视器向Arduino 发送字符(a, b, c, d, e点亮相应的LED,其他字符熄灭所有LED),此程序旨在演示如何使用switch…case语句对Arduino控制器进行编程。
所需硬件
– Arduino Uno控制器
– 5个LED
– 5个220 欧姆电阻
– 连接线
– 面包版
连接说明(如下图)
程序代码 (可双击程序内容全选代码)
注:本示例程序涉及串行通讯的相关知识,如有需要请点击这里进入我站串行通讯页面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
/* switch...case语句示例程序 v1.0 Created 2016 by 太极创客 www.taichi-maker.com 说明: 本示例程序后,用户可使用Arduino IDE的串口监视器 向Arduino 发送字符(a, b, c, d,或者e)Arduino 根据用户输入的字符,点亮相应的LED。此程序旨在演示 如何使用switch...case语句对Arduino控制器进行编程。 This example code is in the public domain. */ void setup() { Serial.begin(9600); // 初始化串口通讯 for (int thisPin = 2; thisPin < 7; thisPin++) {// 初始化Arduino连接LED的引脚 pinMode(thisPin, OUTPUT); } } void loop() { if (Serial.available() > 0) { int inByte = Serial.read(); // Arduino用switch语句,根据接收到的不同信息进行相应的反应。 switch (inByte) { case 'a': digitalWrite(2, HIGH); 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: for (int thisPin = 2; thisPin < 7; thisPin++) { digitalWrite(thisPin, LOW); } break; } } } |
程序说明
Arduino运行以上程序后,用户可以通过串口监视器向Arduino输入字符。该输入信息将赋值给变量inByte。
例如,用户输入字符a,Arduino将执行case ‘a’后面的语句,点亮连接在引脚2上面的LED。再比如,用户输入字符b,Arduino将执行case ‘b’后面的语句,点亮连接在引脚3上面的LED。以此类推…
如果用户的输入字符是a,b,c,d e以外的字符,Arduino将执行default:后面的语句,将所有LED熄灭。
相关阅读: if…else, Serial/串行通讯