我正在尝试学习如何评估值是增加还是减少。在这种情况下,我使用的电位计是从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/