我正在尝试学习如何评估值是增加还是减少。在这种情况下,我使用的电位计是从0到14映射的。基本上,我需要它查看当前值,如果当前值正在增加,则打印一件事,如果值正在减少,则打印另一件事。

到目前为止,这是我所拥有的,我知道这不是正确的,但它是一个开始。

有什么想法吗?

谢谢你。

void setup() {
  Serial.begin(9600);
}


void loop() {

  int val = analogRead(A0);  // read the input on analog pin 0:
  val = map(val, 0, 1023, 0, 14); // map the vlaues to new values
  Serial.println(val); // print those values
  delay(1); // delay by a second.

  // sudo code

  if (val++) {

    Serial.println("up");

  } else if (val--){

    Serial.print("down");

  }else{

    // do nothing
  }
}// end loop

最佳答案

变量声明

int val = analogRead(A0);  // read the input on analog pin 0:

当您一次可以在外部声明变量时,建议您不要在loop()函数中声明变量:

// declaration here!
int val = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {

  // just set the value
  val = analogRead(A0);  // read the input on analog pin 0:
  val = map(val, 0, 1023, 0, 14); // map the vlaues to new values

      ...

增加/减少支票

在C++中,即使在条件语句中也可以进行赋值。 if (val++)if (val--)将无法满足您的期望。 if语句检查val是否为false或0,然后++将其增加1。与val--相同,但减少-1。

您可以做的是将先前的值保留在另一个变量(例如prev)中,以便以后进行比较,如下所示:

// declaration here!
int val = 0;
int prev;

    ...

void loop() {

    // keep the previous value
    prev = val;

    // just set the value
    val = analogRead(A0);  // read the input on analog pin 0:

    ...

    // compare the previous value
    if (val > prev) {
        Serial.println("up");
    } else if (val < prev) {
        Serial.println("down");
    }

    // and no need to leave empty an `else` block

}

关于arduino - 评估值是增加还是减少(arduino),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19989903/

10-11 18:22