您的位置:首页 > 产品设计 > UI/UE

【Arduino官方教程第一辑】示例程序 5-4 Switch和Case条件语句

2016-05-27 09:18 3883 查看

Switch和Case条件语句

If语句允许你根据条件的真假(真(TRUE)假(FALSE))进行两个分支操作。当需要进行多个判断时,你就必须使用If嵌套。不过其实还有一种更为简洁的处理多条件判断的方法,那就是使用switch语句,switch语句允许你一次对多种情况进行区分。本例向你展示如何使用switch语句来一次根据光敏电阻的四种不同状态(全黑,较暗,中等,较亮)进行不同的处理。

程序首先读取光敏电阻的模拟信号值。然后它使用map()函数来将模拟值映射到四个数字:0,1,2,3。最终,一个switch()语句将会根据映射后的数字输出不同的信息到电脑。

完成本例所需的硬件设备

Arduino或Genuino板

光敏电阻 或 其他输出模拟信号的传感器

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毫秒
}


相关资料

serial.begin()

analogRead()

map()

Serial.println()

数组: 通过for循环来展示如何使用数组。

For循环迭代(霹雳游侠): 用for循环控制多个LED。

If条件判断:使用If语句根据输入的条件的变化改变输出条件。

Switch和Case条件语句: 如何从一堆不连续的数字中找到需要的数字。

Switch和Case条件语句2: 第二个switch-case例子,展示了如何根据串口的输入值来采取不同的动作。

While循环: 如何使用while循环来在按钮被按下时校准传感器。

原文链接

更新进程

日期日志译者
2016年5月27日创建并翻译文档唐家勋

译者:唐家勋

邮箱:mrsteventang@gmail.com

QQ:649196486

转载请注明出处,一切只因为热爱。

希望您能指出宝贵意见,谢谢。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  arduino switch