## **If条件判断**
**条件判断结构**是编程中的最基本结构,在Arduino和其他语言中往往用**if()**语句实现条件判断。**if()**让你能够根据某个**条件**(**Condition**)的真假执行不同的代码。(条件只有两种可能,要么是**真**(**true**)要么是**假**(**false**))if语句的最简单形式如下:
~~~
if (someCondition) {
// someCondition为 真 的时候处理这个花括号里的语句
}
~~~
If语句的完整形式如下:
~~~
if (someCondition) {
// someCondition为 真 的时候处理这个花括号里的语句
} else {
// someCondition为 假 的时候处理这个花括号里的语句
}
~~~
还可以使用**if-else**嵌套多个if条件语句。使用**if-else**就可以在只有第一个条件为false(假)时才继续检查其他条件,如果第一个为true(真)就不检查了:
~~~
if (someCondition) {
// someCondition是 真 的时候处理这个花括号里的语句
} else if (anotherCondition) {
// someCondition是 假,并且anotherCondition是 真 的时候处理这个花括号里的语句
}
~~~
你可以随时随地使用if语句。下面的代码将在A0口模拟信号值大于临界值的时候点亮LED。本例使用大多数Arduino板上的板载LED(内部连接到13引脚)。
### **所需硬件**
* Arduino板或Genuino板
* 电位器或者可变电阻
* 连接线
* 电路连接
![图片来自官网](http://img.blog.csdn.net/20160525130827677)
### **原理图**
![图片来自官网](http://img.blog.csdn.net/20160525130840841)
### **代码**
在下列代码中,**analogValue **变量用来存储电位器的模拟信号值(电位器在A0口)。analogValue的值将与临界值(用**threshold**变量存储)进行比较。如果大于临界值就将13号引脚上的板载LED打开,如果小于临界值就将它关闭。
~~~
/*
If条件判断
本例展示if()语句的使用。代码将读取电位器的值,如果超过临界值就把LED打开,否则就将LED关闭。程序会把电位器的值输出到电脑。
电路搭建:
* 电位器中间引脚连接到A0。两侧的引脚分别连接到+5V和GND。
* LED连接13号引脚到GND
* 提示: 在大多数Arduino板上有13号引脚连接的板载LED,因此你一般不许要多加LED。
代码公开。
*/
// 常量定义:
const int analogPin = A0; // 电位器引脚
const int ledPin = 13; // LED引脚
const int threshold = 400; // 模拟信号临界值
void setup() {
// 初始化LED引脚为输出模式:
pinMode(ledPin, OUTPUT);
// 初始化串口通信:
Serial.begin(9600);
}
void loop() {
// 读取电位器值:
int analogValue = analogRead(analogPin);
// 模拟信号值是否超过临界:
if (analogValue > threshold) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
// 打印模拟信号值:
Serial.println(analogValue);
delay(1); // 为了稳定性,延迟1毫秒
}
~~~
### **相关资料**
[if()](https://www.arduino.cc/en/Reference/If)
[if…else](https://www.arduino.cc/en/Reference/Else)
[analogRead()](https://www.arduino.cc/en/Reference/AnalogRead)
[digitalWrite()](https://www.arduino.cc/en/Reference/DigitalWrite)
[serial.begin()](https://www.arduino.cc/en/Serial/Begin)
[serial.print()](https://www.arduino.cc/en/Serial/Print)
[原文链接](http://www.arduino.cc/en/Tutorial/IfStatement)
- 说明
- 系统示例文件目录结构及说明
- 01.Basics
- AnalogReadSerial
- BareMinimum
- Blink
- DigitalReadSerial
- Fade
- ReadAnalogVoltage
- 02.Digital
- BlinkWithoutDelay
- Button
- Debounce
- DigitalInputPullup
- StateChangeDetection
- toneKeyboard
- toneMelody
- toneMultiple
- tonePitchFollower
- 03.Analog
- AnalogInOutSerial
- AnalogInput
- AnalogWriteMega
- Calibration
- Fading
- Smoothing
- 04.Communication
- ASCIITable
- Dimmer
- Graph
- Midi
- MultiSerial
- PhysicalPixel
- ReadASCIIString
- SerialCallResponse
- SerialCallResponseASCII
- SerialEvent
- SerialPassthrough
- VirtualColorMixer
- 05.Control
- Arrays
- ForLoopIteration
- IfStatementConditional
- switchCase
- switchCase2
- WhileStatementConditional
- 06.Sensors
- ADXL3xx
- Knock
- Memsic2125
- Ping
- 07.Display
- barGraph
- RowColumnScanning
- 08.Strings
- CharacterAnalysis
- StringAdditionOperator
- StringAppendOperator
- StringCaseChanges
- StringCharacters
- StringComparisonOperators
- StringConstructors
- StringIndexOf
- StringLength
- StringLengthTrim
- StringReplace
- StringStartsWithEndsWith
- StringSubstring
- StringToInt
- 09.USB
- Keyboard
- KeyboardLogout
- KeyboardMessage
- KeyboardReprogram
- KeyboardSerial
- KeyboardAndMouseControl
- Mouse
- ButtonMouseControl
- JoystickMouseControl
- 10.StarterKit_BasicKit (与特定硬件相关,暂无)
- p02_SpaceshipInterface
- p03_LoveOMeter
- p04_ColorMixingLamp
- p05_ServoMoodIndicator
- p06_LightTheremin
- p07_Keyboard
- p08_DigitalHourglass
- p09_MotorizedPinwheel
- p10_Zoetrope
- p11_CrystalBall
- p12_KnockLock
- p13_TouchSensorLamp
- p14_TweakTheArduinoLogo
- p15_HackingButtons
- 11.ArduinoISP(暂无)
- ArduinoISP