【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
转载请注明出处,一切只因为热爱。
希望您能指出宝贵意见,谢谢。
相关文章推荐
- android 传感器(OnSensorChanged)使用介绍
- Android重力传感器实现滚动的弹球
- 基于Arduino+LabVIEW的多路数据采集系统
- 基于Arduino+LabVIEW的串口控制LED亮灭
- 基于Protues的Arduino学习笔记01-Arduino UNO实验板设计
- 《Arduino与LabVIEW开发实战》-前言
- Arduino(一)
- nrf24l01+arduino
- 为什么三星手机一直坚持使用塑料外壳?
- iOS中传感器的基本使用
- [极客]硬件极客最爱:支持WiFi的Arduino板到来
- Arduino、arm、树莓派、单片机四者有什么不同?
- Zabbix 使用IPMI监控服务器硬件各项传感器。
- 微软研究院为智能手机研发独特触控技术
- Android的常用传感器开发教程案例
- (一) 驱动模块搭建与测试
- (二) 2WD智能小车搭建完成
- HEP-DH车载一氧化碳报警器
- 深安旭,中国气体传感器领先品牌