保持传感器值的峰值

时间:2016-10-15 07:32:08

标签: c++ c

我正在开展我的大学项目,需要检测来自温度传感器的最大值。我想连续显示它,只有当下一个值高于前一个值时,值才会改变,否则它应该保持最后一个最大值。

int value=0, peak=0,check=0;
value=adcread(0); //reading value from sensor
check=value;  //copying sensor value to a variable
if(check>peak)  //checking if sensor value is greater than peak then update the peak
peak=check;
printf("%d",check);

始终显示与传感器值相同的峰值。 这段代码不起作用请告诉我这有什么问题。 感谢

2 个答案:

答案 0 :(得分:2)

这是因为peak是自动存储中的局部变量,其值始终初始化为零。这导致两个问题:

    如果传感器结果可能为负数,
  • peak将永远不会更新负值,
  • 每次通过函数时,
  • peak都会初始化为零。

要解决此问题,请按以下方式更改peak的声明:

static int peak = INT_MIN;

这会将peak从自动存储移动到静态存储,这意味着变量将在调用之间保留其值。

您需要包含<limits.h>才能进行编译。

答案 1 :(得分:0)

不得不说 STATIC INT PEAK; 是存储先前值的唯一答案。只需使用以下内容:

int value;
static int peak;
value = adcread(0);
if (value){
peak = value;printf(%d,peak);/// this will return the value of adcread everytime it updates
}
print(%d, peak);//once the temp-sensor is off the last value will be shown by it.