这个例程显示了打开串口监视器,发送字母 a b c d e来点亮对应的LED的效果
/* Switch statement with serial input */ void setup() { Serial.begin(9600); // 初始化串口通讯 for (int thisPin = 2; thisPin < 7; thisPin++) { pinMode(thisPin, OUTPUT); // LED引脚: } } void loop() { if (Serial.available() > 0) { // 读取串口: int inByte = Serial.read(); //基于接收到的字符来作出不同的反应 switch (inByte) { // 使用单引号来得到字符的ascii值,例如 'a' = 97, 'b' = 98,等等: 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: for (int thisPin = 2; thisPin < 7; thisPin++) { // 熄灭所有LED: digitalWrite(thisPin, LOW); } } } }
这个例子我们使用了一个新函数:switch / case语句
和 if 语句相同,switch…case通过程序员设定的在不同条件下执行的代码控制程序的流程。特别地,switch语句将变量值和case语句中设定的值进行比较。当一个case语句中的设定值与变量值相同时,这条case语句将被执行。
关键字break可用于退出switch语句,通常每条case语句都以break结尾。如果没有break语句,switch语句将会一直执行接下来的语句(一直向下)直到遇见一个break,或者直到switch语句结尾。