我在一个Arduino项目上,在该项目中,我不断测量气压并使用Adafruit_BMP085库从第一次测量开始计算相对高度。

我显示当前值和峰值。它基本上可以工作,但是当当前高度超过10m时,它将停止更新峰值。

Sketch看起来像这样:

#include <Adafruit_BMP085.h>

String currentAltitude;
String peakAltitude;
int32_t groundpressure;

Adafruit_BMP085 bmp;

void setup() {
    groundpressure = bmp.readPressure();
}

void loop() {
    currentAltitude = bmp.readAltitude(groundpressure);
    if (currentAltitude > peakAltitude) {
        peakAltitude = currentAltitude;
    }
    Serial.println("Current: " + currentAltitude + "m");
    Serial.println("Peak: " + peakAltitude + "m");
    delay(10);
}


我得到的(当我升高传感器/或增加气压时)如下所示:

Current: 0m
Peak: 0m

Current: 4m
Peak: 4m

Current: 11m
Peak: 4m (still)


为什么它停止比较。是由于我比较的变量类型造成的吗?

最佳答案

是的,这是因为您对>类型使用了重载的String运算符,该运算符可能执行的是字典比较而不是数值比较。

在执行算术运算之前,将字符串数据转换为数字。

08-06 03:36