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

【Arduino官方教程第一辑】示例程序 5-6 While循环

2016-06-02 12:54 671 查看

While循环

有时你可能需要进行这样的操作:如果某个条件为true的话就一直停在那里,直到它由true变成false才继续执行(反过来也可以,开始为false,直到true才继续)。你可以使用while循环来做到这一点。本例向你展示如何使用while循环来校准模拟信号传感器。

loop中,我们读取A0口的值,来给9号引脚上的LED调光。 但是当2号引脚上的按键被按下时,程序就会去执行calibrate() 函数(函数名意思叫 校准,这是自己定义的函数)。calibrate()会寻找模拟信号的最大、最小值。当你松开按键时,loop()中的其他代码才会继续被执行。

本例所展示的技巧能够让你在环境光线发生明显改变时进行人工校准。

完成本例所需的硬件设备

Arduino板或Genuino板

按键或开关

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

2个10kΩ电阻

面包板

连接线

电路连接



连接模拟信号传感器(例如:光敏电阻) 到A2口,并且加一个10kΩ下拉电阻。连接按键到数字引脚,并且加一个10kΩ下拉电阻。LED和220Ω电阻串接后连接到9号引脚。

原理图



例程代码

/*
While循环

本例向你展示while()的使用。

当按键被按下时,工程将会启动开始校准。
while循环中获得的传感器数据讲被取最大、最小值,然后对光敏电阻进行校准。

这是校准模拟信号的另一个例子,之前也介绍过一种方法,不过这次重在演示while循环的使用。

电路搭建:
* 光敏电阻连接+5V 和A0口
* 10kΩ电阻连接GND和A0口
* LED与220Ω电阻串联,并接到9号引脚
* 按键连接到A2口和+5V
* 10KΩ电阻连接到A2口到GND

代码公开。
*/

// 常亮定义:
const int sensorPin = A2;       // 传感器引脚
const int ledPin = 9;           // LED引脚
const int indicatorLedPin = 13; // 板载LED引脚
const int buttonPin = 2;        // 按键引脚

// 变量:
int sensorMin = 1023;  // 传感器最小值
int sensorMax = 0;     // 传感器最大值
int sensorValue = 0;         // 传感器值

void setup() {
// 将indicatorLedPin设置为OUTPUT模式:
pinMode(indicatorLedPin, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}

void loop() {
// 当按键被按下时进行校准:
while (digitalRead(buttonPin) == HIGH) {
calibrate();
}
// 关闭LED,标志校准结束
digitalWrite(indicatorLedPin, LOW);

// 读取传感器值:
sensorValue = analogRead(sensorPin);

// 运用最大、最小值来校准传感器值
sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);

// 放置sensorValue超过上下限(正常最小0,最大255)
sensorValue = constrain(sensorValue, 0, 255);

// 使用sensorValue给LED调光:
analogWrite(ledPin, sensorValue);
}

void calibrate() {
// 将LED打开,标示校准过程的开始:
digitalWrite(indicatorLedPin, HIGH);
// 读取传感器值:
sensorValue = analogRead(sensorPin);

// 记录最大值
if (sensorValue > sensorMax) {
sensorMax = sensorValue;
}

// 记录最小值
if (sensorValue < sensorMin) {
sensorMin = sensorValue;
}
}


相关资料

while()

digitalRead()

digitalWrite()

analogRead()

analogWrite()

map()

constrain()

if()

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

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

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

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

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

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

原文链接

更新进程

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

译者:唐家勋

邮箱:mrsteventang@gmail.com

QQ:649196486

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

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

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