ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
## **Switch和Case条件语句** > **If语句**允许你根据条件的真假(**真(TRUE)**或**假(FALSE)**)进行两个分支操作。当需要进行多个判断时,你就必须使用**If嵌套**。不过其实还有一种更为简洁的处理多条件判断的方法,那就是使用**switch**语句,**switch**语句允许你一次对多种情况进行区分。本例向你展示如何使用switch语句来一次根据光敏电阻的四种不同状态(全黑,较暗,中等,较亮)进行不同的处理。 程序首先读取光敏电阻的模拟信号值。然后它使用**map()**函数来将模拟值映射到四个数字:0,1,2,3。最终,一个**switch()**语句将会根据映射后的数字输出不同的信息到电脑。 ### **所需硬件** * Arduino或Genuino板 * 光敏电阻 或 其他输出模拟信号的传感器 * 10kΩ电阻 * 跳线 * 面包板 * 连接线 ### **电路** ![图片来自官网](http://img.blog.csdn.net/20160527091409508)  光敏电阻通过一个分压电路连接到A0口(使用10kΩ电阻进行分压)。在这个电路中,**analogRead()**函数在室内一般会返回0-600的数字。 ### **原理图** ![图片来自官网](http://img.blog.csdn.net/20160527091420165) ### **代码** ~~~ /* Switch和Case条件语句 展示switch语句的使用,switch语句让你能够一次对变量的多个可能值进行分支处理,这和使用一系列if语句嵌套的功效相同。但使用switch将使代码更加简洁。 为了更好的看到效果,请在有良好照明的房间进行实验。实验过程中你只需要打开串口监视器,并且逐渐将你的手移到串口监视器上方。 电路搭建: * 连接模拟信号传感器到A0口和+5V接口 * 连接10KΩ电阻到A0口和GND接口 代码公开。 */ // 常量,定义了传感器的最大、最小值: const int sensorMin = 0; // 最小值 const int sensorMax = 600; // 最大值 void setup() { // 初始化串口通信: Serial.begin(9600); } void loop() { // 读取传感器: int sensorReading = analogRead(A0); // 将传感器值映射到0-3: int range = map(sensorReading, sensorMin, sensorMax, 0, 3); // 根据映射后的值进行不同处理: switch (range) { case 0: //0表示手应该在正上方 输出全黑 Serial.println("全黑"); break; case 1: // 0表示手遮挡了部分光 输出较暗 Serial.println("较暗"); break; case 2: // 2表示手遮挡了小部分光 输出中等 Serial.println("中等"); break; case 3: // 3手未挡光 输出较亮 Serial.println("bright"); break; } delay(1); // 为串口稳定性延迟1毫秒 } ~~~ ### **相关资料** [serial.begin()](https://www.arduino.cc/en/Serial/Begin)  [analogRead()](https://www.arduino.cc/en/Reference/AnalogRead)  [map()](https://www.arduino.cc/en/Reference/Map)  [Serial.println()](https://www.arduino.cc/en/Serial/Print)  [原文链接](https://www.arduino.cc/en/Tutorial/SwitchCase)