我正在开展我的大学项目,需要检测来自温度传感器的最大值。我想连续显示它,只有当下一个值高于前一个值时,值才会改变,否则它应该保持最后一个最大值。
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);
始终显示与传感器值相同的峰值。 这段代码不起作用请告诉我这有什么问题。 感谢
答案 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.