为什么我们在 Arduino 中有两个 if 语句?

why do we have two if statements in arduino?

本文关键字:两个 if 语句 我们 Arduino 为什么      更新时间:2023-10-16

在下面的代码中,在这种情况下,我们不在"if"语句之后使用"else"语句吗?

// These constants won't change
cont int sensorPin = A0;
const int ledPin = 9;
// Variables
int sensorValue = 0;
int sensorMin = 1023;
int sensorMax = 0;
void setup() {
// Turn on LED to signal the start of the calibration period
pinMode(13, OUTPUT):
digitalWrite(13, HIGH);
while(millis() < 5000) {
sensorValue = analogRead(sensorPin);
if(sensorValue > sensorMax) {
sensorMax = sensorValue;
}
if(sensorValue < sensorMin) {
sensorMin = sensorValue; 
} 
}
digitalWrite(13, LOW);
}

为什么 arduino 示例会出现 2 个"如果"?请帮助我理解!

谢谢

嗯,在这个代码中很容易理解。让我们考虑一下:

我们以前从未读取过传感器,所以 max 和 min 都是未初始化的(例如,std::numeric_limits::min(( 和 max(((。

传感器读取一次。

在这里,我们需要填写两个值,而不是其中一个,因为目前它确实满足不变量。添加"else"会打破这种逻辑。

附言另外,欢迎来到StackOverflow。请阅读本网站的规则,下次尝试编写符合这些规则的问题。

这是运行最小值和最大值计算的标准算法,无需存储值。

int minimum;
int maximum;
std::cin >> minimum;
maximum = minimum;
for (int i = 0; i < 4999; ++i)
{
int value;
std::cin >> value;
if (value > maximum) maximum = value;
if (value < minimum) minimum = value;
}

发布的代码是查找给定持续时间内传感器的最小值和最大值(同样,不必存储这些值(。

请记住,传感器正在进行"真实"测量,并不理想。 实际测量值并不精确,可能会波动。