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

If语句允许你根据条件的真假(真(TRUE)或假(FALSE))进行两个分支操作。当需要进行多个判断时,你就必须使用If嵌套。不过其实还有一种更为简洁的处理多条件判断的方法,那就是使用switch语句,switch语句允许你一次对多种情况进行区分。本例向你展示如何使用switch语句来一次根据光敏电阻的四种不同状态(全黑,较暗,中等,较亮)进行不同的处理。
程序首先读取光敏电阻的模拟信号值。然后它使用map()函数来将模拟值映射到四个数字:0,1,2,3。最终,一个switch()语句将会根据映射后的数字输出不同的信息到电脑。

硬件需求
Arduino板
光敏电阻 或 其他输出模拟信号的传感器
10kΩ电阻
跳线
面包板
连接线

电路

光敏电阻通过一个分压电路连接到A0口(使用10kΩ电阻进行分压)。在这个电路中,analogRead()函数在室内一般会返回0-600的数字。

原理图

代码

/*
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毫秒
} 
0
分享到:

评论0

请先

原Arduino365.com域名更改为品牌域名ultirobot.com,承载内容要将更丰富,网站也进行了改版,改善阅读体验。
没有账号? 忘记密码?