我正在处理我的最终项目,而且我很喜欢这段代码。我尝试了很多次,但每次都给我错误的结果。 我的问题是:如果有任何有Arduino代码经验的人可以解释这段代码中的每一行。
#define SERIESRESISTOR 560
// What pin to connect the sensor to
#define NUMSAMPLES 15
int samples[NUMSAMPLES];
#define SENSORPIN A0
#define FLAP 1
#define FUDGE 0.3
void setup(void) {
Serial.begin(9600);
analogReference(EXTERNAL);
}
void loop(void) {
uint8_t i;
float average;
float waterlevel;
float lastwaterlevel=0;
// take N samples in a row, with a slight delay
for (i=0; i< NUMSAMPLES; i++) {
samples[i] = analogRead(SENSORPIN);
delay(10);
}
// average all the samples out
average = 0;
for (i=0; i< NUMSAMPLES; i++) {
average += samples[i];
}
average /= NUMSAMPLES;
//Serial.print("Average analog reading ");
//Serial.println(average);
// convert the value to resistance
average = 1023 / average - 1;
average = SERIESRESISTOR / average;
//Serial.print("Sensor resistance ");
//Serial.println(average);
waterlevel = 0;
waterlevel= -1 * 0.006958 * average + 11.506958+ FUDGE;
if (lastwaterlevel<(waterlevel-FLAP)||lastwaterlevel>(waterlevel+FLAP))
{
Serial.print("Water level (inches) ");
Serial.println(waterlevel);
}
delay(1000);
lastwaterlevel=waterlevel;
}
提前谢谢!
答案 0 :(得分:1)
我正在努力解决部分代码问题:#define FLAP 1 #define FUDGE 0.3这是什么意思?
您可以查看C预处理器的工作原理。在这个例子中解释:
在编译之前,您的代码将经历预处理阶段。除此之外,它还进行了文本替换。例如:
T*100 + W*10 + O*1 #= 2*_
预处理器会遍历您的代码并将#define FLAP 1
的每个实例替换为FLAP
。
1
预处理器会遍历您的代码并将#define FUDGE 0.3
的每个实例替换为FUDGE
。
等等其他定义。
要理解代码,只需在心理上自己做替换。
例如:
0.3
现在这一行:
#define NUMSAMPLES 15
有效地成为:
for (i=0; i< NUMSAMPLES; i++) {